各位高手,您知vector和list有什么区别吗?

lbj18 2004-01-14 11:12:34
您知vector和list有什么区别吗?
还有堆和栈的应用上有那些主要的区别?
...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjGang 2004-01-25
  • 打赏
  • 举报
回复
说老实话能用list的地方。。Vector差不多的可以用。。。
特别是用iterator去access。..
根本看不出又什么区别。。
lbj18 2004-01-15
  • 打赏
  • 举报
回复
多谢了!
知道了区别编程就好实现了
sharkhuang 2004-01-15
  • 打赏
  • 举报
回复
看STL
Wolf0403 2004-01-14
  • 打赏
  • 举报
回复
唉,奈,抢我生意啊^_^
abitz 2004-01-14
  • 打赏
  • 举报
回复
1。vector分配连续的内存空间,list不是。
因此vector提供索引访问,在分摊的常数时间内访问元素;
list不提供索引访问,O(n)时间访问元素。
在vector中插入和删除元素需要O(n)时间;
在list中插入和删除元素需要常数时间;
因此如果你不经常修改容器,需要快速访问,可以使用vector;
反之如果你需要经常修改容器内容,则应使用list。

2。栈:作为数据结构的概念指先进后出的线性结构。
在程序设计中,指保存函数活动记录的结构,自动变量在栈中分配。
堆:作为数据结构的概念较复杂,可以看看数据结构教材。
在程序设计中,指动态内存管理用到的空间。
zhaochong12 2004-01-14
  • 打赏
  • 举报
回复
区别不大, 就一个是线性表一个是线性数组~

堆是分配, 栈是次序~
bdknight 2004-01-14
  • 打赏
  • 举报
回复
vector在动态增长时还是有些优化了,例如事先分配了多余的空间,同时
分配的多余空间还会随着动态增长的次数增加而增加,所以性能损失不是
很大
wingfiring 2004-01-14
  • 打赏
  • 举报
回复
>vector是用连续空间存放的,可以随机存取,但是动态增大空间性能较差。
这个说法不准确。vector的插入性能很差,但是push_back的性能并不差。
从复杂度上来说,是分期摊还的常数时间。就使用上来看,在vc和bcc中,vector的性能要好很多。
如果要详细了解,还可以参考<<effect stl>>和《泛型编程和STL》这两本书。
shuneng 2004-01-14
  • 打赏
  • 举报
回复
vector是用连续空间存放的,可以随机存取,但是动态增大空间性能较差。
list是用链表实现的,即每一个无素有一个指向下一个元素的指针,不过不能够随机存取,需要遍历,但是动态空间增减性能较好。
zhaochong12 2004-01-14
  • 打赏
  • 举报
回复
我倒, 看错了!
更正
:
vector和list
一个是数组, 一个是链表...-_-#....我倒~
kulaza 2004-01-14
  • 打赏
  • 举报
回复
mark

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧