- 简单地说,vector是数组的一种类表示,它提供了自动内存管理功能,可以动态的改变vector对象的长度,并随着元素的添加和删除儿女增大和缩小。它提供了对元素的随机访问。在尾部添加和删除元素的时是固定的,但在头部或中间插入和删除元素的复杂度为线性时间。
- 除序列外,vector还是可反转容器概念的模型。这增加了两个类方法,rbegin() 和 rend() 。前者返回一个指向反序列的第一个元素的迭代器,后者返回反转序列的超尾迭代器。
- 关于顺序容器的函数 请访问 STL——概述 中的 “ 顺序容器和关联容器中都有的成员函数” 及 “顺序容器的常用成员函数”。
-
vector 插入删除 示例
代码实现为:
#include<iostream>
#include<vector>
using namespace std;
template<class T>
void PrintVector(T s,T e)
{
for(;s!=e;++s)
cout << *s << " ";
cout << endl;
}
int main()
{
int a[5]={1,2,3,4,5};
vector<int>v(a,a+5); //将数组a的下标从0到4的元素进入到v中
cout << "1) " << v.end()-v.begin() << endl; //两个随机迭代器可以相减,输出 1)5
cout << "2) ";
PrintVector(v.begin(),v.end());
v.insert(v.begin()+2,13); //在位于begin()+2的位置上插入13
cout << "3) ";
PrintVector(v.begin(),v.end());
v.erase(v.begin()+2); //删除位于begin()+2的元素
cout << "4) ";
PrintVector(v.begin(),v.end());
vector<int>v2(4,100); //v2有4个元素,都是100
v2.insert(v2.begin(),v.begin()+1,v.begin()+3); //将v的一段插入v2开头
cout << "5) v2: ";
PrintVector(v2.begin(),v2.end());
v.erase(v.begin()+1,v.begin()+3); //删除v上的一个区间,即2,3
cout << "6) ";
PrintVector(v.begin(),v.end());
return 0;
}
运行结果:
代码实现:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<vector<int> >v(3); //v有3个元素,每个元素都是vector<int>容器
for(int i=0;i<v.size();++i)
{
for(int j=0;j<4;++j)
{
v[i].push_back(j);
}
}
for(int i=0;i<v.size();++i)
{
for(int j=0;j<v[i].size();++j)
{
cout << v[i][j] << " ";
}
cout << endl;
}
return 0;
}
运行结果为: