std::vector
| Déclaré dans l'en-tête <vector>
|
||
template< class T, class Allocator = std::allocator<T> > class vector; |
||
std::vector est un conteneur séquentiel qui encapsule les tableaux de taille dynamique .
Les éléments sont stockés de façon contigüe, ce qui signifie que les éléments sont accessibles non seulement via les itérateurs, mais aussi à partir des pointeurs classiques sur un élément. Cela signifie qu'un pointeur sur un élément d'un vector peut être passé à une fonction qui attend un pointeur sur un élément d'un tableau.
Le stockage du vector est pris en charge automatiquement, pouvant être augmenté ou diminué au besoin. Les vector occupent généralement plus d'espace que les tableaux statiques, du fait que de la mémoire supplémentaire est allouée pour anticiper un accroissement futur. Ainsi, un vector n'a pas besoin de ré-allouer la mémoire chaque fois qu'un élément est inséré, mais seulement lorsque la mémoire additionnelle est épuisée. La quantité totale de mémoire allouée peut être obtenue en utilisant la fonction capacity(). La mémoire additionnelle peut être rendue au système via un appel à shrink_to_fit().
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 lorsque la quantité maximum d'éléments est connue d'avance.
La complexité (efficacité) des opérations courante sur les vector sont les suivantes :
- Accès aléatoire - constante O(1)
- Insertion ou le retrait d'éléments à la fin - constante amortie O(1)
- Insertion ou le retrait d'éléments - linéaire O(n)
std::vector répond aux exigences des concepts Container, AllocatorAwareContainer, SequenceContainer et ReversibleContainer.