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 ?

-1voto

Sam Smith Points 11

Table de multiplication avec vecteur 2D le premier 10 est pour ROW, le second 10 pour COLUMN

std::vector<std::vector<int>> multiplication (10,std::vector<int>(10));
for(int i{0}; i<multiplication.size(); ++i){
    for(int j{0}; j<multiplication[i].size(); ++j){
        multiplication[i][j] = j * i;
    }
}

for(int i{1}; i < multiplication.size(); ++i){
    for(int j{1}; j < multiplication[i].size(); ++j){
        std::cout<<multiplication[i][j]<<"\t";
    }
    printf("\n");
}

-3voto

Ritik Kamboj Points 482

Mon c++ STL code pour initialiser 5*3 2-D vector con zero

#include <iostream>
using namespace std;
#include <vector>
int main()
{// if we wnt to initialise a 2 D vector with 0;

    vector<vector<int>> v1(5, vector<int>(3,0));

    for(int i=0;i<v1.size();i++) 
{
        for(int j=0;j<v1[i].size();j++)

           cout<<v1[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