vector运算起来是否很慢啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector运算起来是否很慢啊?相关的知识,希望对你有一定的参考价值。
参考技术A 和用数组实现的链表一样,预先分配一个空间,然后存储,如若不够就要重新分配空间,赋值原空间的值,然后再插入。vector中reserve()函数很重要是性能保证的前提。
C++
STL
提供了3个序列容器
:vector,
deque,
list
vector
中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道元素的最大值,最好用reserve()函数初始最大空间,避免重新分配空间造成的时间。
deque
几乎所有的操作都和vector一样,出了可以在头添加和删除,多了个push_front(),
pop_front();
list
是双链表,元素在内存中是分散的不连续的,它使用指针left,right,指向前一个元素和后一个元素。所以要删除和添加只要动动指针,所以很快,但是因为是不连续的所以要访问一个元素,你只能遍历序列。
以上是关于vector运算起来是否很慢啊?的主要内容,如果未能解决你的问题,请参考以下文章