Un vecteur 2D est un vecteur du vecteur. Comme les tableaux 2D, nous pouvons déclarer et attribuer des valeurs à un vecteur 2D !
En supposant que vous soyez familier avec un vecteur normal en C++, à l'aide d'un exemple, nous démontrons ci-dessous en quoi un vecteur 2D diffère d'un vecteur normal :
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Élément un contenant 2 valeurs. */ {1, 2}, /* Élément deux contenant 3 valeurs. */ {4, 5, 6}, /* Élément trois contenant 4 valeurs. */{7, 8, 9, 10} } ; /* Nous imprimons maintenant le vecteur que nous venons de définir en utilisant une simple boucle for imbriquée. */ pour (int je = 0; je { pour (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>
Dans un vecteur 2D, chaque élément est un vecteur.
Complexité temporelle : O(1)
Espace auxiliaire : O(1)
C++
/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(ligne); /* À la ligne 21, nous avons créé un vecteur 2D et lui avons attribué une capacité de 'ligne' (dans ce cas 5) unités. */ /* Nous allons maintenant créer la structure de notre vecteur 2D en attribuant la valeur des lignes et des colonnes via une boucle for imbriquée. */ for(int i = 0; i { /* Déclarer la taille de la colonne. */ int col = column[i]; /* Sur la 43ème ligne nous déclarons la i-ème ligne à la taille de la colonne. Nous créons un vecteur normal de capacité 'col' qui, à chaque itération de la boucle for, définira les valeurs à l'intérieur de chaque ligne */ vec[i] = vector. |
>
>Sortir
1 2 3 4 5 6 7 8 9>
Complexité temporelle : O(N*N)
Espace auxiliaire : O(N*N)
Autre approche pour accéder aux éléments vectoriels :
C++
<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>> |
>
>Sortir
1 2 3 4 5 6 7 8 9>
Complexité temporelle : O(N*N)
Espace auxiliaire : O(N*N)
Comme les tableaux irréguliers de Java, chaque élément d'un vecteur 2D peut contenir un nombre différent de valeurs.
C++
/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* Élément un contenant 2 valeurs. */ {1, 2}, /* Élément deux contenant 3 valeurs. */ {4, 5, 6}, /* Élément trois contenant 4 valeurs. */{7, 8, 9, 10} } ; /* Nous imprimons maintenant le vecteur que nous venons de définir en utilisant une simple boucle for imbriquée. */ pour (int je = 0; je { pour (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }> |
>
>Sortir
1 2 4 5 6 7 8 9 10>
Problème d'exercice : Définissez le vecteur 2D avec différentes tailles de colonnes.
Exemples:
Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>
Les vecteurs 2D sont souvent traités comme une matrice contenant des lignes et des colonnes. Sous le capot, ce sont en réalité des éléments du vecteur 2D.
Nous déclarons d'abord une variable entière nommée row puis un tableau nommé column qui va contenir la valeur de la taille de chaque ligne.
Après cela, nous procédons à l’initialisation de la mémoire de chaque ligne en fonction de la taille de la colonne.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vecteur |
supprimer le premier caractère Excel
>
>Sortir
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>
Une autre approche
Supposons que nous voulions initialiser un vecteur 2D de n lignes et m colonnes, avec une valeur 0.
C++
>
>Sortir
0 0 0 0 0 0 0 0 0 0 0 0>
Complexité temporelle : O(N*M)
Espace auxiliaire : O(N*M)
Encore une autre approche :
Supposons que nous voulions créer un vecteur 2D de n lignes et m colonnes et valeurs d’entrée.
C++
// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , vecteur |
>
>Sortir
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>
Complexité temporelle : O(N*M)
Espace auxiliaire : O(N*M)
Nous espérons que vous quitterez cet article avec une meilleure compréhension des vecteurs 2D et que vous serez désormais suffisamment en confiance pour les appliquer par vous-même.