Mam ten kod, w którym chcę utworzyć dynamiczną tablicę 2-d z wartościami n x 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;

Ale mam do czynienia z tym błędem -

*błąd:Wyrażenia muszą zawierać typy wskaźników — trzecia ostatnia linia — bump[i]

2
dou 20 listopad 2018, 09:49

1 odpowiedź

Najlepsza odpowiedź

To może być wszystko, czego potrzebujesz -

Podejście 1: Korzystanie z prostej tablicy 2D

#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;
}

Przykładowe wyjście:

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

Podejście 2: Korzystanie z wektorów —

#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;
}

Przykładowe wyjście:

Enter row size : 3                  
0 0 0 0 0                           
0 0 0 0 0                           
0 0 0 0 0
0
Tushar Walzade 20 listopad 2018, 11:50