vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象;简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector容器类的基本操作有:
(1)头文件:#include <vector>
(2)创建对象int类型对象ans:vector < int > ans;
(3)尾部插入元素x:ans.push_back(x);
(4)在第i个元素(元素标号由0开始)前面插入x:ans.insert( ans.begin( )+i,x );
(5)删除尾部元素:ans.pop_back();
删除第i个元素:ans.erase(ans.begin( )+i );
删除区间[ i , j ):ans.erase(ans.begin( )+i,ans.end( )+j);
(6)访问第0个元素:cout<<ans[ 0 ]<<endl;
使用迭代器访问:
vector<int>::iterator it;
for(it=ans.begin();it!=ans.end();it++)
cout<<*it<<endl;
(7)容器大小:ans.size();
(8)清空:ans.clear();
(9)判断是否为空:ans.empty();
vector的变量类型不仅可以是int,double,string类型的,还可以是结构体类型,但此时结构体类型要定义为全局变量。
#include <vector>
typedef struct node
{
int a;
double b;
char c;
}Node;
int main()
{
vector <Node> ans;
}
两个vectors被认为是相等的,当且仅当:
它们具有相同的容量且所有相同位置的元素都相等.
vectors之间大小的比较是按字典序进行的.
此外,vector定义的变量还可以作为其他函数的参数:
(1)使用reverse函数将元素翻转:(需要头文件#include<algorithm>)
reverse(ans.begin(),ans.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
(2)使用sort排序:(需要头文件#include<algorithm>)
sort(vec.begin(),vec.end());(默认是按升序排列,可自己写cmp函数降序排列).