STL 中的容器们

容器插入删除查看
dequepush_front(头插)
push_back(尾插)
pop_back
pop_front
back
front
vectorpush_backpop_backback
front
queuepushpopback
front
stackpushpoptop

queue/stack

STL 提供的两个容器 queue (队列)和 stack(栈),其实都只不过是一种配接器(adapter),也即它们修饰 deque (双端队列)的接口而成就出另一种容器风貌。

deque vs vector

  • vector 是单向开口的连续线性空间,

    • coll.push_back()
    • coll.pop_back()
  • deque 是双向开口的连续线性空间(所谓)

    • coll.push_back()/coll.push_front()
    • coll.pop_back()/coll.pop_front()
  • vector 当然也可在头尾两端进行操作,头部效率奇差,每在头部插入一个元素都会涉及元素的移动

    std::vector<int> v;
    for (int i = 0; i < 5; ++i)
        v.insert(v.begin(), 5-i);

deque 和 vector 的最大差异,

  • deque 允许于常数时间内对起头端进行元素的插入和删除操作,vector 在头部的操作性能奇差
  • deque 没有所谓的容量(capacity)观念,因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来

vector 内存不足时:

  • 重新配置一块更大的空间
  • 复制元素
  • 释放旧空间

这样的事情在 deque 将不会发生,也因此,deque 没有必要提供所谓的空间保留功能;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值