std:: vector
|
Défini dans l'en-tête
<vector>
|
||
|
template
<
class
T,
|
(1) | |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (depuis C++17) |
std::vector
est un conteneur séquentiel qui encapsule des tableaux de taille dynamique.
Sauf pour la
std::vector<bool>
spécialisation partielle, les éléments sont stockés de manière contiguë, ce qui signifie que les éléments peuvent être accédés non seulement via des itérateurs, mais également en utilisant des décalages vers des pointeurs classiques vers les éléments. Cela signifie qu'un pointeur vers un élément d'un vecteur peut être passé à toute fonction qui attend un pointeur vers un élément d'un tableau.
Le stockage du vecteur est géré automatiquement, étant étendu selon les besoins. Les vecteurs occupent généralement plus d'espace que les tableaux statiques, car plus de mémoire est allouée pour gérer la croissance future. Ainsi, un vecteur n'a pas besoin de se réallouer à chaque fois qu'un élément est inséré, mais seulement lorsque la mémoire supplémentaire est épuisée. La quantité totale de mémoire allouée peut être interrogée en utilisant la fonction capacity() . La mémoire supplémentaire peut être restituée au système via un appel à shrink_to_fit() [1] .
Les réallocations sont généralement des opérations coûteuses en termes de performance. La fonction reserve() peut être utilisée pour éliminer les réallocations si le nombre d'éléments est connu à l'avance.
La complexité (efficacité) des opérations courantes sur les vecteurs est la suivante :
- Accès aléatoire - constant 𝓞(1) .
- Insertion ou suppression d'éléments à la fin - constant amorti 𝓞(1) .
- Insertion ou suppression d'éléments - linéaire par rapport à la distance jusqu'à la fin du vecteur 𝓞(n) .
std::vector
(pour
T
autre que
bool
) satisfait aux exigences de
Container
,
AllocatorAwareContainer
(depuis C++11)
,
SequenceContainer
,
ContiguousContainer
(depuis C++17)
et
ReversibleContainer
.
Toutes les fonctions membres de
std::vector
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::vector
dans l'évaluation d'une expression constante.
Cependant,
|
(depuis C++20) |
-
↑
Dans libstdc++,
shrink_to_fit()n'est pas disponible en mode C++98.
Contenu
Paramètres du modèle
Spécialisations
La bibliothèque standard fournit une spécialisation de
Invalidation des itérateurs
Types membres
Fonctions membres
Fonctions non membres
Notes
Exemple
Exécuter ce code
#include <iostream> #include <vector> int main() { // Créer un vecteur contenant des entiers std::vector<int> v = {8, 4, 5, 9}; // Ajouter deux entiers supplémentaires au vecteur v.push_back(6); v.push_back(9); // Remplacer l'élément à la position 2 v[2] = -1; // Afficher le vecteur for (int n : v) std::cout << n << ' '; std::cout << '\n'; } Sortie : 8 4 -1 9 6 9 Rapports de défautsLes rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
Voir aussi
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||