STL-vector list deque 顺序存储结构要点

具体使用方法百度一堆,这里就讲讲一些要点。

都需要加上需加上using namespace std; 方可直接调用。

使用迭代器时,只有list 的迭代器不会轻易的失效,而vector、deque当插入时,迭代器很容易就失效。

vector

vector<int> vec;是一种顺序容器,一个能够存放任意类型的动态数组。
优点:随机存取[ ]和at(),动态操作push pop,自动调整内存。
缺点:插入删除效率低,当动态添加太大,需要拷贝和释放。
.begin() 0位的指针,也就是第一个元素的指针
.end() 最后一位的下一个指针,指向空的。
传参和返回值的之后,最好都是从参数里传进去引用,这样保证不出错,因为vector进行数组的增大时,会把原数据拷贝到另一个空间,所以有时指针会出错。
删除元素时并不会释放空闲的内存空间,可用vector<T>(s.begin(),s.end(),swap(s))利用s的内容创建一个临时对象,再与s交换,则s变为临时对象,完成后会被析构。
替换元素操作一般用vec[1]=9; 或者用迭代器*ite=9;
list
list<int> lst1;是stl实现的双向链表,允许快速的插入和删除,但是随机访问比较慢。只有list是非连续存储。
优点:内存不连续,插入删除效率高,可在两端进行插入。
缺点:不能随机访问
deque
deque<int> deq;是双开口的连续线性空间
优点:可随机访问,插入删除方便,可双端操作。内存分配优于vector,是vector和list的中间值。
缺点:占用内存多。

猜你喜欢

转载自blog.csdn.net/qq_23282479/article/details/80425478
今日推荐