Aparentemente ;-) los contenedores estándar ofrecen alguna forma de garantía.
¿Qué tipo de garantías y cuáles son exactamente las diferencias entre los diferentes tipos de contenedores?
Trabajando desde la página de SGI (sobre STL ) se me ocurrió esto:
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
fuente
fuente
Respuestas:
Encontré el buen recurso Standard C ++ Containers . Probablemente esto es lo que todos están buscando.
VECTOR
Constructores
Accesorios
Modificadores
Para otros contenedores, consulte la página.
fuente
No conozco nada como una sola tabla que te permita compararlos todos de un vistazo (no estoy seguro de que tal tabla sea factible).
Por supuesto, el documento estándar ISO enumera los requisitos de complejidad en detalle, a veces en varias tablas más legibles, otras veces en viñetas menos legibles para cada método específico.
Además, la referencia de la biblioteca STL en http://www.cplusplus.com/reference/stl/ proporciona los requisitos de complejidad cuando corresponda.
fuente
Otra tabla de búsqueda rápida está disponible en esta página de Github
Nota: Esto no considera todos los contenedores como, por ejemplo, unordered_map, etc., pero sigue siendo excelente para ver. Es solo una versión más limpia de esto
fuente