首页 > 解决方案 > 如何在C++中创建一个n行5列的数组,但是n值在变化

问题描述

我有这段代码,我想在其中创建一个具有 nx 5 个值的动态二维数组 -

int** bump = new int*[b_bump_num];
for(int i = 0; i < b_bump_num; i++) {
    bump[i] = new int[5];
}

for(int i = 0; i < b_bump_num; i++) {
    delete[] bump[i];
}
delete[] bump;

但我面临这个错误 -

*error:表达式必须包含指针类型-倒数第三行-bump[i]

标签: c++arrays

解决方案


这可能就是你所需要的——

方法 1:使用简单的二维数组

#include <iostream>

using namespace std;

int main()
{
    int dimension1, dimension2 = 5;
    cout << "Enter first dimension : " << endl;
    cin >> dimension1;

    // dynamic allocation
    int** array2d = new int*[dimension1];
    for(int i = 0; i < dimension1; ++i)
        array2d[i] = new int[dimension2];

    /* 
    // you may fill it with your values
    for(int i = 0; i < dimension1; ++i)
        for(int j = 0; j < dimension2; ++j)
            array2d[i][j] = i;
    */

    // print
    for(int i = 0; i < dimension1; ++i) {
        for(int j = 0; j < dimension2; ++j) {
            cout << array2d[i][j] << " ";
        }
        cout << endl;
    }

    // free
    for(int i = 0; i < dimension1; ++i)
        delete [] array2d[i];

    delete [] array2d;

    return 0;
}

样本输出:

Enter first dimension : 
4
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

方法 2:使用向量 -

#include <iostream>
#include <vector> 

using namespace std;

int main()
{
    // size of row 
    int rowSize;
    int colSize = 5;

    cout << "Enter row size : ";
    cin >> rowSize;

    // Create a vector of vector with size equal to rowSize; filled with 0.
    vector<vector<int>> vec(rowSize, vector<int>(colSize));

    for (int i = 0; i < rowSize; i++) { 
        for (int j = 0; j < vec[i].size(); j++) 
            cout << vec[i][j] << " "; 
        cout << endl; 
    }

    vec.clear();

    return 0;
}

样本输出:

Enter row size : 3                  
0 0 0 0 0                           
0 0 0 0 0                           
0 0 0 0 0

推荐阅读