基本概念:
数据结构与数组相似,也成为单端数组,可以动态扩展。vector的迭代器是支持随机访问的迭代器。
构造函数:
vector<T> v;
//采用模板实现类实现,默认构造函数
vector v(v.begin(),v.end()) ;
//将v.begin和v.end区间的数拷贝给本身
vector v(n,elem) ;
将n个elem拷贝给本身
vector v(const vector& vec) ;
拷贝构造
赋值操作:
vector& operator=(const vector& v);
void assign(v1.begin(),v1.end());
把[v1.begin(),v1.end())区间内的数拷贝赋值给v
void assign(n,elem);
把n个elem赋值给v
容量和大小:
bool empty();
//判断容器是否为空
int capacity();
//容器的容量
int size();
//饭回容器中元素的个数
void resize(int num);
//重新指定容器的长度为num
若容器变长则以默认值填充,若容器变短,则末尾超出容器长度的元素被删除
void resize(int num,int elem);
若容器变长则以elem值填充新位置
插入和删除:
void push_back(int ele);
void pop_back();
void insert(const_iterator pos,ele);
迭代器指向pos位置插入ele
void insert(const_iterator pos,int count,ele);
迭代器指向pos位置插入count个ele
void erase(const_iterator pos);
删除迭代器指向元素
void erase(const_iterator start,const_iterator end);
删除迭代器从[start,end)之间的元素
void clear();
清空容器
数据存取:
at(int idx);
返回索引idx所指的数据
operator[];
front();
返回容器中第一个元素
back();
返回容器中最后一个元素
容器互换:
void swap(vector& v)
互换容器中的元素
应用:收缩空间
vector<int> v;
for (int i = 0; i < 10000; i++)
{
v.push_back(i);
}
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
v.resize(3);
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
vector<int>(v).swap(v);
cout << "v的容量:" << v.capacity() << endl;
cout << "v的大小:" << v.size() << endl;
运行结果:
v的容量:12138
v的大小:10000
v的容量:12138
v的大小:3
v的容量:3
v的大小:3
vector<int>(v)
是一个匿名对象,该行执行结束后系统自动释放其内存
预留空间:
reserve(int len);
预留len个元素的空间,预留位置不初始化,元素不可访问
可节省重新开辟空间的次数,避免频繁开辟新空间