首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++容器选择有关问题

2013-12-19 
C++容器选择问题在线性表中,(指链表和数组)如果不需要对容器进行随机访问,但是需要在容器中间插入或删除元

C++容器选择问题
在线性表中,(指链表和数组)如果不需要对容器进行随机访问,但是需要在容器中间插入或删除元素,就应当选择链表作为容器。
以上是严蔚敏的数据结构书上所说的。
但是如果我用数组来作为容器的话,不是也可以吗?
既然链表的插入删除操作必须经过遍历链表,和 用数组插入删除的移位过程 所用的时间不是差不多吗?(时间复杂度都是 O(n))并没有体现出链表在插入删除上的优势啊?
这个问题困扰我好久了,去年上数据结构就很疑惑,请教多人都讲不清楚,最近上STL又想到了这个问题。
[解决办法]
首先不选数组是因为它的大小是固定的,不灵活
还有你说的时间复杂度问题,链表的插入删除操作只需要查找到插入或删除的位置就行,
然而数组在插入或删除元素后需要移动元素,这两者的时间是不能相提并论的,因为链表的查找操作是很快的
然而数组的移动操作却不然,移动一个元素所耗费的时间比链表指向下一个结点耗费的时间多多了
[解决办法]
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

热点排行