Vecteur dans C++ Bibliothèque de modèles standard (STL) avec exemple

⚡ Résumé intelligent

Vecteur dans C++ est un tableau dynamique de la bibliothèque de modèles standard qui se redimensionne automatiquement lorsque des éléments sont ajoutés ou supprimés, stockant les éléments dans une mémoire contiguë afin que les programmeurs puissent y accéder et les parcourir à l'aide d'itérateurs.

  • 📦 Tableau dynamique : A C++ Contrairement à un tableau statique de taille fixe, un vecteur s'agrandit ou se réduit automatiquement.
  • 🧩 En-tête et syntaxe : Incluez l'en-tête du vecteur, puis déclarez le vecteur. nom pour stocker les éléments typés.
  • 🧭 Itérateurs : Les fonctions begin(), end(), cbegin() et cend() se déplacent sur les éléments du vecteur comme des pointeurs.
  • Modificateurs: push_back(), insert(), pop_back(), erase() et clear() modifient le contenu du vecteur.
  • (I.e. Capacité de charge : size(), capacity(), max_size(), resize() et empty() permettent de consulter ou d'ajuster le stockage.
  • 🤖 Aide à l'IA : GitHub Copilot et les assistants IA similaires automatisent les opérations vectorielles à partir d'un court commentaire.

C++ Vector STL

Qu'est-ce que la C++ Vecteur?

A C++ Un vecteur est un tableau dynamique capable de se redimensionner automatiquement. Le redimensionnement se produit après qu'un élément a été ajouté ou supprimé du vecteur. Le stockage est géré automatiquement par le conteneur. Les éléments d'un vecteur sont stockés dans un stockage contigu. Cela permet C++ les programmeurs peuvent accéder aux éléments vectoriels et les parcourir à l'aide d'itérateurs.

L'insertion de nouvelles données dans un vecteur s'effectue à la fin de celui-ci. Cette opération prend un temps différentiel. La suppression d'un élément d'un vecteur prend un temps constant, car il n'est pas nécessaire de redimensionner le vecteur. L'insertion ou la suppression d'un élément au début du vecteur prend un temps linéaire.

Avant d'écrire du code avec des vecteurs, il est utile de savoir quand ils constituent le conteneur approprié.

Quand utiliser un vecteur ?

A C++ Le vecteur doit être utilisé dans les circonstances suivantes :

  • Lorsque vous traitez des éléments de données qui changent constamment.
  • Si la taille des données n'est pas connue avant de commencer, le vecteur ne vous demandera pas de définir la taille maximale du conteneur.

Comment initialiser des vecteurs dans C++

La syntaxe des vecteurs dans C++ est:

vector <data-type> name (items)

Comme indiqué ci-dessus, nous commençons par le mot-clé vector.

  • Le Type de données est le type de données des éléments à stocker dans le vecteur.
  • Le Le nom est le nom du vecteur ou des éléments de données.
  • Le articles Indiquez le nombre d'éléments du vecteur de données. Ce paramètre est facultatif.

Une fois qu'un vecteur existe, les itérateurs vous offrent une manière similaire à un pointeur de parcourir ses éléments.

Itérateurs

Les itérateurs servent à accéder aux éléments stockés dans un vecteur. Il s'agit d'un objet fonctionnant comme un pointeur. Voici les itérateurs courants pris en charge par C++ vecteurs :

  • vecteur::début(): il donne un itérateur qui pointe vers le premier élément du vecteur.
  • vecteur::end(): il donne un itérateur qui pointe vers l'élément après la fin du vecteur.
  • vecteur::cbegin() : C'est la même chose que vector::begin(), mais cela n'a pas la possibilité de modifier les éléments.
  • vecteur::cend() : C'est la même chose que vector::end() mais cela ne peut pas modifier les éléments du vecteur.

L'exemple suivant remplit un vecteur puis le parcourt à l'aide d'itérateurs mutables et constants.

Exemple 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

Sortie :

C++ Itérateurs vectoriels Exemple 1 sortie

Voici une capture d'écran du code :

C++ Itérateurs vectoriels Exemple 1 de code

Code Explication:

  1. Incluez le fichier d'en-tête iostream dans notre code. Cela nous permettra de lire et d'écrire sur la console.
  2. Incluez le fichier d'en-tête vectoriel dans notre code. Cela nous permettra de travailler avec des vecteurs dans C++.
  3. Incluez l'espace de noms std afin d'utiliser ses classes et fonctions sans l'appeler.
  4. Appelez la fonction main() dans laquelle la logique du programme doit être ajoutée.
  5. Le { marque le début du corps de la fonction main().
  6. Déclarez un vecteur nommé nums pour stocker un ensemble d'entiers.
  7. Créez une boucle `for` pour parcourir le vecteur. La variable nous permettra de parcourir les éléments du vecteur, du premier au cinquième.
  8. Poussez les éléments dans le numéro vectoriel depuis l'arrière. Pour chaque itération, cela ajoutera la valeur actuelle de la variable a dans le vecteur, qui est de 1 à 5.
  9. Imprimez du texte sur la console.
  10. Utilisez une variable itératrice a pour parcourir les éléments des nombres vectoriels du début à l'élément après la fin. Notez que nous utilisons les itérateurs vector::begin() et vector::end().
  11. Imprimez les valeurs pointées par la variable itérateur a sur la console pour chaque itération.
  12. Imprimez du texte sur la console. Le \n est un caractère de nouvelle ligne, déplaçant le curseur vers la nouvelle ligne pour imprimer à partir de là.
  13. Utilisez une variable d'itération pour parcourir les éléments du vecteur `nums` du début jusqu'à l'élément suivant la fin. Notez que nous utilisons les itérateurs `vector::cbegin()` et `vector::cend()`.
  14. Imprimez les valeurs pointées par la variable itérateur a sur la console pour chaque itération.
  15. La fonction principale doit renvoyer une valeur si le programme s'exécute correctement.
  16. Fin du corps de la fonction main().

Modificateurs

Les modificateurs sont utilisés pour modifier la signification du type de données spécifié. Voici les modificateurs courants dans C++:

  • vecteur::push_back() : Ce modificateur repousse les éléments par l'arrière.
  • vecteur::insertion() : Pour insérer de nouveaux éléments dans un vecteur à un emplacement spécifié.
  • vecteur::pop_back() : Ce modificateur supprime les éléments vectoriels de l'arrière.
  • vecteur::effacer() : Il est utilisé pour supprimer une série d’éléments de l’emplacement spécifié.
  • vecteur :: clear (): Il supprime tous les éléments vectoriels.

L'exemple suivant applique ces modificateurs successivement pour observer comment un vecteur se modifie.

Exemple 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

Sortie :

C++ Modificateurs vectoriels Exemple 2 : sortie

Voici une capture d'écran du code :

C++ Modificateurs vectoriels Exemple 2 de code

Code Explication:

  1. Incluez le fichier d'en-tête iostream dans notre code pour utiliser ses fonctions.
  2. Incluez le fichier d'en-tête vectoriel dans notre code pour utiliser ses fonctions.
  3. Incluez l'espace de noms std pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). La logique du programme doit être ajoutée à l'intérieur de son corps.
  5. Le début du corps de la fonction main().
  6. Déclarez un vecteur nommé nums pour stocker des valeurs entières.
  7. Stockez 5 éléments dans les nombres vectoriels. Chacun avec une valeur de 1.
  8. Imprimez du texte sur la console.
  9. Utilisez une variable itératrice a pour parcourir les éléments des nombres vectoriels.
  10. Imprimez les valeurs des nombres vectoriels sur la console pour chaque itération.
  11. Ajoutez la valeur 2 à la fin des nombres vectoriels.
  12. Déclarez une variable entière n pour stocker la taille des nombres vectoriels.
  13. Imprimez la dernière valeur des nombres vectoriels à côté d'un autre texte. Il devrait renvoyer un 2.
  14. Supprimez le dernier élément des nombres vectoriels. Les 2 seront supprimés.
  15. Imprime le texte sur la console. Le \n déplace le curseur vers la nouvelle ligne pour y imprimer le texte.
  16. Utilisez une variable itératrice a pour parcourir les éléments des nombres vectoriels.
  17. Imprimez les valeurs des nombres vectoriels sur la console pour chaque itération.
  18. Insérez la valeur 7 au début des numéros de vecteur.
  19. Imprimez la première valeur des nombres vectoriels à côté d'un autre texte. Il devrait renvoyer 7.
  20. Supprimez tous les éléments des numéros de vecteur.
  21. Imprimez la taille du numéro vectoriel avec un autre texte après avoir effacé tout le contenu. Il devrait renvoyer 0.
  22. Fin du corps de la fonction main().

Capacités

Utilisez le suivant fonctions pour déterminer la capacité d'un vecteur :

  • Taille() – Elle renvoie le nombre d'éléments dans un vecteur.
  • Taille max() – Elle renvoie le nombre maximal d'éléments qu'un vecteur peut stocker.
  • Capacité() – Elle renvoie la quantité d'espace de stockage allouée à un vecteur.
  • Redimensionner() Cette fonction redimensionne le conteneur pour qu'il contienne n éléments. Si la taille actuelle du vecteur est supérieure à n, les derniers éléments seront supprimés. Si elle est inférieure à n, des éléments supplémentaires seront ajoutés à la fin du vecteur.
  • Vide() – Elle renvoie vrai si le vecteur est vide. Sinon, elle renvoie faux.

Ce dernier exemple illustre et ajuste le stockage d'un vecteur à l'aide des fonctions de capacité ci-dessus.

Exemple 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

Sortie :

C++ Capacité vectorielle Exemple 3 sortie

Voici une capture d'écran du code :

C++ Exemple de code de capacité vectorielle 3

Code Explication:

  1. Incluez le fichier d'en-tête iostream dans notre code pour utiliser sa fonction.
  2. Incluez le fichier d'en-tête vectoriel dans notre code pour utiliser ses fonctions.
  3. Incluez l'espace de noms std dans notre code pour utiliser ses classes sans l'appeler.
  4. Appelez la fonction main(). La logique du programme doit être ajoutée dans le corps de cette fonction.
  5. Créez un vecteur nommé vector1 pour stocker des entiers.
  6. Utilisez une boucle for pour créer une variable x avec des valeurs de 1 à 10.
  7. Poussez les valeurs de la variable x dans le vecteur.
  8. Imprimez la taille du vecteur à côté d'un autre texte sur la console.
  9. Imprimez la capacité du vecteur avec d'autres textes sur la console.
  10. Imprimez le nombre maximum d'éléments que le vecteur peut contenir avec d'autres textes sur la console.
  11. Redimensionnez le vecteur pour qu'il ne contienne que 5 éléments.
  12. Imprimez la nouvelle taille du vecteur avec un autre texte.
  13. Vérifiez si le vecteur n'est pas vide.
  14. Imprime le texte sur la console si le vecteur n'est pas vide.
  15. Utilisez une instruction else pour indiquer quoi faire si le vecteur est vide.
  16. Texte à imprimer sur la console si le vecteur est vide.
  17. Le programme doit renvoyer de la valeur une fois terminé.
  18. Fin du corps de la fonction main().

FAQ

Un vecteur est un tableau dynamique qui s'adapte automatiquement à sa taille et la connaît, contrairement aux tableaux classiques dont la longueur est fixe et définie à la compilation. Les vecteurs gèrent la mémoire ; les tableaux bruts, non.

Utilisez l'opérateur d'indice, comme `nums[0]`, pour un accès direct rapide. La fonction membre `at()`, comme `nums.at(0)`, fait la même chose, mais lève une exception `out_of_range` si l'indice est invalide, ce qui la rend plus sûre.

Déclarez un vecteur dont les éléments sont eux-mêmes des vecteurs, par exemple le vecteur > grid. Vous pouvez dimensionner la grille à l'aide de constructeurs ou en ajoutant des lignes à la fin. Chaque vecteur interne peut croître indépendamment, ce qui vous offre une matrice flexible et redimensionnable.

Un vecteur stocke les éléments dans une zone mémoire contiguë avec un accès aléatoire rapide, tandis qu'une liste doublement chaînée (std::list) permet une insertion ou une suppression rapide n'importe où, mais sans indexation directe. Choisissez en fonction de votre mode d'accès.

Incluez l'en-tête de l'algorithme et appelez `std::sort` avec les itérateurs `begin` et `end`, comme dans `sort(nums.begin(), nums.end())`. Le tri est ascendant par défaut ; transmettez un comparateur personnalisé ou un comparateur plus grand. () pour trier par ordre décroissant.

Oui. Un vecteur est un modèle et peut contenir n'importe quel type, y compris des chaînes de caractères, des classes personnalisées et même d'autres vecteurs. Déclarez le type de l'élément entre chevrons, par exemple : `vector<vector>`. ou vecteur .

Oui. Les assistants de programmation IA transforment une brève instruction ou un commentaire en code vectoriel fonctionnel, incluant déclarations, boucles push_back et itérations. Il est essentiel de toujours vérifier les types, les limites et la gestion des capacités suggérés, car l'IA peut ne pas prendre en compte certaines exigences spécifiques au projet.

Oui. Copilote GitHub Il suggère des déclarations de vecteurs, des appels à `push_back` et `insert`, ainsi que des boucles d'itération au fur et à mesure de votre saisie. Il gère bien le code répétitif, mais vous devez tout de même vérifier les indices, le redimensionnement et la logique avant la compilation.

Résumez cet article avec :