Quelle est la différence entre un vecteur et un tableau en c++?

Quelle est la différence entre un vecteur et un tableau en c++?
Il existe de nombreuses différences entre un vecteur et un tableau en c++. Cependant, les principales similitudes sont très importantes. Les principales similitudes sont qu'elles sont toutes deux une liste, et chacune contiendrait une séquence de données du même type. Les principales différences sont les suivantes: la taille d'un vecteur (longueur) peut être augmentée naturellement, mais celle d'un tableau est fixe et ne peut pas être augmentée. Les éléments peuvent être insérés dans un vecteur mais ne peuvent pas être insérés dans un tableau. Les éléments peuvent être ajoutés à la fin du vecteur mais ne peuvent pas être ajoutés à la fin du tableau. Le vecteur est une classe à partir de laquelle d'autres objets vectoriels sont instanciés, mais le tableau est un pointeur constant vers une séquence de données du même type. Le vecteur a des méthodes (fonctions membres), mais le tableau ne le fait pas, et donc le vecteur est appelé une structure de données. Alors que le pointeur peut être utilisé avec le tableau, les itérateurs sont utilisés avec le vecteur. Un itérateur est un pointeur élaboré.

Aucun élément ne peut être inclus devant le tableau. Avec C ++ 17 et plus, un élément peut être inclus devant le vecteur en utilisant la fonction membre EMPlace ().

Pour le reste de cet article, les différences entre le vecteur et le tableau sont illustrées. Pour chaque point, l'incapacité du tableau est mentionnée, ou sa façon franc ou lourde d'atteindre le même objectif est donnée.

Contenu de l'article

  • Création d'un vecteur ou d'un tableau
  • Taille croissante
  • Insertion
  • Colocataire
  • Effacer un élément
  • Clair
  • Échange
  • Taille
  • Conclusion

Création d'un vecteur ou d'un tableau

Un vecteur peut être créé de plusieurs manières. La manière de base est la suivante:

vecteur vtr = 'a', 'b', 'c', 'd', 'e';

De même, un tableau serait créé comme suit:

char arr [] = 'a', 'b', 'c', 'd', 'e';

Notez la différence dans les opérandes qui se trouvent à gauche de l'opérateur d'affectation. Le nombre d'éléments pour le vecteur peut ensuite être ajouté ou réduit, mais la taille du réseau reste fixe, à 5 dans ce cas.

Pour avoir et utiliser un vecteur dans un programme, le programme devrait commencer:

#inclure
Utilisation de Namespace Std;

Pour avoir et utiliser un tableau dans un programme, aucune directive de préprocesseur n'est nécessaire.

Taille croissante

Le code suivant montre comment un vecteur de deux éléments initialement, est augmenté à quatre éléments, en utilisant sa fonction membre Push_back ():

vecteur vtr (2);
vtr [0] = 'a';
vtr [1] = 'b';
vtr.push_back ('c');
vtr.push_back ('d');

Ce code doit être dans un corps de fonction. Pour le tableau, et puisque le tableau a une taille fixe, créez un tableau pour le nombre maximum d'éléments envisagés, avant d'ajouter les éléments à l'aide de l'opérateur []. Exemple:

Char Arr [4];
arr [0] = 'a';
arr [1] = 'b';
// Ajout d'éléments
arr [2] = 'c';
arr [3] = 'd';

De plus, ce code devrait être à l'intérieur d'un corps de fonction.

Insertion

Dans le code suivant, un élément est inséré devant l'élément pointé par l'itérateur, P:

vectorvtr = 'a', 'b', 'd', 'e';
vecteur :: iterator p = vtr.commencer();
++P;
++P;
char ch = 'c';
vtr.insérer (p, ch);
pour (int i = 0; icouter<

La sortie est:

A b c d e

La première instruction du code crée l'objet vectoriel. «C», qui aurait dû être devant «D» par ordre alphabétique, est absent ici. La deuxième déclaration renvoie un itérateur qui pointe vers le premier élément du vecteur. Les deux déclarations suivantes incrément le pointeur pour pointer vers «D». La déclaration après attribue «C» à ch. Dans ce segment de code, la dernière instruction insère «C» devant «D», en utilisant l'itérateur.

Quant au tableau, il n'y a aucun moyen qu'un élément puisse être inséré. En raison de limitations comme celle-ci pour le tableau, le vecteur et d'autres conteneurs ont été conçus.

Remarque: la fonction membre insert () peut également être utilisée pour insérer un élément devant un vecteur.

Colocataire

L'ajouter signifie ajouter des éléments à l'arrière. La fonction membre Push_back () peut être utilisée pour ajouter des éléments à l'arrière du vecteur - voir ci-dessus. Le tableau ne peut pas être ajouté à. La seule façon de contourner ce problème pour le tableau est de créer un tableau pour la taille maximale envisagée. Mettre des éléments depuis le début. Alors un espace (cellules) sera laissé dans le tableau. Ensuite, s'il est nécessaire d'ajouter des éléments à l'arrière, ajustez les éléments (valeurs) dans les espaces derrière qui sont vides (qui ont des valeurs par défaut).

Effacer un élément

Pour le vecteur, un élément peut être effacé en utilisant l'itérateur. L'itérateur pointera alors vers l'élément suivant, qui était là avant l'effacement. Le code suivant efface «B»:

vectorvtr = 'a', 'b', 'c', 'd', 'e';
vecteur :: iterator q = vtr.commencer();
++Q;
vtr.effacer (q);
pour (int i = 0; icouter<
couter<couter<< *q <La sortie est:

A C D E
C

Aucun élément du tableau ne peut être effacé, bien qu'il puisse être changé.

Clair

Tous les éléments du vecteur peuvent être supprimés, avec sa fonction membre Clear (), comme suit:

vectorvtr = 'a', 'b', 'c', 'd', 'e';
vtr.clair();
pour (int i = 0; icouter<

La sortie n'est rien. La meilleure chose à faire avec le tableau est de remplacer tous les éléments par une valeur par défaut. Avec l'inteer, la valeur par défaut est 0. Le code suivant illustre:

int arr [] = 1, 2, 3, 4, 5;
pour (int i = 0; i<5; i++)
arr [i] = 0;

pour (int i = 0; i<5; i++)
couter<

La sortie est:

0 0 0 0 0

Avec le caractère, la valeur par défaut est le caractère nul, \ 0. Le code suivant illustre:

char arr [] = 'a', 'b', 'c', 'd', 'e';
pour (int i = 0; i<5; i++)
arr [i] = '\ 0';

pour (int i = 0; i<5; i++)
couter<

La sortie ne montre rien.

Échange

Même si deux vecteurs ne sont pas de la même taille, leurs éléments peuvent être échangés, avec la fonction de membre swap (). Le code suivant montre ceci:

vecteur vtr1 = 'a', 'b', 'c', 'd', 'e';
vector vtr2 = 'f', 'g', 'h';
vtr1.échange (vtr2);
couter<< "Content of new vtr1:" <pour (int i = 0; icouter<< vtr1[i] << ";

couter<couter<< "Content of new vtr:" <pour (int i = 0; icouter<< vtr2[i] << ";

Pour que deux tableaux soient échangés, ils doivent être de la même longueur. Le tableau n'a pas de fonctions membres (pas de méthodes). Ainsi, pour échanger des éléments contre des tableaux, un code doit être écrit comme suit:

char arr1 [] = 'a', 'b', 'c', 'd', 'e';
char arr2 [] = 'f', 'g', 'h', 'i', 'j';
pour (int i = 0; i<5; i++)
char temp = arr1 [i];
arr1 [i] = arr2 [i];
arr2 [i] = temp;

couter<< "Content of new arr1:" <pour (int i = 0; i<5; i++)
couter<< arr1[i] << ";

couter<couter<< "Content of new arr2:" <pour (int i = 0; i<5; i++)
couter<< arr2[i] << ";

La sortie est:

Contenu de New Arr1:
F g h i j
Contenu de New Arr2:
A b c d e

Taille

La taille du vecteur est renvoyée par sa fonction membre, size (). C'est-à-dire qu'il est déterminé au moment de l'exécution. Illustration:

vectorvtr = 'a', 'b', 'c', 'd';
int sz = vtr.taille();
couter<La sortie est 4. La taille du tableau doit être indiquée au début, comme le montre le code suivant:

char arr [4] = 'a', 'b', 'c', 'd';

Cela peut également être fait comme ceci:

char arr [7] = 'a', 'b', 'c', 'd';

C'est-à-dire mettre un nombre (taille) supérieur à la taille supposée (de 4 dans ce cas). Cependant, le nombre ne doit pas être inférieur au nombre d'éléments initiaux.

Tableau de longueur variable

La taille du tableau peut cependant être donnée (non déterminée) au moment de l'exécution. Dans ce cas, le tableau devra être créé dans une fonction ou dans une construction similaire. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
void fn (int n)
char arr [n];
arr [0] = 'a';
arr [1] = 'b';
arr [2] = 'c';
arr [3] = 'd';
pour (int i = 0; icouter<
couter<
int main()

fn (4);
retour 0;

La sortie est:

A B C D

Conclusion

Les principales différences entre le vecteur et le tableau sont les suivantes: la taille (longueur) d'un vecteur peut être augmentée naturellement, mais celle d'un tableau est fixe et ne peut pas être augmentée. Les éléments peuvent être insérés dans un vecteur mais ne peuvent pas être insérés dans un tableau. Les éléments peuvent être ajoutés à la fin du vecteur mais ne peuvent pas être ajoutés à la fin du tableau. Le vecteur est une classe à partir de laquelle d'autres objets vectoriels sont instanciés, mais le tableau est un pointeur constant vers une séquence de données du même type. Le vecteur a des méthodes (fonctions membres), mais le tableau ne le fait pas, et donc le vecteur est appelé une structure de données. Alors que le pointeur peut être utilisé avec le tableau, les itérateurs sont utilisés avec le vecteur. Un itérateur est un pointeur élaboré. Le tableau montre son incapacité ou a une manière franc ou encombrante d'atteindre le même objectif pour chaque différence.