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的中间值。
缺点:占用内存多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值