Web开发者向桌面应用开发转型之数据结构学习

谨以此篇文章献给我的网友海天一线还有就是为今天的组合数学考试祈祷:

海天一线是一个从asp开发转向C++的朋友,并不断奋斗,希望实现个人价值--进入一所全国最牛的研究生院!有志气!!

任何应用程序其实就是对于数据的操作,完成商业逻辑。操作的方法无异于添加、修改、更新、删除、查找、访问等。而操作的过程中需要对数据进行存储,抑或为了加快速度,可能对数据进行二次存储(缓存)。对数据进行存储就设计到数据结构的概念,可以说就是设计一个存储数据的容器,容纳数据且支持对数据的操作。针对不同的需求,数据结构的设计也不同,比如装石头,我们可以用篮子,而装水就不可以。任何一本数据结构的书大概讲的差不多,无论是何种语言,只要支持数据结构的设计都可以实现书本中讲到的结构:数组、列表、栈、队列、树、图、哈西表等。每一种结构都是对显示世界中模型的一种抽象,比如数组可以表示向量、或者集合模型,列表和数组类似,只不过各有优缺点,它删除、插入速度快,而不支持随即访问,树一般是搜索用。开始听海天一线说不明白数据结构怎么用,我觉得很奇怪,细细思考才发现问题。在Web开发中,数据一般都在数据库中,所以对数据的操作都是在数据库里面实现了,而应用开发中很少需要自己关心,所以转向桌面应用开发(具体到C++)就不明白数据结构了,其实就相当于数据库里面的操作。

当然,数据结构各种语言基本都实现了并各自有扩展,我们学习数据结构,学习的抽象问题的思想,而不是会使用数据结构,或者会设计一个具体的容器。STL(SGI公司开发)里面有vector、list、deque、set、map等,且据说这个可以移植,MFC有CArray、CMap、CList等,在Java里面也有Array、HashTable至少(因为我了解很少),Boost里面也有全部实现。所以真正开发中,我们可以根据语言和实际选择已有的实现,除非已有的容器无法满足需求,我们可以对已有容器封装来设计或者完全自己实现。一般新建一个基于控制台的项目设计数据结构,并加入数据检验正确性,当正确后在加入到项目中使用。

建议看一下别人设计的数据结构源码,最好是公认的或者流行的,有模板知识的可以看下STL的实现,对于模板有很强的认识且C++语法掌握很好的建议看看Boost,说句实话,我自己不行,只看了2个结构,一个Any,一个Array,别的没有继续看下去,太难!!

具体到学习数据结构里面的小问题,建议看书,本文只是本人对数据结构的一个浅薄认识,如果学习中遇到问题,可以提出来,尽本人最大努力提供帮助。


希望高手提出建设性意见!!但是拒绝人身攻击!!!
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页