能说说怎样用vector来代替内置数组,特别是二维数组
能说说怎样用vector来代替内置数组,特别是二维数组
例如 将以下代码中的内置数组换成用vector代替 将是如何?
#include <iostream>
using namespace std;
const int row = 3;
const int line = 3;
int main()
{
int arry[row][line] = {0};
int i, j;
int count = 0;
for (i = 0; i != row; ++i)
{
for (j = 0; j != line; ++j)
{
arry[i][j] = count;
++count;
cout < < arry[i][j] < < "\t ";
}
cout < < endl;
}
return 0;
}
[解决办法]
你自己翻翻vector的说明吧,调用每个TempVector[i]的reisize()函数初始化,或者这样写:
vector <vector <int> > TempVector( Height, vector <int> ( Width, 缺省值 ) );
使用上和2维数组没区别。一样用TempVector[i][j]这种方式读写。
其实在没有vector的年代我们一般用这种形式:
int** pData = new int*[Height];
for( int i=0; i <Hight; ++i )
pData[i] = new int[Width];
这个和这样使用vector是一个道理的。这样理解可能更容易一些吧。
[解决办法]
const int row = 3;
const int line = 3;
int main()
{
vector <vector <int> > arry( row,vector <int> (line) );//定义数组,初始值为0
int i, j;
int count = 0;
for (i = 0; i != row; ++i)
{
for (j = 0; j != line; ++j)
{
arry[i][j] = count;
++count;
cout < < arry[i][j] < < "\t ";
}
cout < < endl;
}
return 0;
}