1.头文件
#include<vector>
2.使用方式
vector<类型>标识符
vector 的元素不仅仅可以是 int,double,string 还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。
vector<int> test;
vector<string> test;
3.常用的一些方法
test.push_back(a);//向量尾部增加一个元素
test.pop_back(a);//删除向量中最后一个元素
test.clear(a);//清空向量中所有元素
test.size();//返回向量中元素的个数
test.empty();//判断向量是否为空,若为空,则向量中无元素
test.front();//返回首元素的引用
test.back();//返回尾元素的引用
test.begin();//返回向量头指针,指向第一个元素
test.end();//返回向量尾指针,指向向量最后一个元素的下一个位置
test.at(int pos);//返回pos位置元素的引用
test.insert(test.begin()+i,a);// 在第i+1个元素前面插入a;
test.erase(test.begin()+2) ;// 删除第i+2个元素
vec.erase(vec.begin()+i,vec.end()+j); //删除区间[ i,j-1] 区间从0开始
简要概括:
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
vector<vector<Point2f> > points; //定义一个二维数组
points[0].size(); //指第一行的列数
使用迭代器访问元素.
vector<int>::iterator it;
for(it=test.begin();it!=test.end();it++)
cout<<*it<<endl;
算法
(1) 使用reverse将元素翻转:需要头文件 #include<algorithm>
reverse(test.begin(),test.end());将元素翻转,即逆序排列!
(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)
(2)使用 sort 排序:需要头文件 #include<algorithm>,
sort(test.begin(),test.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较
bool Comp(const int &a,const int &b)
{
return a>b;
}
函数.调用时: sort(test.begin(),test.end(),Comp),这样就降序排序。
输出Vector的中的元素
vector<float> vecClass;
int nSize = vecClass.size();
//打印 vecClass,方法一:
for(int i=0;i<nSize;i++)
{
cout<<vecClass[i]<<" ";
}
cout<<endl;
//打印 vecClass,方法二:
for(int i=0;i<nSize;i++)
{
cout<<vecClass.at(i)<<" ";
}
cout<<endl;
//打印 vecClass,方法三:输出某一指定的数值时不方便
for(vector<float>::iterator it = vecClass.begin();it!=vecClass.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
二维数组的使用
#include <vector>
#include <iostream>
using namespace std;
int main()
{
using namespace std;
int out[3][2] = { 1, 2,
3, 4,
5, 6 };
vector <int*> v1;
v1.push_back(out[0]);
v1.push_back(out[1]);
v1.push_back(out[2]);
cout << v1[0][0] << endl;//1
cout << v1[0][1] << endl;//2
cout << v1[1][0] << endl;//3
cout << v1[1][1] << endl;//4
cout << v1[2][0] << endl;//5
cout << v1[2][1] << endl;//6
return 0;
}