C/C++动态多维数组

之前一直考虑如何使用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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容