Anscheinend ;-) bieten die Standardbehälter irgendeine Form von Garantien.
Welche Art von Garantien und was genau sind die Unterschiede zwischen den verschiedenen Containertypen?
Auf der SGI-Seite (über STL ) habe ich mir Folgendes ausgedacht:
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
quelle
quelle
Antworten:
Ich habe die nette Ressource Standard C ++ Container gefunden . Wahrscheinlich ist es das, wonach Sie alle suchen.
VEKTOR
Konstruktoren
Accessoren
Modifikatoren
Weitere Informationen zu Containern finden Sie auf der Seite.
quelle
Mir ist so etwas wie eine einzelne Tabelle nicht bekannt, mit der Sie alle auf einen Blick vergleichen können (ich bin mir nicht sicher, ob eine solche Tabelle überhaupt machbar wäre).
Natürlich listet das ISO-Standarddokument die Komplexitätsanforderungen detailliert auf, manchmal in verschiedenen gut lesbaren Tabellen, manchmal in weniger lesbaren Aufzählungspunkten für jede bestimmte Methode.
Die Referenz zur STL-Bibliothek unter http://www.cplusplus.com/reference/stl/ enthält gegebenenfalls die Komplexitätsanforderungen.
quelle
Eine weitere Schnellnachschlagetabelle finden Sie auf dieser Github-Seite
Hinweis: Dies berücksichtigt nicht alle Container wie unordered_map usw., ist aber dennoch gut anzusehen. Es ist nur eine sauberere Version davon
quelle