基本序列容器: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().
当调用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().
相关文章推荐
- 序列容器---vector,deque,list的区别
- STL提供了三个最基本的容器:vector,list,deque。
- STL中基本容器string,vector,list,deque之间的区别
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- STL提供了三个最基本的容器:vector,list,deque
- STL概览-序列容器vector,deque,list
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++ STL基本容器string,vector,list,deque,map..[转]
- 序列容器:vector,deque,list
- STL提供了三个最基本的容器:vector,list,deque。
- STL提供了三个最基本的容器:vector,list,deque
- STL有6种序列容器(vector, list, deque, queue, priority_deque, stack)
- STL提供了三个最基本的容器:vector,list,deque
- STL 基本容器 : string、vector、list、deque、set、map 的区别
- STL提供了三个最基本的容器:vector,list,deque
- STL提供了三个最基本的容器:vector,list,deque。
- STL1—顺序容器vector list deque的基本知识
- STL中基本容器string,vector,list,deque,set,map之间的区别
- STL的三个基本容器 vector list deque