C++ Vector简介:
1. 标准库中的顺序容器(使用头文件#include<vector>):
a) 可变大小数组
b) 支持快速随机访问,在尾部之外的位置插入删除元素操作较慢(保存在连续的内存空间中)
Tip:除非你有很好的理由选择其他容器,否则应该使用vector(from 《C++ Primer》)
2. 定义和初始化
vector<T> v1; //默认构造函数
vector<T>v2(v1); //拷贝构造函数
vector<T>v3(10) //构造v3大小10,元素为空
vector<T>v4(10,x) //构造v4大小10,元素为x
3. 基本用法&成员函数
bool empty() const; // 如果为容器为空,返回true;否则返回false
size_type size() const; // 返回容器中元素个数
size_type capacity() const; // 容器能够存储的元素个数,capacity() >= size()
事实上,容器中实际使用的元素个数,重新分配内存大小。而capacity表示在当前size下,为容器分配的所申请的内存大小。
栈操作:
void push_back(const T & x); //向容器末尾添加一个元素
void pop_back(); //弹出容器中最后一个元素(容器非空)
迭代器:
vector<T>::iterator it;
begin与end成员:
分别生成指向容器中第一个元素之前和最后一个元素之后位置的迭代器(常用于遍历容器),例如:
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it;
}
//插入
iterator insert(iterator it,const T &x= T());
//例如
vector<int> v(2);
v[0]=1;
v[2]=2;
v.insert(v.begin(),3);//在当前迭代器最前面插入元素3
v.insert(v.begin()+1,4);//此时以新的迭代器为基准插入元素(元素3,1之间)
//遍历结果 3412
//删除操作
// 删除第六个元素,索引值为5
myvector.erase (myvector.begin()+5);
// 删除索引为[0,3)的元素,即前三个元素
myvector.erase (myvector.begin(),myvector.begin()+3);
获取容器中特殊值得引用:
reference front() //获取容器中第一个元素的引用
reference back() //获取容器中最后一个元素的引用
//例如:
int a = v.front();
a=0; //未修改容器中第一个元素的值
int &b=v.back();
b= 6; //修改了原容器中最后一个元素的值
参考:
https://software.intel.com/zh-cn/blogs/2011/08/10/c-vector
《C++ primer》(第五版)http://www.cplusplus.com/