基本序列容器:vector、list和deque

所有基本序列容器完全按照存进去的顺序持有对象。然而,对于不同的基本序列容器,他们的操作效率是不同的,因此如果想要操纵具有某种特点的序列,则应当针对不同的操作类型选择合适的容器。

当调用resize()扩展一个序列时,新的元素使用序列内元素类型的默认构造函数,若果它们是内置类型,则使用0作为初始值。调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。与之对应的reserve()则是容器预留空间,并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。(并不是所有序列容器都由reserve()成员函数,如list就没有)。

要用erase()清除序列中间的一个元素,使用一个迭代器;要用erase()清除序列中间的一组元素,使用一对迭代器。注意,因为仅支持双向迭代器,list中所有迭代器都只能通过增1或减1来进行移动(通过重载自增或自减操作符)。(如果容器为可以产生随机访问迭代器的vector或者deque,operator+和operator-可以使迭代器移动更大的距离。)

尽管list和deque支持push_front()和pop_front(),vector却不支持,但3者都支持push_back()和pop_back().

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值