Najwyraźniej ;-) standardowe kontenery dają jakąś formę gwarancji.
Jakie rodzaje gwarancji i jakie dokładnie są różnice między różnymi typami kontenerów?
Pracując ze strony SGI (o STL ) wymyśliłem to:
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
źródło
źródło
Odpowiedzi:
Znalazłem fajny zasób Standardowe kontenery C ++ . Prawdopodobnie tego właśnie szukacie.
WEKTOR
Konstruktorzy
Akcesoria
Modyfikatory
Informacje na temat innych kontenerów można znaleźć na stronie.
źródło
Nie znam czegoś takiego, jak pojedynczy stół, który pozwala porównać je wszystkie na pierwszy rzut oka (nie jestem pewien, czy taki stół byłby w ogóle możliwy).
Oczywiście dokument normy ISO szczegółowo wylicza wymagania dotyczące złożoności, czasami w różnych, raczej czytelnych tabelach, innym razem w mniej czytelnych punktach dla każdej konkretnej metody.
Również odniesienie do biblioteki STL pod adresem http://www.cplusplus.com/reference/stl/ zawiera wymagania dotyczące złożoności, jeśli to konieczne.
źródło
Inna tabela szybkiego wyszukiwania jest dostępna na tej stronie github
Uwaga: nie uwzględnia wszystkich kontenerów, takich jak unordered_map itp., Ale nadal świetnie się na nie patrzy. To jest po prostu czystsza wersja tego
źródło