vector
vector 容器,是一个动态数组,让容量不足时,会删除原有数组,开辟新空间。
class vector
{
private:
T* start_;
T* finish_; 已使用空间的最后地址
T* end_; 动态分配内存块的最后地址
}
http://t.csdnimg.cn/62981
构造函数
vector();
explicit vector(const size_t n); 防止类构造函数的隐式自动转换
vector(const vector<T> & v); 拷贝构造函数
vector(const size_t n, const T& value); 创建个数为n个,值为value
vector(Iterator first, Iterator last); 使用迭代器创建vector容器
vector(vector<T> && V) ; 移动构造函数, C11标准
vector(initializer_list<T> il); 使用统一初始列表
特性操作
size_t max_size() const; 返回容器的最大长度,此函数意义不大 ,表示函数不可以修改类中的成员
size_t capacity() const; 返回容器的容器
size_t size() const; 返回容器的实际大小 (已使用的空间)
bool empty() const; 判断容器是否为空
void clear(); 清空容器
void reserve(size_t size); 将容器的容器 设置为至少size
void shrink_to_fit(); 将容器降到实际大小
void resize(size_t size) 设置实际大小
元素操作
vector<class T>v;
T & operator[](size_t n); 数组[]
const T & operator[](size_t n) const; 只读
T & at(size_t n);
const T &at(size_t n) const;
T * data(); 返回容器中动态数组的首地址
const T *data() const; 返回容器中动态数组的首地址 不可修改
T & front(); 第一个元素
T & back(); 最后一个元素
赋值操作
vector & operator=(const vector &v); 把容器v赋值给当前容器
vector & operator=(initializer_list <T> il); 用统一初始化列表对其赋值
void assign(initializer_list <T> il);
void assign(Iterator first, Iterator last); 使用迭代器进行赋值
交换操作
void swap(vector< T > & v) ; 如果数据量小,交换的是动态数组的内容,如果数据量大,交换的是动态数组的地址。
比较操作
bool operator==(const vector<T> &v) const;
bool operator!=(const vector<T> &v) const;
插入操作
void push_back(const T & value); 在容器的尾部追加一个元素
void emplace_back(...); 在容器的尾部追加一个元素,... 用于构造元素,可以直接构造
iterator insert(iterator pos, const T& value); 在指定位置插入一个元素,返回指向插入元素的迭代器
iterator emplace(iterator pos, const T& value); 在指定位置插入一个元素,返回指向插入元素的迭代器
iterator insert(iterator pos,size_t n , const T& value); 在指定位置插入n个数
iterator insert(iterator pos,iterator first, iterator last); 指定位置插入一个区间的元素
删除操作
void pop_back(); 从容器的尾部删除一个元素
iterator erase(iterator pos); 删除指定位置的元素,返回下一个有效的迭代器
iterator erase(iterator first, iterator last); 删除指定区间的元素,返回下一个有效的迭代器