Apparemment ;-) les conteneurs standards offrent une certaine forme de garantie.
Quels types de garanties et quelles sont exactement les différences entre les différents types de conteneurs?
En travaillant à partir de la page SGI (à propos de STL ), j'ai trouvé ceci:
Container Types:
================
Container:
Forward Container
Reverse Container
Random Access Container
Sequence
Front Insert Sequence
Back Insert Sequence
Associative Container
Simple Associative Container
Pair Associative Container
Sorted Associative Container
Multiple Associative Container
Container Types mapped to Standard Containers
=============================================
std::vector: Sequence Back Sequence Forward/Reverse/Random Container
std::deque: Sequence Front/Back Sequence Forward/Reverse/Random Container
std::list: Sequence Front/Back Sequence Forward/Reverse Container
std::set: Sorted/Simple/Unique Associative Container Forward Container
std::map: Sorted/Pair/Unique Associative Container Forward Container
std::multiset: Sorted/Simple/Multiple Associative Container Forward Container
std::multimap: Sorted/Pair/Multiple Associative Container Forward Container
Container Guarantees:
=====================
Simp
or
For Rev Rand Front Back Assoc Sort Mult
Cont: Cont: Cont Cont: Sequ: Sequ: Sequ: Cont: Cont: Cont:
Copy Const: O(n)
Fill Const: O(n)
begin() O(1)
end() O(1)
rbegin() O(1)
rend() O(1)
front() O(1)
push_front() O(1)
pop_front() O(1)
push_back() O(1)
pop_back() O(1)
Insert() O(ln(n))
Insert: fill O(n)
Insert: range O(n) O(kln(n)+n)
size() O(n)
swap() O(1)
erase key O(ln(n))
erase element O(1)
erase range O(ln(n)+S)
count() O(log(n)+k)
find() O(ln(n))
equal range O(ln(n))
Lower Bound/Upper Bound O(ln(n))
Equality O(n)
InEquality O(n)
Element Access O(1)
c++
stl
containers
big-o
Martin York
la source
la source
Réponses:
J'ai trouvé la belle ressource Conteneurs C ++ standard . C'est probablement ce que vous recherchez tous.
VECTEUR
Constructeurs
Accesseurs
Modificateurs
Pour les autres conteneurs, reportez-vous à la page.
la source
Je ne connais rien de tel qu'un seul tableau qui vous permette de tous les comparer en un seul coup d'œil (je ne suis pas sûr qu'un tel tableau serait même réalisable).
Bien sûr, le document standard ISO énumère les exigences de complexité en détail, parfois dans divers tableaux assez lisibles, d'autres fois dans des puces moins lisibles pour chaque méthode spécifique.
La référence de la bibliothèque STL à l' adresse http://www.cplusplus.com/reference/stl/ fournit les exigences de complexité, le cas échéant.
la source
Une autre table de recherche rapide est disponible sur cette page github
Remarque: Cela ne prend pas en compte tous les conteneurs tels que, unordered_map, etc., mais reste agréable à regarder. C'est juste une version plus propre de ceci
la source