logo

Vecteur 2D en C++ avec taille définie par l'utilisateur

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. (col); for(int j = 0; j { vec[i][j] = j + 1; } } /* Nous utilisons maintenant enfin une simple boucle for imbriquée pour imprimer le vecteur 2D que nous venons de créer ci-dessus. */ for(int je = 0; je { pour (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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'>>
class='comments'>/* Code C++ pour démontrer un vecteur 2D avec des éléments (vecteurs) à l'intérieur. */div>
class='préprocesseur'>#include div>
class='préprocesseur'>#include div>
class='keyword bold'>using>espace de noms>std; div>
class='espaces non définis'> div>
class='color1 bold'>int>main() div>
classe='plain'>{ div>
class='espaces non définis'>>/* Ci-dessous nous initialisons un vecteur 2D nommé 'vect' à la ligne 12 puis nous déclarons les valeurs aux lignes 14, 15 et 16 respectivement. */div>
class='espaces non définis'> div>
class='espaces non définis'>>vectorclass='color1 bold'>intclass='plain'>>> vect div>
class='espaces non définis'>>{ div>
class='espaces non définis'>>{1, 2, 3}, div>
class='espaces non définis'>>{4, 5, 6}, div>
class='espaces non définis'>>{7, 8, 9} div>
class='espaces non définis'>>}; div>
class='espaces non définis'> div>
class='espaces non définis'>>/* Nous imprimons maintenant les valeurs que nous venons de déclarer sur les lignes 14, 15 et 16 en utilisant une simple boucle for imbriquée à l'aide de l'itérateur. */div>
class='espaces non définis'> div>
class='espaces non définis'>>/* vector vect Nous pouvons diviser cette déclaration en deux parties, ce qui nous aidera à comprendre les concepts ci-dessous. 1. vect est un vecteur 2D composé de plusieurs éléments de type vecteur. 2. Le vecteur est un vecteur 1D composé de plusieurs données int. Nous pouvons donc utiliser l'itérateur fourni par STL au lieu de la variable i,j utilisée dans la boucle for. Cela peut réduire l'erreur qui peut survenir lors des opérations i, j (i++, j++). Dans le code ci-dessous, nous utilisons l'itérateur pour accéder aux éléments vectoriels. 1. Nous obtenons des vecteurs vect1D de type vector à partir du vecteur 2D. 2. Nous obtenons des éléments int vers x à partir du vecteur vecteur 1D. */div>
class='espaces non définis'> div>
class='espaces non définis'>>pour>(vecteurintclass='plain'>> vect1D : vect) div>
class='espaces non définis'>>{ div>
class='espaces non définis'>>for>(class='color1 bold'>int>x : vect1D) div>
class='espaces non définis'>>{ div>
class='espaces non définis'>>cout<< x <<>' 'class='plain'>; div>
class='espaces non définis'>>} div>
class='espaces non définis'>>cout<< endl; div>
class='espaces non définis'>>} div>
class='espaces non définis'> div>
class='espaces non définis'>>return>0; div>
class='plain'>} div>div>div>>

>

>

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 (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

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 (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

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.