vector向量容器
-
特点:
- 可以进行元素随机访问。
- 可以再尾部添加元素。
- 内存自动管理。
- 下标从零开始。
- 头文件:#include<vector>
- 方法:
- push_back():尾部扩张元素。
- insert():在某个元素前插入新元素。
- begin():返回首元素位置的迭代器。
- end():返回最后一个元素的下一元素位置的迭代器。
- 创建vector对象:
- 不指定大小:vector<int>V;
- 指定大小:vector<double>v(10);
- 指定大小和初始值:vector<double>v(10,8.6);
- 尾部元素扩张:
#include<vector>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v;
v.push_back(2);
v.push_back(7);
v.push_back(9);
return 0;
}
- 下表方式访问
#include<vector>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v(3);
v[0]=2;
v[1]=7;
v[2]=9;
cout<<v[0]<<" "<<v[1]<<" "<<v[2]<<endl;
return 0;
}
- 迭代器方式访问
#include<vector>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v(3);
v[0]=2;
v[1]=7;
v[2]=9;
//定义迭代器变量
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
- 元素的插入
#include<vector>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v(3);
v[0]=2;
v[1]=7;
v[2]=9;
//在最前面插入新元素
v.insert(v.begin(),8);
//在第二个元素前面插入元素
v.insert(v.begin()+2,1);
//在最后追加3
v.insert(v.end(),3);
//定义迭代器变量
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
- 元素的删除
#include<vector>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v(10);
for(int i=0;i<10;i++)
{
v[i]=i;
}
v.erase(v.begin()+2);
//定义迭代器变量
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//删除迭代器第一到第五区间的所有元素
v.erase(v.begin()+1,v.begin()+5);
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//清空向量
v.clear();
cout<<v.size()<<endl;
return 0;
}
- 使用reverse反向排列算法,头文件:include<algorithm>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v(10);
for(int i=0;i<10;i++)
{
v[i]=i;
}
reverse(v.begin(),v.end());
vector<int>::iterator it;
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
- 使用sort算法对元素排序
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int argc,char * argv[])
{
vector<int> v;
for(int i=0;i<10;i++)
{
v.push_back(9-i);
}
vector<int>::iterator it;
//排序前输出
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
//排序(默认升序)
sort(v.begin(),v.end());
for(it=v.begin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
- 向量的大小
- size()返回元素个数
- empty()返回向量是否为空