一、什么是Vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
二、容器特性
1、顺序序列
顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。
2、动态数组
支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删除元素的操作。
3、能够感知内存分配器的(Allocator-aware)
容器使用一个内存分配器对象来动态地处理它的存储需求。
三、基本函数实现
1、构造函数
- vector();//创建一个空的vector
- vector(int n);//创建一个元素个数为n的vector
- vector(int n, const T& t);//创建一个元素个数为n的vector,其中的元素均被初始化为T类型的t对象
- vector(const vector&);//复制构造函数
- vector(begin, end);//复制[begin,end)区间内另一个数组的元素到vector中
- int a[5] = { 0, 1, 2, 3, 4 }; vector<int> v4(a, *(&a + 1));//将数组中的元素复制过来
2、增加函数
void push_back(const T& t);//向量尾部增加一个元素t
iterator insert(iterator it, const T& x);//向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it, int n, const T& x);//向量中迭代器指向元素前增加n个相同的元素
iterator insert(iterator it,const_iterator first,const_iterator last);//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
3、删除函数
iterator erase(iterator it);//删除向量中迭代器指向元素
iterator erase(iterator first,iterator last);//删除向量中[first,last)中元素
void pop_back();//删除向量中最后一个元素
void clear();//清空向量中所有元素
4、遍历函数
reference at(int pos);//返回pos位置元素的引用
reference front();//返回首元素的引用
reference back();//返回尾元素的引用
iterator begin();//返回向量头指针,指向第一个元素
iterator end();//返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_iterator rbegin();//反向迭代器,指向最后一个元素
reverse_iterator rend();//反向迭代器,指向第一个元素之前的位置
5、判断函数
bool empty() const;//判断向量是否为空,若为空,则向量中无元素
6、大小函数
int size() const;//返回向量中元素的个数
int capacity() const;//返回当前向量张红所能容纳的最大元素值
int max_size() const;//返回最大可允许的vector元素数量值