C++容器问题。。。简单的问题

 我来答
精金框架妊奥9
2010-11-29 · TA获得超过341个赞
知道小有建树答主
回答量:269
采纳率:98%
帮助的人:57.5万
展开全部
我下面的回答只针对C/C++语言。

“有种感觉容器等于链表,迭送器等于指针,”
-------这是错误的理解,链表在数据结构中指的是线性表的一种,它的每一个结点占据的内存位置在物理上可以相邻,也可以不相邻,显然他们在逻辑上是相邻的。它最少拥有两个域:数据域,指针域。常见的有单链表,双端链表,循环链表。容器是用来装别的对象的东西,例如数组也可以看作是一个容器。
迭代器不等于指针,在C语言中没有迭代器这个概念,迭代器是C++中引进的,是对C中指针的扩充。我们一般叫迭代器为智能指针,迭代器本质上是一个C++的类或者结构体,它只是重载了operator *、operato->。所以可以像指针一样的使用。

链表是一种线性的数据结构,有一种最简单的数据结构顺序线性表,数组就是一种常见的顺序线性表,他们在内存中的物理地址是连续的。在C/C++中可以用指针把一系列物理上不连续的地址链接起来构成逻辑上的连续,这就是链表。
在C++的STL中提供了一个叫做list<>的容器,它是一个双端链表,支持高效率的删除和插入操作。

“我想问的重点是 是不是学了容器就可以不用学链表的?”
---这个嘛,上面提到的list<>就是一种容器,而在STL中还有许多的其他容器。
我们在学习数据结构的时候老师不准我们使用STL的东西,我们要用一个链表,就得自己去写List类。但是在真正的项目中有谁会重写呢?直接STL就行了,当然如果对性能有特殊的要求的除外。链表是一种基本的数据结构,我想这是每一个用C++写程序的人应该知道的,弄清它的原理是没有坏处的。
至于你说的vector<>他一个单向容器,也就是说在STL中规定它只能在尾部插入和删除数据,但是可以高效的查找,耗时线性时间,直接给下标就行了。
而list<>支持高效的删除和插入操作,但是查找效率极低,因为他每次得从头开始查找。

希望回答没有跑题,呵呵!
你的串号我已经记下,采纳后我会帮你制作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式