最近编程时经常用到vector向量,但却总是忘记vector的一些函数,特此总结一下。
一,定义一维vector与空间分配
1.vector<int> v(n) …………定义时分配n个大小的int类型空间。
2.vector<int> v(n,0)…………
定义时分配n个大小的int类型空间,并初始化数值全部为0.
二,
定义二维vector数组,但初始时是一个n维向量。
1.vector<int> v[n]..........与下面的效果一致
2.vector<vector<int>> v(n)…………行数为n,v[i]也是一个vector数组,可以执行v[i].push_back()等基本操作。例如
vector<int> iVec1[10];
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < 3; ++j)
{
iVec1[i].push_back(j);
}
}
vector<vector<int> > iVec2;
for (int i = 0; i < 10; ++i)
{
vector<int> vecTmp;
for (int j = 0; j < 3; ++j)
{
vecTmp.push_back(j);
}
iVec2.push_back(vecTmp);
}
三,定义二维vector数组,并初始化为二维空间。
1.vector<vector<int>> v(n, vector<int>(m)); //该二维vector数组n行m列。
2.二维vector向量每个元素的长度可以不同,例如
- vector<vector<int> >vv;
- for(int c = 1; c <= 3; c++)
- vv.push_back(vector<int>(c,0));
上面代码产生一个长度不同的二维向量,第一行只有1个元素,第二行有两个,第三行三个。
四,寻找最大最小值
在vector,string等容器中寻找最值使用函数max_element()函数和min_element()函数,返回最值的迭代器。
#include<iostream>
#include<string>
#include<algorithm> //max_element(min_element)函数头文件
using namespace std;
int main()
{
string s="aacfg";
cout<<*max_element(s.begin(),s.end())<<endl;
cout<<*min_element(s.begin(),s.end())<<endl;
return 0;
}
//输出:
//g
//a
六,其他函数
空间再分配函数v.resize();
vector<int> v;
v.resize(n); //预分配n个大小的int型空间
vector<int> vi[n];
vi[i].resize(10); //对vi[i]预分配n个大小的int型空间