¿Cómo definir una matriz 2D en C ++ y STL sin manipulación de memoria?

Hay varias formas de definir una matriz 2D en C ++ y STL sin manipulación de memoria, y los siguientes códigos ilustran dos métodos diferentes:

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

Mi pregunta es: ¿hay otras formas de definir la matriz 2D? ¿Cuál es el más eficiente? ¡Gracias!

Respuestas a la pregunta(7)

Su respuesta a la pregunta