Wie definieren Sie einen 2D-array in C++ und STL-ohne memory-manipulation?

Es gibt mehrere Möglichkeiten zum definieren einer 2D-array in C++ und STL-ohne memory-manipulation, und die folgenden codes zeigen zwei verschiedenen Methoden:

int main () 
{
    /**************
        1   2   3
        4   5   6
    ***************/
    //Method 1
    const int ROW = 2;
    const int COL = 3;
    int array1[ROW][COL];
    for(int i=0; i<ROW; i++)
        for(int j=0; j<COL; j++)
            array1[i][j] = i*COL+j+1;

    //Method 2
    typedef vector<vector<int> > ARRAY; 
    ARRAY array2;
    vector<int> rowvector;
    for(int i=0; i<ROW; i++)
    {
        rowvector.clear();
        for(int j=0; j<COL; j++)
            rowvector.push_back(i*COL+j+1);
        array2.push_back(rowvector);
    }
    return 0;
}

Meine Frage ist: gibt es andere Möglichkeiten zum definieren des 2D-array? Welche die effizienteste ist? Danke!

int **arr2D ;
Gutes tutorial über arrays in C++
Wenn Ihr array konstanter Größe verwenden Sie Methode 1. Wenn Ihr array hat eine bestimmte Größe zur Laufzeit verwenden Sie Methode 2. Weitere, weniger nützliche Methoden für 2d-arrays sind std::array<std::array<int, COL>, ROW> und boost mehrdimensionale arrays.

InformationsquelleAutor feelfree | 2012-10-11

Schreibe einen Kommentar