C++的STL中的vector容器是数组的一个泛化推广,不仅可以随机访问元素,还可以较便捷的插入和删除元素。
使用时要用宏语句:
#include<vector>
一.几种创建vector的方式:
1.创建一个空的vector;
vector<int>v1;
2.指定长度的vector;
vector<int>v2(10);
3.指定长度并赋初始值;
vector<int>v3(10,1);
4.拷贝vector对象的元素值得到一个新的vector;
vector<int>v4(v3);
5.通过输入迭代器,拷贝左闭右开区间的元素值创建vector;
int a[]={1,2,3,4,5};
vector<int>v5(a,a+5);
二.尾部插入/删除元素:
vector<int>v;
用push_back在vector尾部插入元素;
v.push_back(1);
删除尾部元素;
v.pop_back();
三.迭代器(正向/反向)遍历:
迭代遍历:
cout<<"正向迭代vector:";
vector<int>::iterator i;
for(i=v.begin();i!=v.end();i++)
{
cout<<*i<<' ';
}
cout<<endl;
反向迭代遍历:
cout<<"反向迭代vector:";
vector<int>::reverse_iterator ri;
for(ri=v.rbegin();ri!=v.rend();ri++)
{
cout<<*ri<<' ';
}
cout<<endl;
四.vector容器中其他常用功能:
用下标访问元素;
cout<<"下标为1的元素为:"<<v[1]<<endl;
获取首元素:
cout<<"首元素:"<<v.front()<<endl;
获取尾元素:
cout<<"尾元素:"<<v.back()<<endl;
获取元素个数:
cout<<"元素个数:"<<v.size()<<endl;
在指定的pos处的元素前插入新元素:
v.insert(v.begin()+1,10);
在指定位置或指定区间删除元素;
v.erase(v.begin()+1);
清除所有元素:
v.clear();
判断是否是空vector;
if(v.empty())
{
cout<<"vector为空"<<endl;
}
五.测试代码:
#include<cstdio>
#include<vector>
#include<iostream>
using namespace std;
int main()
{
/*几种创建vector的方法:
创建一个空的vector;
vector<int>v1;
指定长度的vector;
vector<int>v2(10);
指定长度并赋初始值;
vector<int>v3(10,1);
拷贝vector对象的元素值得到一个新的vector;
vector<int>v4(v3);
通过输入迭代器,拷贝左闭右开区间的元素值创建vector;
int a[]={1,2,3,4,5};
vector<int>v5(a,a+5);
*/
//测试相关函数:
vector<int>v;
//用push_back在vector尾部插入元素;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
//迭代遍历:
cout<<"正向迭代vector:";
vector<int>::iterator i;
for(i=v.begin();i!=v.end();i++)
{
cout<<*i<<' ';
}
cout<<endl;
//反向迭代遍历:
cout<<"反向迭代vector:";
vector<int>::reverse_iterator ri;
for(ri=v.rbegin();ri!=v.rend();ri++)
{
cout<<*ri<<' ';
}
cout<<endl;
//获取首元素:
cout<<"首元素:"<<v.front()<<endl;
// 获取尾元素:
cout<<"尾元素:"<<v.back()<<endl;
//获取元素个数:
cout<<"元素个数:"<<v.size()<<endl;
//删除最后一个元素:
v.pop_back();
cout<<"删除尾部元素后:";
for(i=v.begin();i!=v.end();i++)
{
cout<<*i<<' ';
}
cout<<endl;
//在指定的pos处的元素前插入新元素:
v.insert(v.begin()+1,10);
cout<<"在指定位置插入元素后:";
for(i=v.begin();i!=v.end();i++)
{
cout<<*i<<' ';
}
cout<<endl;
//在指定位置或指定区间删除元素;
v.erase(v.begin()+1);
cout<<"在指定位置删除元素后:";
for(i=v.begin();i!=v.end();i++)
{
cout<<*i<<' ';
}
cout<<endl;
//清除所有元素:
v.clear();
//判断是否是空vector;
cout<<"清除所有元素后:";
if(v.empty())
{
cout<<"vector为空"<<endl;
}
return 0;
}
测试结果: