188 votes

Initialisation d'un std::vector à deux dimensions

J'ai donc les éléments suivants :

std::vector< std::vector <int> > fog;

et je l'initialise très naïvement comme :

    for(int i=0; i<A_NUMBER; i++)
    {
            std::vector <int> fogRow;
            for(int j=0; j<OTHER_NUMBER; j++)
            {
                 fogRow.push_back( 0 );
            }
            fog.push_back(fogRow);
    }

Et ça semble très mauvais... Existe-t-il une autre façon d'initialiser un vecteur de cette manière ?

7voto

Je pense que la façon la plus simple de le faire est :

std::vector<std::vector<int>>v(10,std::vector<int>(11,100));

10 est la taille du vecteur externe ou global, qui est le principal, et 11 est la taille du vecteur interne de type int, et les valeurs initiales sont initialisées à 100 ! C'est ma première aide sur la pile, je pense que cela peut aider quelqu'un.

7voto

Abhinav1602 Points 80

Voici ce qui a fonctionné pour moi :

vector<vector<int>> minA{ROW_SIZE, vector<int>(COLUMN_SIZE, VALUE)};

4voto

Ayan Bhunia Points 198

Cette réponse aidera à initialiser facilement le vecteur 2d après la déclaration.

int n=4,m=3;
int default_value = 0;

std::vector<std::vector<int>> matrix;

matrix.resize(m, std::vector<int>(n, default_value));

3voto

Supposons que vous vouliez initialiser un vecteur entier bidimensionnel avec n lignes et m colonnes ayant chacune la valeur ' VAL '

Écrivez-le comme suit

std::vector<vector<int>> arr(n, vector<int>(m,VAL));

Ce VAL peut être un variable de type entier o constant comme 100

1voto

ashchk Points 150

Cet extrait de code copie un vecteur bidimensionnel dans un autre. Et nous donne une image claire de la façon d'initialiser le vecteur 2D.

void copyVectorToVector(vector<vector<int>> matrix) {

        int rowNumber = matrix.size();
        int columnNumber = matrix[0].size();
        vector<vector<int>> result(rowNumber, vector<int> (columnNumber, 0));

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X