您的位置:首页 > 编程语言 > C语言/C++

C++ stl vector

2015-10-24 17:45 471 查看
vector是一个序列容器,代表可变大小的array数组。1、构造函数和析构函数构造函数:
默认构造函数default (1)
explicit vector (const allocator_type& alloc = allocator_type());创建一个空vector对象,无任何元素
fill (2)
explicit vector (size_type n);构造含n个元素的容器
vector (size_type n, const value_type& val,  const allocator_type& alloc = allocator_type());构造含n个元素的容
器,每个元素值为val。
range (3)
template <class InputIterator>
vector (InputIterator first, InputIterator last,  const allocator_type& alloc = allocator_type());利用另一个容器的
[first,last)之间的元素构造一个新容器。
复制构造函数copy (4)
vector (const vector& x);复制容器x中的元素创建一个新容器
vector (const vector& x, const allocator_type& alloc);
move (5)
vector (vector&& x);移动容器x中的元素到新容器中。之后,x容器的值处于不确定状态。
vector (vector&& x, const allocator_type& alloc);
初始列表initializer list (6)
vector (initializer_list<value_type> il,   const allocator_type& alloc = allocator_type());利用初始化列表il来构造
容器vector
析构函数
~vector();
赋值运算符
copy (1)
vector& operator= (const vector& x);拷贝容器x中的元素到新容器中
move (2)
vector& operator= (vector&& x);移动容器x中的元素到新容器中
initializer list (3)
vector& operator= (initializer_list<value_type> il);将初始化列表赋给新容器。
2、迭代器函数非const修饰的迭代器。begin()返回指向容器第一个元素的迭代器
iterator begin() noexcept;
const_iterator begin() const noexcept;
end()返回指向容器最后一个元素的下一个位置的迭代器
iterator end() noexcept;
const_iterator end() const noexcept;
rbegin()返回一个反向迭代器,指向容器的最后一个元素
reverse_iterator rbegin() noexcept;const_reverse_iterator rbegin() const noexcept;
rend()返回一个反向迭代器,指向容器的第一个元素的前面一个位置
reverse_iterator rend() noexcept;const_reverse_iterator rend() const noexcept;
const修饰的迭代器,c++11新增的。cbegin()返回一个指向容器第一个元素的const迭代器
const_iterator cbegin() const noexcept;
cend()返回一个指向容器的最后一个元素下一个位置的const迭代器。
const_iterator cend() const noexcept;
crbegin()返回一个反向const迭代器,指向容器的最后一个元素
const_reverse_iterator crbegin() const noexcept;
crend()返回一个反向const迭代器,指向容器的第一个元素的前面的一个位置。
const_reverse_iterator crend() const noexcept;
3、容量相关函数size()返回vector中元素的个数
size_type size() const noexcept;
max_size()返回vector中所能包含的元素的最大个数
size_type max_size() const noexcept;
resize()重置容器vector的大小。若n小于当前容器的元素个数,则将容器截断为n个元素,保留前n个元素,删除后面的元素。若n大于当前容器的元素个数,则将接着当前容器后面扩空元素,使其元素个数达到n,若指定value,则将扩充的元素指定为value,否则,新元素是未初始化的。若n大于4000capacity时,会重新分配存储区。
void resize (size_type n);void resize (size_type n, const value_type& val);
capacity()返回分配的内存容量大小,通常等于或大于容器的size。不一定是max_size。当需要更多容量时,可继续分配。
size_type capacity() const noexcept;
empty()判断容器是否为空
bool empty() const noexcept;
reserve()预留n个元素大小空间。使得容器的capacity足够容纳n个元素。当n大于capacity时,会引起容器重新分配内存,增加capacity到n,或者更大。其他情况下,不会重新分配内存,也不会影响capacity。此函数对容器的size和元素没有任何影响。
void reserve (size_type n);
shrink_to_fit() //C++11新增使容器减小capacity使其适合其size。可能会引起内存重新分配,但不影响容器的size,并且也不改变元素值。
void shrink_to_fit();
4、元素访问operator[]返回下标为n的元素的索引
reference operator[] (size_type n);const_reference operator[] (size_type n) const;
at[]返回reference at (size_type n);
const_reference at (size_type n) const;
front()返回容器第一个元素的引用。该函数作用于一个空容器时,会导致未定义的行为。
reference front();const_reference front() const;
back()返回容器最后一个元素的引用
reference back();const_reference back() const;
data()c++11新增返回一个指向内存区域的指针
value_type* data() noexcept;const value_type* data() const noexcept;
5、修改元素函数assign()重置容器vector中的元素内容,并根据情况改变容器的size。
range (1)
template <class InputIterator>void assign (InputIterator first, InputIterator last);利用first到last范围的元素重置容器
fill (2)
void assign (size_type n, const value_type& val);利用val重置容器中n个元素
initializer list (3)
void assign (initializer_list<value_type> il);利用初始化列表重置容器
push_back()用val值作为新元素的值添加到容器的尾部,同时改变容器的大小
void push_back (const value_type& val);void push_back (value_type&& val);
pop_back()删除容器的最后一个元素,同时减小容器的size。
void pop_back();
insert()在指定的位置n之前插入一个新元素,值为val,同时改变元素的大小
single element (1)
iterator insert (const_iterator position, const value_type& val);在position处插入元素值val
fill (2)
iterator insert (const_iterator position, size_type n, const value_type& val);在position之前插入n个值为val的元素
range (3)
template <class InputIterator>iterator insert (const_iterator position, InputIterator first, InputIterator last);在position之前插入迭代器first到last
之间的元素值
move (4)
iterator insert (const_iterator position, value_type&& val);将val值移动到position之前
initializer list (5)
iterator insert (const_iterator position, initializer_list<value_type> il);将初始化列表插入到position处。
erase()删除容器的中的某个元素,或是某个范围内的元素。同时改变容器的大小。
iterator erase (const_iterator position);iterator erase (const_iterator first, const_iterator last);
swap()交换两个容器的内容
void swap (vector& x);
clear()删除容器中所有元素,并将容器大小置为0。
void clear() noexcept;
emplace()//c++11新增
template <class... Args>iterator emplace (const_iterator position, Args&&... args);
emplace_back()//c++11新增
template <class... Args>void emplace_back (Args&&... args);
6、其他get_allocator()返回vector相关的allocator对象的拷贝。
allocator_type get_allocator() const noexcept;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stl__vector