vector运算起来是不是很慢啊?

特别是在他的后面加数据push_back()真的好慢啊vector在末尾加数据的运算原理是怎么样的我是要大量的写入数据写入了之后又要大量的读出而且要求时间尽可能的快那用什... 特别是在他的后面加数据 push_back()

真的好慢啊

vector在末尾加数据的运算原理是怎么样的
我是要大量的写入数据

写入了之后又要大量的读出

而且要求时间尽可能的快

那用什么最好
展开
 我来答
匿名用户
推荐于2016-12-01
展开全部
STL序列容器vector, deque, list使用箴言:

1.只添加或删除序列尾部的元素时,vector的效率是很高的。可以在vector的开头和中间插入元素,但其效率相当低。因为要移动插入点以后的所有元素并在自由存储区分配一个新内存区域。从开头和中间删除元素也比较慢,因为也要移动元素。
2.在序列容器的中间添加和删除元素应该使用list容器。实际上,使用list容器可以在序列的任意位置高效的插入元素而无需移动已有元素,删除list中的元素也比较快。list容器的主要限制是随机访问元素比较慢,因为这需要遍历整个list,所以一般STL的sort()算法不能用于list,因为它需要一个提供随机访问元素功能的迭代器。
3.创建给定大小的deque对象的方式与vector容器相同(与vetcor一样,在deque序列的中间可以添加和删除元素。但也比较慢,因为总是要复制已有的元素)。deque优于vector容器的地方是可以在序列开头和末尾高效的添加或删除对象,因此在需要这些功能时用选择这种类型的容器。

所以你可以试试deque的尾插法。
百度网友ab786d796
2009-06-25
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
如果不是频繁的从中间删除元素的话,vector的性能还是不错的。
要大量删除元素请改用list。

当然,这些容器为了通用性与易用性,性能比你自己写个堆栈或链表是有所低的。但一般、甚至大多数需求都可以满足的。

不知道你做什么用途呢?

参考资料: 经验

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友45ae221
2009-06-25 · 超过26用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:67.5万
展开全部
和用数组实现的链表一样,预先分配一个空间,然后存储,如若不够就要重新分配空间,赋值原空间的值,然后再插入。
vector中reserve()函数很重要是性能保证的前提。
C++ STL 提供了3个序列容器 :vector, deque, list
vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道元素的最大值,最好用reserve()函数初始最大空间,避免重新分配空间造成的时间。
deque 几乎所有的操作都和vector一样,出了可以在头添加和删除,多了个push_front(), pop_front();
list 是双链表,元素在内存中是分散的不连续的,它使用指针left,right,指向前一个元素和后一个元素。所以要删除和添加只要动动指针,所以很快,但是因为是不连续的所以要访问一个元素,你只能遍历序列。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式