Видимо ;-) стандартные контейнеры предоставляют некоторую форму гарантий.
Какого рода гарантии и каковы различия между различными типами контейнеров?
Работая со страницы SGI (о STL ), я придумал это:
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
Мартин Йорк
источник
источник
Ответы:
Я нашел хороший ресурс Стандартные контейнеры C ++ . Вероятно, это то, что вы все ищете.
ВЕКТОР
Конструкторы
Accessors
Модификаторы
Для других контейнеров, обратитесь к странице.
источник
Я не знаю ничего похожего на одну таблицу, которая позволяет сравнивать их все за один раз (я не уверен, что такая таблица была бы даже выполнима).
Конечно, стандартный документ ИСО подробно перечисляет требования к сложности, иногда в различных довольно читаемых таблицах, иногда в менее читаемых пунктах для каждого конкретного метода.
Также ссылка на библиотеку STL по адресу http://www.cplusplus.com/reference/stl/ содержит требования к сложности, где это необходимо.
источник
Еще одна таблица быстрого просмотра доступна на этой странице GitHub
Примечание: это не учитывает все контейнеры, такие как, unordered_map и т. Д., Но все равно замечательно. Это просто более чистая версия этого
источник