c++中数组一旦声明,空间大小是无法改变的,而vector是可以动态扩展的,内部也是维护了一个数组,但它并不是在原有的空间后面接新空间,而是找一块更大的内存,并把原数据拷贝过来,释放原空间.
#include <vector> using namespace std;
vector也成为单端数组,可以当成一个数组来使用
//vector<T> v; //才用模板实现类实现,默认构造函数 //vector(v.begin(), v.end()); //将v begin(),end()区间的元素 拷贝给本身 //vector(n, elem); //构造函数将n个elem拷贝给本身 //vector(const vector &vec); //拷贝构造函数
vector<int>v1;//默认构造函数,无参构造 vector<int>v2(v1.begin(), v1.end());// 用v1的迭代器 开始到结束的数据 初始化给v2 vector<int>v3(10, 100); //用10个100 初始化 vector容器 vector<int>v4(v3); //拷贝构造
//容器声明 vector<int> varr; //定义一个int类型的 vector容器 //设置预留空间(减少动态扩展的次数) v1.reserve(10000);//预留10000个元素长度,预留位置不初始化,元素不可访问 //插入和删除 v1.empty();//判断容器是否为空 v1.capacity();//容器的容量 v1.size();//返回容器中元素的个数 v1.resize(100); // 重新定义容器长度为100, 如果是变长,则以默认值填充新位置,如果是变短,则末尾超出长度的元素将被删除 v1.resize(100, 2); // 重新定义容器长度为100, 如果是变长,则以参数二的值填充新位置,如果是变短,则末尾超出长度的元素将被删除 v1.push_back(100); //尾部插入元素 v1.pop_back(); //删除最后一个元素 v1.clear(); //删除容器中的所有元素 v1.insert(v1.begin(),100);//在v1开始的位置 插入一个100 原型:v1.insert(const_iterator pos, ele);//迭代器指向位置pos插入元素els v1.insert(v1.begin(), 5,100);//在v1开始的位置,插入5个100 原型://v1.insert(const_iterator pos,int count, ele)//跌倒器指向位置pos,插入count个ele v1.erase(v1.begin());//删除成员_迭代器指向的 原型://v1.erase(const_iterator pos) //删除迭代器指向的元素 //读取数据 v1.at(3);//返回3位置的数据 v1.front();//返回容器中的第一个元素 v1.back();//返回容器中最后一个元素 v1[3];// 像数组一样 用下标读取 //变量交换 v1.swap(v2); //使用v2和v1内容互换