Comment définir un tableau 2D en C++ et STL sans manipulation de la mémoire?

Il y a plusieurs façons de définir un tableau 2D en C++ et STL sans manipulation de la mémoire, et les codes suivants illustrent deux méthodes différentes:

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

Ma question est: existe-il d'autres façons de définir le tableau 2D? Lequel est le plus efficace? Merci!

int **arr2D ;
Bon tuto sur les tableaux en C++
Si votre tableau est de taille constante utilisez la méthode 1. Si votre tableau a une taille déterminée lors de l'exécution, utilisez la méthode 2. De plus, de moins en moins utile méthodes pour la 2d tableaux sont std::array<std::array<int, COL>, ROW> et boost tableaux multidimensionnels.

OriginalL'auteur feelfree | 2012-10-11