之前一直考虑如何使用C中的malloc函数来生成动态的多维数组,但是一直没有找到一个满意的做法(形式要简单,而且使用要简单)
今天看到了STL库中的vector的初始化式,还有一个assign方法。简直了,使用vector可以很好的实现我的要求。
实现n*m的多维数组的代码如下:
#include <iostream>
#include <vector>
using namespace std;
void Output(const vector<vector<int> > & matrix)
{
for(int i=0; i<matrix.size(); ++i) {
for (int j=0; j<matrix[i].size(); ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main(int argc, char ** argv)
{
int n = 3;
int m = 4;
vector<vector<int> > matrix(n, vector<int>(m, 0));
Output(matrix);
return 0;
}
当然你还可以使用assign方法,代码如下:
#include <iostream>
#include <vector>
using namespace std;
void Output(const vector<vector<int> > & matrix)
{
for(int i=0; i<matrix.size(); ++i) {
for (int j=0; j<matrix[i].size(); ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
void AllocMatrix(vector<vector<int> > & matrix, int n, int m)
{
matrix.clear();
matrix.assign(n, vector<int>(m, 0));
}
int main(int argc, char ** argv)
{
int n = 3;
int m = 4;
vector<vector<int> > matrix;
AllocMatrix(matrix, n, m);
Output(matrix);
return 0;
}
网友评论