vector

来源:互联网 发布:java编程大赛题目 编辑:程序博客网 时间:2024/06/05 16:30
1、定义
template < class T, class Alloc = allocator<T> > class vector;
2、描述
vector是一个序列式容器,一般用它替代数组。同数组一样,vector用于存储多个元素;但它比数组更方便,因为其size可以改变。使用vector时不用担心越界问题,它的容量可根据元素数量自动调节。
3、容器属性
sequence(有序性)。
dynamic array(动态数组)。
allocator-aware:vector 使用一个分配器动态高效地处理存储需求。
4、模板参数
T : 元素类型。在vector内被重命名为vector::value_type。
    当reallocate时,若T是 is guaranteed to not throw while moving,则用move 代替 copy 来移动元素,(move比copy高效)。
alloc : 分配器。重命名为vector::allocator_type
5、成员type
value_type第一个模板参数(T) allocator_type第二个模板参数(Alloc)默认为allocator<value_type>referencevalue_type& const_referenceconst value_type& pointerallocator_traits<allocator_type>::pointer默认为allocator:vector_type*const_pointerallocator_traits<allocator_type>::const_pointer iterator  const_iterator  reverse_iteratorreverse_iterator<iterator> const_reverse_iteratorreverse_iterator<const_iterator> difference_typeiterator_traits<iterator>::difference_type通常与ptrdiff_t相同size_type非负整形通常与size_t相同
6、成员函数
consturctordefault (1)
explicit vector (const allocator_type& alloc = allocator_type());
fill (2)
explicit vector (size_type n);         vector (size_type n, const value_type& val,                 const allocator_type& alloc = allocator_type());
range (3)
template <class InputIterator>  vector (InputIterator first, InputIterator last,          const allocator_type& alloc = allocator_type());
copy (4)
vector (const vector& x);vector (const vector& x, const allocator_type& alloc);
move (5)
vector (vector&& x);vector (vector&& x, const allocator_type& alloc);
initializer list (6)
vector (initializer_list<value_type> il,       const allocator_type& alloc = allocator_type());

desturctor析构vector时,会对包含的每个元素调用allocator_traits::destory。并且回收内存。operator=copy (1)
vector& operator= (const vector& x);
move (2)
vector& operator= (vector&& x);
initializer list (3)
vector& operator= (initializer_list<value_type> il);


迭代器相关函数
begin end rbegin rend cbegin   (c++11) cend      (c++11) crbegin (c++11) crend    (c++11) 
容量,元素个数相关函数
size max_size resize capacity empty reserve shrink_to_fit   (c++11) 
访问元素相关函数
operator[] at front back data    (c++11) 修改容器
assign push_back pop_back insert earse swap clear emplace            (c++11) emplace_back  (c++11) 
获取分配器
get_alloctor
非成员函数
关系运算符(先比较元素个数,在逐个比较元素)(1)
template <class T, class Alloc>  bool operator== (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);
(2)
template <class T, class Alloc>  bool operator!= (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);
(3)
template <class T, class Alloc>  bool operator<  (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);
(4)
template <class T, class Alloc>  bool operator<= (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);
(5)
template <class T, class Alloc>  bool operator>  (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);(6)template <class T, class Alloc>  bool operator>= (const vector<T,Alloc>& lhs, const vector<T,Alloc>& rhs);

swap 
模板特化
vector<bool>
	
				
		
原创粉丝点击