Vector
一、初始化 二、常用方法 1. 访问元素at()、下标、data()、front()、back() 2. push_back()、pop_back()尾部增删元素 3. insert()在pos前插入元素,返回插入位置 4. erase()擦除元素,返回擦除元素后的元素位置 5. clear()清空容器 6. resize()改变容器元素个数 7. swap()容器交换 8. 容量
std::vector
是封装动态数组的顺序容器。头文件#include <vector>
常见操作复杂度
在末尾插入或移除元素——均摊常数 O(1) 插入或移除元素——与到 vector 结尾的距离成线性 O(n)
一、初始化
vector< int > v1 ( ) ;
vector< int > v2 = { 1 , 2 , 3 , 4 , 5 } ;
vector< int > v3 ( 4 ) ;
vector< int > v4 ( 6 , 1 ) ;
vector< int > v5 ( v4) ;
vector< int > v6 ( v2. begin ( ) + 2 , arr4. end ( ) ) ;
assign函数给容器重新赋值,会清空容器内已有的元素
void assign ( size_type count, const T& value ) ;
template < class InputIt >
void assign ( InputIt first, InputIt last ) ;
void assign ( std:: initializer_list< T> ilist) ;
二、常用方法
1. 访问元素at()、下标、data()、front()、back()
reference at ( size_type pos ) ;
const_reference at ( size_type pos ) const ;
reference operator [ ] ( size_type pos ) ;
const_reference operator [ ] ( size_type pos ) const ;
T* data ( ) noexcept ;
const T* data ( ) const noexcept ;
reference front ( ) ;
const_reference front ( ) const ;
reference back ( ) ;
const_reference back ( ) const ;
2. push_back()、pop_back()尾部增删元素
void push_back ( const T& value ) ;
void push_back ( T&& value ) ;
void pop_back ( ) ;
3. insert()在pos前插入元素,返回插入位置
iterator insert ( const_iterator pos, const T& value ) ;
iterator insert ( const_iterator pos, T&& value ) ;
iterator insert ( const_iterator pos, size_type count, const T& value ) ;
iterator insert ( const_iterator pos, InputIt first, InputIt last ) ;
iterator insert ( const_iterator pos, std:: initializer_list< T> ilist ) ;
4. erase()擦除元素,返回擦除元素后的元素位置
iterator erase ( iterator pos ) ;
iterator erase ( const_iterator pos ) ;
iterator erase ( iterator first, iterator last ) ;
iterator erase ( const_iterator first, const_iterator last ) ;
5. clear()清空容器
void clear ( ) noexcept ;
6. resize()改变容器元素个数
容器超过count的元素会被删除,不足的用默认值或value填充
void resize ( size_type count ) ;
void resize ( size_type count, const value_type& value ) ;
7. swap()容器交换
将内容与 other
的交换。不在单个元素上调用任何移动、复制或交换操作。所有迭代器和引用保持合法。尾后迭代器被非法化。
void swap ( vector& other ) ;
8. 容量
bool empty ( ) const noexcept ;
size_type size ( ) const noexcept ;
size_type max_size ( ) const noexcept ;
size_type capacity ( ) const noexcept ;
void reserve ( size_type new_cap ) ;