C++ stl vector
2015-10-24 17:45
585 查看
vector是一个序列容器,代表可变大小的array数组。1、构造函数和析构函数构造函数:
析构函数
2、迭代器函数非const修饰的迭代器。begin()返回指向容器第一个元素的迭代器
push_back()用val值作为新元素的值添加到容器的尾部,同时改变容器的大小
erase()删除容器的中的某个元素,或是某个范围内的元素。同时改变容器的大小。
默认构造函数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);将初始化列表赋给新容器。 |
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);利用初始化列表重置容器 |
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处。 |
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;
相关文章推荐
- 计算1-1/2+...+1/99-1/100
- 输出一个整数的每一位
- C++ switch语句写菜单,输入字符串,如何只接收首个字符
- C++ STL中的vector
- C++ this指针详解
- 一张图看懂MingW GCC 5.2.0中的C++的的拷贝构造函数
- C#调用C++ dll的两种方法
- 声明和定义
- C语言 判断花括号是否成对出现
- c语言之栈存储区和堆区理解
- C++中const用法总结
- 004--C++11的初始化方式
- C++代码优化方法总结
- 字母大小写转化
- C语言 求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- 学籍管理系统 c++作业
- C语言整理-8
- C语言整理-7
- C++中几种将整数转换成二进制输出的方法
- C语言整理-6