您的位置:首页 > 产品设计 > UI/UE

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

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

当调用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().
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++