vector基本概念
- 与普通数组的区别:数组为静态空间,vector可以动态扩展。
- 扩展方式:找到更大的空间,将原数据拷贝到新空间,再将原空间释放。
- vector的迭代器支持随机访问。
构造函数
vector<int> v1;
- vector((v.begin(), v.end()); //将前闭后开区间中元素拷贝给本身
vector<int>v2(v1.begin(), v1.end());
- vector(n, elem); //构造函数将n个elem拷贝给本身
vector<int>v3(10,100);
- vector(const vector &vec); //拷贝构造函数
vector<int>v4(v3);
赋值
- vector& operator=(const vector &vec); //重载等号操作符
vector <int>v2;
v2=v1;
- assign(beg,end); //将区间中数据拷贝赋值给本身
vector <int>v3;
v3.assign(v1.begin(),v1.end());
- assign(n, elem); //将n个elem拷贝赋值给本身
vector <int>v4;
v4.assign(10, 100);
容量和大小
- empty() //判断容器是否为空,返回值为true和false
- capacity(); //容器的容量
- size(); //返回容器中元素的个数
- resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。若变短,则超出容器长度的元素被删除。
- resize(int num, elem); //重新指定容器的长度为num,若容器变长,则以elem填充。若变短则删除超出容器的元素。
插入和删除
- push_back(ele); //尾部插入
- pop_back(); //删除最后一个元素
- insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
v1.insert(v1.begin(),100);
- insert(const_iterator pos, int count, ele);//迭代器向pos位插入count个元素ele
v1.insert(v1.begin(),10,100);
- erase(const_iterator pos); //删除迭代器指向的元素
- erase(const_iterator start, const_iterator end); //删除迭代器中从start到end的元素
- clear(); //删除容器中所有元素
数据存取
- at(int idx); //返回索引idx所指的数据
- operator[]; //返回索引idx所指的数据
- front(); //返回容器中第一个数据元素
- back(); //返回容器中最后一个数据元素
互换容器
- swap(vec); //将vec与本身的元素互换
v1.swap(v2);
vector<int>(v).swap(v);
预留空间
- 减少vector在动态扩展容量时的扩展次数
- reserve(int len); //容器预留len个元素长度,预留位置不初始化,元素不可访问。