C转C++之动态数组vector
之前在用C解题时,经常要用到动态数组,虽然C99以及支持用变量了,但有些OJ平台还是比较老,不支持C99的动态数组,就不得不用二级指针,特别麻烦(如海选女主角——数组的锅)。在学C++的时候发现了vector的动态数组,不但解决了版本不支持的问题,还可以在数组定义后在末位或中间插入新的值,且无论是在main内还是外都自动全部初始化为0,对于我这种懒人简直是福音啊!特别好用!
使用说明:
引入头文件
#include <vector>
using namespace std;
一维数组
vector<int> a; //可以先不分配大小
a.resize(8); //将长度设置为8
cout << a.size( ); //输出a的大小
vector<int> a2(10,1); //将10长度的数组初始化为1
a.push_back(m); //在数组末尾加一个m元素
二维数组
vector< vector<int> > a(m);
for ( int i =0; i<(m); i++ )
{
a[i].resize(n);
}
//这样就定义了一个a[m][n]的数组了
三维数组
//特别要注意,因为在C++中>>是cin的操作符
//所以多个连在一起时要用空格隔开
vector<vector<vector<int> > > a;
a.resize(m);
for (int i = 0; i < m; i++)
a[i].resize(n);
for (int j = 0; j < n; j++)
a[i][j].resize(k);