https://en.cppreference.com/w/cpp/container
The Containers library is a generic collection of class templates and algorithms that allow programmers to easily implement common data structures like queues, lists and stacks. There are three classes of containers – sequence containers, associative containers, and unordered associative containers – each of which is designed to support a different set of operations.
The container manages the storage space that is allocated for its elements and provides member functions to access them, either directly or through iterators (objects with properties similar to pointers).
Most containers have at least several member functions in common, and share functionalities. Which container is the best for the particular application depends not only on the offered functionality, but also on its efficiency for different workloads.
Sequence containers implement data structures which can be accessed sequentially.
Associative containers implement sorted data structures that can be quickly searched (
complexity).
Unordered associative containers implement unsorted (hashed) data structures that can be quickly searched (
amortized,
worst-case complexity).
Container adaptors provide a different interface for sequential containers.
A
is a non-owning view over a contiguous sequence of objects, the storage of which is owned by some other object.
Read-only methods never invalidate iterators or references. Methods which modify the contents of a container may invalidate iterators and/or references, as summarized in this table.
{]] | " | - ! rowspan="2" | Category ! rowspan="2" | Container | colspan="2" | After '''insertion''', are... | colspan="2" | After '''erasure''', are... ! rowspan="2" | Conditionally | - | '''iterators''' valid | '''references''' valid | '''iterators''' valid | '''references''' valid | - <!-- --> ! rowspan="8" | Sequence containers ! {{ltt | cpp/container/array}} | colspan="2" {{n/a}} | colspan="2" {{n/a}} | c_plus_plus_container | - ! rowspan="3" | {{ltt | cpp/container/vector}} | colspan="2" {{no}} | colspan="2" {{n/a}} | Insertion changed capacity | - | colspan="2" {{yes}} | colspan="2" {{yes}} | Before modified element(s) | - | colspan="2" {{no}} | colspan="2" {{no}} | At or after modified element(s) | - ! rowspan="2" | {{ltt | cpp/container/deque}} | rowspan="2" {{no}} | {{yes}} | colspan="2" {{maybe | Yes, except erased element(s)}} | Modified first or last element | - | {{no}} | colspan="2" {{no}} | Modified middle only | - ! {{ltt | cpp/container/list}} | colspan="2" {{yes}} | colspan="2" {{maybe | Yes, except erased element(s)}} | c_plus_plus_container | - ! {{ltt | cpp/container/forward_list}} | colspan="2" {{yes}} | colspan="2" {{maybe | Yes, except erased element(s)}} | c_plus_plus_container | - <!-- --> ! Associative containers ! {{ltt | cpp/container/set}}<br/><!-- -->{{ltt | cpp/container/multiset}}<br/><!-- -->{{ltt | cpp/container/map}}<br/><!-- -->{{ltt | cpp/container/multimap}} | colspan="2" {{yes}} | colspan="2" {{maybe | Yes, except erased element(s)}} | rowspan="1" | c_plus_plus_container | - <!-- --> ! rowspan="2" | Unordered associative containers ! rowspan="2" | {{ltt | cpp/container/unordered_set}}<br/><!-- -->{{ltt | cpp/container/unordered_multiset}}<br/><!-- -->{{ltt | cpp/container/unordered_map}}<br/><!-- -->{{ltt | cpp/container/unordered_multimap}} | {{no}} | rowspan="2" {{yes}} | colspan="2" {{n/a}}<!--N/A due to incompatibility between the condition "Insertion caused rehash" and this column's topic ("After erasure..."). {{maybe | Yes, except erased element(s)}}--> | Insertion caused rehash | - | {{yes}} | colspan="2" {{maybe | Yes, except erased element(s)}} | No rehash | } Here, '''insertion''' refers to any method which adds one or more elements to the container and '''erasure''' refers to any method which removes one or more elements from the container. * Examples of insertion methods are {{lc | insert}}, {{lc | emplace}}, {{lc | push_back}}, and {{lc | push_front}}. ** Note that {{lc | operator[]}} also counts, as it may insert an element into the map. * Examples of erasure methods are {{lc | erase}}, {{lc | pop_back}}, {{lc | pop_front}}, and {{lc | clear}}. ** {{tt | clear}} invalidates all iterators and references. Because it erases all elements, this technically complies with the rules above. The past-the-end iterator deserves particular mention. In general this iterator is invalidated as though it were a normal iterator to a non-erased element. So {{lc | end}} is never invalidated, {{lc | end}} is invalidated only on rehash, {{lc | an erasure which deletes the last element of a {{lc | deque}} ''does'' invalidate the past-the-end iterator, even though it is not an erased element of the container (or an element at all). Combined with the general rules for {{lc | deque}} iterators, the net result is that the only modifying operation which does ''not'' invalidate {{lc | end}} is an erasure which deletes the first element, but not the last. {{rrev | since=c++11 | All container functions can be called concurrently by different threads on different containers. More generally, the C++ standard library functions do not read objects accessible by other threads unless those objects are directly or indirectly accessible via the function arguments, including the this pointer. # All {{lc | const}} member functions can be called concurrently by different threads on the same container. In addition, the member functions {{tt | begin()}}, {{tt | end()}}, {{tt | rbegin()}}, {{tt | rend()}}, {{tt | front()}}, {{tt | back()}}, {{tt | data()}}, {{tt | find()}}, {{tt | lower_bound()}}, {{tt | upper_bound()}}, {{tt | equal_range()}}, {{tt | at()}}, and, except in associative containers, {{tt | operator[]}}, behave as {{lc | Different elements in the same container can be modified concurrently by different threads, except for the elements of {{lc | vector<bool>}} (for example, a vector of {{lc | Iterator operations (e.g. incrementing an iterator) read, but do not modify the underlying container, and may be executed concurrently with operations on other iterators on the same container, with the const member functions, or reads from the elements. Container operations that invalidate any iterators modify the container and cannot be executed concurrently with any operations on existing iterators even if those iterators are not invalidated. # Elements of the same container can be modified concurrently with those member functions that are not specified to access these elements. More generally, the C++ standard library functions do not read objects indirectly accessible through their arguments (including other elements of a container) except when required by its specification. # In any case, container operations (as well as algorithms, or any other C++ standard library functions) may be parallelized internally as long as this does not change the user-visible results (e.g. {{lc | transform}} may be parallelized, but not {{lc | for_each}} which is specified to visit each element of a sequence in order) }} ===Member function table=== { | c_plus_plus_container | - | bcbcff;" | c_plus_plus_container | - functions present in C++03 | - | bcffbc;" | c_plus_plus_container | - functions present since C++11 | - | ffeebc;" | c_plus_plus_container | - functions present since C++17 | - | ffdb99;" | c_plus_plus_container | - functions present since C++20 | "> { | " | - | colspan="2" | ! colspan="5" | Sequence containers ! colspan="4" | Associative containers ! colspan="4" | Unordered associative containers ! colspan="3" | Container adaptors | - ! colspan="2" | Header ! {{tt | {{header | array}}}} ! {{tt | {{header | vector}}}} ! {{tt | {{header | deque}}}} ! {{tt | {{header | forward_list}}}} ! {{tt | {{header | list}}}} ! colspan="2" | {{tt | {{header | set}}}} ! colspan="2" | {{tt | {{header | map}}}} ! colspan="2" | {{tt | {{header | unordered_set}}}} ! colspan="2" | {{tt | {{header | unordered_map}}}} ! {{tt | {{header | stack}}}} ! colspan="2" | {{tt | {{header | queue}}}} | - ! colspan="2" | Container ! {{cpp/container/table cell hn | /array }} ! {{cpp/container/table cell ho | /vector }} ! {{cpp/container/table cell ho | /deque }} ! {{cpp/container/table cell hn | /forward_list }} ! {{cpp/container/table cell ho | /list }} ! {{cpp/container/table cell ho | /set }} ! {{cpp/container/table cell ho | /multiset }} ! {{cpp/container/table cell ho | /map }} ! {{cpp/container/table cell ho | /multimap }} ! {{cpp/container/table cell hn | /unordered_set }} ! {{cpp/container/table cell hn | /unordered_multiset }} ! {{cpp/container/table cell hn | /unordered_map }} ! {{cpp/container/table cell hn | /unordered_multimap }} ! {{cpp/container/table cell ho | /stack }} ! {{cpp/container/table cell ho | /queue }} ! {{cpp/container/table cell ho | /priority_queue }} | - ! rowspan="4" | c_plus_plus_container | {{cpp/container/table cell lo | (constructor)}} | {{cpp/container/table cell | (implicit)}} | {{cpp/container/table cell o | /vector/vector }} | {{cpp/container/table cell o | /deque/deque }} | {{cpp/container/table cell n | /forward_list/forward_list }} | {{cpp/container/table cell o | /list/list }} | {{cpp/container/table cell o | /set/set }} | {{cpp/container/table cell o | /multiset/multiset }} | {{cpp/container/table cell o | /map/map }} | {{cpp/container/table cell o | /multimap/multimap }} | {{cpp/container/table cell n | /unordered_set/unordered_set }} | {{cpp/container/table cell n | /unordered_multiset/unordered_multiset }} | {{cpp/container/table cell n | /unordered_map/unordered_map }} | {{cpp/container/table cell n | /unordered_multimap/unordered_multimap }} | {{cpp/container/table cell o | /stack/stack }} | {{cpp/container/table cell o | /queue/queue }} | {{cpp/container/table cell o | /priority_queue/priority_queue }} | - <!-- ---> | {{cpp/container/table cell lo | (destructor)}} | {{cpp/container/table cell | (implicit)}} | {{cpp/container/table cell o | /vector/~vector }} | {{cpp/container/table cell o | /deque/~deque }} | {{cpp/container/table cell n | /forward_list/~forward_list }} | {{cpp/container/table cell o | /list/~list }} | {{cpp/container/table cell o | /set/~set }} | {{cpp/container/table cell o | /multiset/~multiset }} | {{cpp/container/table cell o | /map/~map }} | {{cpp/container/table cell o | /multimap/~multimap }} | {{cpp/container/table cell n | /unordered_set/~unordered_set }} | {{cpp/container/table cell n | /unordered_multiset/~unordered_multiset }} | {{cpp/container/table cell n | /unordered_map/~unordered_map }} | {{cpp/container/table cell n | /unordered_multimap/~unordered_multimap }} | {{cpp/container/table cell o | /stack/~stack }} | {{cpp/container/table cell o | /queue/~queue }} | {{cpp/container/table cell o | /priority_queue/~priority_queue }} | - <!-- --> | {{cpp/container/table cell lo | operator{{=}}}} | {{cpp/container/table cell | (implicit)}} | {{cpp/container/table cell o | /vector/operator{{=}} }} | {{cpp/container/table cell o | /deque/operator{{=}} }} | {{cpp/container/table cell n | /forward_list/operator{{=}} }} | {{cpp/container/table cell o | /list/operator{{=}} }} | {{cpp/container/table cell o | /set/operator{{=}} }} | {{cpp/container/table cell o | /multiset/operator{{=}} }} | {{cpp/container/table cell o | /map/operator{{=}} }} | {{cpp/container/table cell o | /multimap/operator{{=}} }} | {{cpp/container/table cell n | /unordered_set/operator{{=}} }} | {{cpp/container/table cell n | /unordered_multiset/operator{{=}} }} | {{cpp/container/table cell n | /unordered_map/operator{{=}} }} | {{cpp/container/table cell n | /unordered_multimap/operator{{=}} }} | {{cpp/container/table cell o | /stack/operator{{=}} }} | {{cpp/container/table cell o | /queue/operator{{=}} }} | {{cpp/container/table cell o | /priority_queue/operator{{=}} }} | - <!-- --> | {{cpp/container/table cell lo | assign}} | {{n/a | c_plus_plus_container | }} | {{cpp/container/table cell o | /vector/assign }} | {{cpp/container/table cell o | /deque/assign }} | {{cpp/container/table cell n | /forward_list/assign }} | {{cpp/container/table cell o | /list/assign }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="4" | Iterators | {{cpp/container/table cell lon | begin | cbegin}} | {{cpp/container/table cell nn | /array/begin | begin | cbegin}} | {{cpp/container/table cell on | /vector/begin | begin | cbegin}} | {{cpp/container/table cell on | /deque/begin | begin | cbegin}} | {{cpp/container/table cell nn | /forward_list/begin | begin | cbegin}} | {{cpp/container/table cell on | /list/begin | begin | cbegin}} | {{cpp/container/table cell on | /set/begin | begin | cbegin}} | {{cpp/container/table cell on | /multiset/begin | begin | cbegin}} | {{cpp/container/table cell on | /map/begin | begin | cbegin}} | {{cpp/container/table cell on | /multimap/begin | begin | cbegin}} | {{cpp/container/table cell nn | /unordered_set/begin | begin | cbegin}} | {{cpp/container/table cell nn | /unordered_multiset/begin | begin | cbegin}} | {{cpp/container/table cell nn | /unordered_map/begin | begin | cbegin}} | {{cpp/container/table cell nn | /unordered_multimap/begin | begin | cbegin}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lon | end | cend}} | {{cpp/container/table cell nn | /array/end | end | cend}} | {{cpp/container/table cell on | /vector/end | end | cend}} | {{cpp/container/table cell on | /deque/end | end | cend}} | {{cpp/container/table cell nn | /forward_list/end | end | cend}} | {{cpp/container/table cell on | /list/end | end | cend}} | {{cpp/container/table cell on | /set/end | end | cend}} | {{cpp/container/table cell on | /multiset/end | end | cend}} | {{cpp/container/table cell on | /map/end | end | cend}} | {{cpp/container/table cell on | /multimap/end | end | cend}} | {{cpp/container/table cell nn | /unordered_set/end | end | cend}} | {{cpp/container/table cell nn | /unordered_multiset/end | end | cend}} | {{cpp/container/table cell nn | /unordered_map/end | end | cend}} | {{cpp/container/table cell nn | /unordered_multimap/end | end | cend}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lon | rbegin | crbegin}} | {{cpp/container/table cell nn | /array/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /vector/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /deque/rbegin | rbegin | crbegin}} | {{n/a | }} | {{cpp/container/table cell on | /list/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /set/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /multiset/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /map/rbegin | rbegin | crbegin}} | {{cpp/container/table cell on | /multimap/rbegin | rbegin | crbegin}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lon | rend | crend}} | {{cpp/container/table cell nn | /array/rend | rend | crend}} | {{cpp/container/table cell on | /vector/rend | rend | crend}} | {{cpp/container/table cell on | /deque/rend | rend | crend}} | {{n/a | }} | {{cpp/container/table cell on | /list/rend | rend | crend}} | {{cpp/container/table cell on | /set/rend | rend | crend}} | {{cpp/container/table cell on | /multiset/rend | rend | crend}} | {{cpp/container/table cell on | /map/rend | rend | crend}} | {{cpp/container/table cell on | /multimap/rend | rend | crend}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="5" | Element <br> access | {{cpp/container/table cell lo | at}} | {{cpp/container/table cell n | /array/at }} | {{cpp/container/table cell o | /vector/at }} | {{cpp/container/table cell o | /deque/at }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /map/at }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_map/at }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | operator[]}} | {{cpp/container/table cell n | /array/operator_at | operator[]}} | {{cpp/container/table cell o | /vector/operator_at | operator[]}} | {{cpp/container/table cell o | /deque/operator_at | operator[]}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /map/operator_at | operator[]}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_map/operator_at | operator[]}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | data}} | {{cpp/container/table cell n | /array/data }} | {{cpp/container/table cell n | /vector/data }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | front}} | {{cpp/container/table cell n | /array/front }} | {{cpp/container/table cell o | /vector/front }} | {{cpp/container/table cell o | /deque/front }} | {{cpp/container/table cell n | /forward_list/front }} | {{cpp/container/table cell o | /list/front }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /queue/front }} | {{cpp/container/table cell o | /priority_queue/top | top }} | - <!-- --> | {{cpp/container/table cell lo | back}} | {{cpp/container/table cell n | /array/back }} | {{cpp/container/table cell o | /vector/back }} | {{cpp/container/table cell o | /deque/back }} | {{n/a | }} | {{cpp/container/table cell o | /list/back }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /stack/top | top}} | {{cpp/container/table cell o | /queue/back }} | {{n/a | }} | - ! rowspan="7" | Capacity | {{cpp/container/table cell lo | empty}} | {{cpp/container/table cell n | /array/empty }} | {{cpp/container/table cell o | /vector/empty }} | {{cpp/container/table cell o | /deque/empty }} | {{cpp/container/table cell n | /forward_list/empty }} | {{cpp/container/table cell o | /list/empty }} | {{cpp/container/table cell o | /set/empty }} | {{cpp/container/table cell o | /multiset/empty }} | {{cpp/container/table cell o | /map/empty }} | {{cpp/container/table cell o | /multimap/empty }} | {{cpp/container/table cell n | /unordered_set/empty }} | {{cpp/container/table cell n | /unordered_multiset/empty }} | {{cpp/container/table cell n | /unordered_map/empty }} | {{cpp/container/table cell n | /unordered_multimap/empty }} | {{cpp/container/table cell o | /stack/empty }} | {{cpp/container/table cell o | /queue/empty }} | {{cpp/container/table cell o | /priority_queue/empty }} | - <!-- --> | {{cpp/container/table cell lo | size}} | {{cpp/container/table cell n | /array/size }} | {{cpp/container/table cell o | /vector/size }} | {{cpp/container/table cell o | /deque/size }} | {{n/a | }} | {{cpp/container/table cell o | /list/size }} | {{cpp/container/table cell o | /set/size }} | {{cpp/container/table cell o | /multiset/size }} | {{cpp/container/table cell o | /map/size }} | {{cpp/container/table cell o | /multimap/size }} | {{cpp/container/table cell n | /unordered_set/size }} | {{cpp/container/table cell n | /unordered_multiset/size }} | {{cpp/container/table cell n | /unordered_map/size }} | {{cpp/container/table cell n | /unordered_multimap/size }} | {{cpp/container/table cell o | /stack/size }} | {{cpp/container/table cell o | /queue/size }} | {{cpp/container/table cell o | /priority_queue/size }} | - <!-- --> | {{cpp/container/table cell lo | max_size}} | {{cpp/container/table cell n | /array/max_size }} | {{cpp/container/table cell o | /vector/max_size }} | {{cpp/container/table cell o | /deque/max_size }} | {{cpp/container/table cell n | /forward_list/max_size }} | {{cpp/container/table cell o | /list/max_size }} | {{cpp/container/table cell o | /set/max_size }} | {{cpp/container/table cell o | /multiset/max_size }} | {{cpp/container/table cell o | /map/max_size }} | {{cpp/container/table cell o | /multimap/max_size }} | {{cpp/container/table cell n | /unordered_set/max_size }} | {{cpp/container/table cell n | /unordered_multiset/max_size }} | {{cpp/container/table cell n | /unordered_map/max_size }} | {{cpp/container/table cell n | /unordered_multimap/max_size }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | resize}} | {{n/a | }} | {{cpp/container/table cell o | /vector/resize }} | {{cpp/container/table cell o | /deque/resize }} | {{cpp/container/table cell n | /forward_list/resize }} | {{cpp/container/table cell o | /list/resize }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | capacity}} | {{n/a | }} | {{cpp/container/table cell o | /vector/capacity }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_set/bucket_count }} | {{cpp/container/table cell n | /unordered_multiset/bucket_count }} | {{cpp/container/table cell n | /unordered_map/bucket_count }} | {{cpp/container/table cell n | /unordered_multimap/bucket_count }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | reserve}} | {{n/a | }} | {{cpp/container/table cell o | /vector/reserve}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_set/reserve }} | {{cpp/container/table cell n | /unordered_multiset/reserve }} | {{cpp/container/table cell n | /unordered_map/reserve }} | {{cpp/container/table cell n | /unordered_multimap/reserve }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | shrink_to_fit}} | {{n/a | }} | {{cpp/container/table cell n | /vector/shrink_to_fit}} | {{cpp/container/table cell n | /deque/shrink_to_fit}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="16" | Modifiers | {{cpp/container/table cell lo | clear}} | {{n/a | }} | {{cpp/container/table cell o | /vector/clear }} | {{cpp/container/table cell o | /deque/clear }} | {{cpp/container/table cell n | /forward_list/clear }} | {{cpp/container/table cell o | /list/clear }} | {{cpp/container/table cell o | /set/clear }} | {{cpp/container/table cell o | /multiset/clear }} | {{cpp/container/table cell o | /map/clear }} | {{cpp/container/table cell o | /multimap/clear }} | {{cpp/container/table cell n | /unordered_set/clear }} | {{cpp/container/table cell n | /unordered_multiset/clear }} | {{cpp/container/table cell n | /unordered_map/clear }} | {{cpp/container/table cell n | /unordered_multimap/clear }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | insert}} | {{n/a | }} | {{cpp/container/table cell o | /vector/insert }} | {{cpp/container/table cell o | /deque/insert }} | {{cpp/container/table cell n | /forward_list/insert_after | insert_after}} | {{cpp/container/table cell o | /list/insert }} | {{cpp/container/table cell o | /set/insert }} | {{cpp/container/table cell o | /multiset/insert }} | {{cpp/container/table cell o | /map/insert }} | {{cpp/container/table cell o | /multimap/insert }} | {{cpp/container/table cell n | /unordered_set/insert }} | {{cpp/container/table cell n | /unordered_multiset/insert }} | {{cpp/container/table cell n | /unordered_map/insert }} | {{cpp/container/table cell n | /unordered_multimap/insert }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell l17 | insert_or_assign}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 17 | /map/insert_or_assign }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 17 | /unordered_map/insert_or_assign }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | emplace}} | {{n/a | }} | {{cpp/container/table cell n | /vector/emplace }} | {{cpp/container/table cell n | /deque/emplace }} | {{cpp/container/table cell n | /forward_list/emplace_after | emplace_after}} | {{cpp/container/table cell n | /list/emplace }} | {{cpp/container/table cell n | /set/emplace }} | {{cpp/container/table cell n | /multiset/emplace }} | {{cpp/container/table cell n | /map/emplace }} | {{cpp/container/table cell n | /multimap/emplace }} | {{cpp/container/table cell n | /unordered_set/emplace }} | {{cpp/container/table cell n | /unordered_multiset/emplace }} | {{cpp/container/table cell n | /unordered_map/emplace }} | {{cpp/container/table cell n | /unordered_multimap/emplace }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | emplace_hint}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /set/emplace_hint }} | {{cpp/container/table cell n | /multiset/emplace_hint }} | {{cpp/container/table cell n | /map/emplace_hint }} | {{cpp/container/table cell n | /multimap/emplace_hint }} | {{cpp/container/table cell n | /unordered_set/emplace_hint }} | {{cpp/container/table cell n | /unordered_multiset/emplace_hint }} | {{cpp/container/table cell n | /unordered_map/emplace_hint }} | {{cpp/container/table cell n | /unordered_multimap/emplace_hint }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell l17 | try_emplace}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 17 | /map/try_emplace }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 17 | /unordered_map/try_emplace }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | erase}} | {{n/a | }} | {{cpp/container/table cell o | /vector/erase }} | {{cpp/container/table cell o | /deque/erase }} | {{cpp/container/table cell n | /forward_list/erase_after | erase_after}} | {{cpp/container/table cell o | /list/erase }} | {{cpp/container/table cell o | /set/erase }} | {{cpp/container/table cell o | /multiset/erase }} | {{cpp/container/table cell o | /map/erase }} | {{cpp/container/table cell o | /multimap/erase }} | {{cpp/container/table cell n | /unordered_set/erase }} | {{cpp/container/table cell n | /unordered_multiset/erase }} | {{cpp/container/table cell n | /unordered_map/erase }} | {{cpp/container/table cell n | /unordered_multimap/erase }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | push_front}} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /deque/push_front }} | {{cpp/container/table cell n | /forward_list/push_front }} | {{cpp/container/table cell o | /list/push_front }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | emplace_front}} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /deque/emplace_front }} | {{cpp/container/table cell n | /forward_list/emplace_front }} | {{cpp/container/table cell n | /list/emplace_front }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | pop_front}} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /deque/pop_front }} | {{cpp/container/table cell n | /forward_list/pop_front }} | {{cpp/container/table cell o | /list/pop_front }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /queue/pop }} | {{cpp/container/table cell o | /priority_queue/pop}} | - <!-- --> | {{cpp/container/table cell lo | push_back}} | {{n/a | }} | {{cpp/container/table cell o | /vector/push_back }} | {{cpp/container/table cell o | /deque/push_back }} | {{n/a | }} | {{cpp/container/table cell o | /list/push_back }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /stack/push}} | {{cpp/container/table cell o | /queue/push}} | {{cpp/container/table cell o | /priority_queue/push}} | - <!-- --> | {{cpp/container/table cell ln | emplace_back}} | {{n/a | }} | {{cpp/container/table cell n | /vector/emplace_back }} | {{cpp/container/table cell n | /deque/emplace_back }} | {{n/a | }} | {{cpp/container/table cell n | /list/emplace_back }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /stack/emplace}} | {{cpp/container/table cell n | /queue/emplace}} | {{cpp/container/table cell n | /priority_queue/emplace}} | - <!-- --> | {{cpp/container/table cell lo | pop_back}} | {{n/a | }} | {{cpp/container/table cell o | /vector/pop_back }} | {{cpp/container/table cell o | /deque/pop_back }} | {{n/a | }} | {{cpp/container/table cell o | /list/pop_back }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /stack/pop}} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | swap}} | {{cpp/container/table cell n | /array/swap }} | {{cpp/container/table cell o | /vector/swap }} | {{cpp/container/table cell o | /deque/swap }} | {{cpp/container/table cell n | /forward_list/swap }} | {{cpp/container/table cell o | /list/swap }} | {{cpp/container/table cell o | /set/swap }} | {{cpp/container/table cell o | /multiset/swap }} | {{cpp/container/table cell o | /map/swap }} | {{cpp/container/table cell o | /multimap/swap }} | {{cpp/container/table cell n | /unordered_set/swap }} | {{cpp/container/table cell n | /unordered_multiset/swap }} | {{cpp/container/table cell n | /unordered_map/swap }} | {{cpp/container/table cell n | /unordered_multimap/swap }} | {{cpp/container/table cell n | /stack/swap }} | {{cpp/container/table cell n | /queue/swap }} | {{cpp/container/table cell n | /priority_queue/swap }} | - <!-- --> | {{cpp/container/table cell lo | merge }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/merge }} | {{cpp/container/table cell o | /list/merge }} | {{cpp/container/table cell 17 | /set/merge }} | {{cpp/container/table cell 17 | /multiset/merge }} | {{cpp/container/table cell 17 | /map/merge }} | {{cpp/container/table cell 17 | /multimap/merge }} | {{cpp/container/table cell 17 | /unordered_set/merge }} | {{cpp/container/table cell 17 | /unordered_multiset/merge }} | {{cpp/container/table cell 17 | /unordered_map/merge }} | {{cpp/container/table cell 17 | /unordered_multimap/merge }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell l17 | extract}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 17 | /set/extract }} | {{cpp/container/table cell 17 | /multiset/extract }} | {{cpp/container/table cell 17 | /map/extract }} | {{cpp/container/table cell 17 | /multimap/extract }} | {{cpp/container/table cell 17 | /unordered_set/extract }} | {{cpp/container/table cell 17 | /unordered_multiset/extract }} | {{cpp/container/table cell 17 | /unordered_map/extract }} | {{cpp/container/table cell 17 | /unordered_multimap/extract }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="6" | List operations | {{cpp/container/table cell lo | splice }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/splice_after | splice_after }} | {{cpp/container/table cell o | /list/splice }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | remove }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/remove }} | {{cpp/container/table cell o | /list/remove }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | remove_if }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/remove | remove_if }} | {{cpp/container/table cell o | /list/remove | remove_if }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | reverse }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/reverse }} | {{cpp/container/table cell o | /list/reverse }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | unique }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/unique }} | {{cpp/container/table cell o | /list/unique }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | sort }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /forward_list/sort }} | {{cpp/container/table cell o | /list/sort }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="6" | Lookup | {{cpp/container/table cell lo | count}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/count }} | {{cpp/container/table cell o | /multiset/count }} | {{cpp/container/table cell o | /map/count }} | {{cpp/container/table cell o | /multimap/count }} | {{cpp/container/table cell n | /unordered_set/count }} | {{cpp/container/table cell n | /unordered_multiset/count }} | {{cpp/container/table cell n | /unordered_map/count }} | {{cpp/container/table cell n | /unordered_multimap/count }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | find}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/find }} | {{cpp/container/table cell o | /multiset/find }} | {{cpp/container/table cell o | /map/find }} | {{cpp/container/table cell o | /multimap/find }} | {{cpp/container/table cell n | /unordered_set/find }} | {{cpp/container/table cell n | /unordered_multiset/find }} | {{cpp/container/table cell n | /unordered_map/find }} | {{cpp/container/table cell n | /unordered_multimap/find }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell l20 | contains}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell 20 | /set/contains }} | {{cpp/container/table cell 20 | /multiset/contains }} | {{cpp/container/table cell 20 | /map/contains }} | {{cpp/container/table cell 20 | /multimap/contains }} | {{cpp/container/table cell 20 | /unordered_set/contains }} | {{cpp/container/table cell 20 | /unordered_multiset/contains }} | {{cpp/container/table cell 20 | /unordered_map/contains }} | {{cpp/container/table cell 20 | /unordered_multimap/contains }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | lower_bound}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/lower_bound }} | {{cpp/container/table cell o | /multiset/lower_bound }} | {{cpp/container/table cell o | /map/lower_bound }} | {{cpp/container/table cell o | /multimap/lower_bound }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | upper_bound}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/upper_bound }} | {{cpp/container/table cell o | /multiset/upper_bound }} | {{cpp/container/table cell o | /map/upper_bound }} | {{cpp/container/table cell o | /multimap/upper_bound }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | equal_range}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/equal_range }} | {{cpp/container/table cell o | /multiset/equal_range }} | {{cpp/container/table cell o | /map/equal_range }} | {{cpp/container/table cell o | /multimap/equal_range }} | {{cpp/container/table cell n | /unordered_set/equal_range }} | {{cpp/container/table cell n | /unordered_multiset/equal_range }} | {{cpp/container/table cell n | /unordered_map/equal_range }} | {{cpp/container/table cell n | /unordered_multimap/equal_range }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! rowspan="4" | Observers | {{cpp/container/table cell lo | key_comp}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/key_comp }} | {{cpp/container/table cell o | /multiset/key_comp }} | {{cpp/container/table cell o | /map/key_comp }} | {{cpp/container/table cell o | /multimap/key_comp }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell lo | value_comp}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell o | /set/value_comp }} | {{cpp/container/table cell o | /multiset/value_comp }} | {{cpp/container/table cell o | /map/value_comp }} | {{cpp/container/table cell o | /multimap/value_comp }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | hash_function}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_set/hash_function }} | {{cpp/container/table cell n | /unordered_multiset/hash_function }} | {{cpp/container/table cell n | /unordered_map/hash_function }} | {{cpp/container/table cell n | /unordered_multimap/hash_function }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - <!-- --> | {{cpp/container/table cell ln | key_eq}} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | {{cpp/container/table cell n | /unordered_set/key_eq }} | {{cpp/container/table cell n | /unordered_multiset/key_eq }} | {{cpp/container/table cell n | /unordered_map/key_eq }} | {{cpp/container/table cell n | /unordered_multimap/key_eq }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! Allocator | {{cpp/container/table cell lo | get_allocator}} | {{n/a | }} | {{cpp/container/table cell o | /vector/get_allocator }} | {{cpp/container/table cell o | /deque/get_allocator }} | {{cpp/container/table cell n | /forward_list/get_allocator }} | {{cpp/container/table cell o | /list/get_allocator }} | {{cpp/container/table cell o | /set/get_allocator }} | {{cpp/container/table cell o | /multiset/get_allocator }} | {{cpp/container/table cell o | /map/get_allocator }} | {{cpp/container/table cell o | /multimap/get_allocator }} | {{cpp/container/table cell n | /unordered_set/get_allocator }} | {{cpp/container/table cell n | /unordered_multiset/get_allocator }} | {{cpp/container/table cell n | /unordered_map/get_allocator }} | {{cpp/container/table cell n | /unordered_multimap/get_allocator }} | {{n/a | }} | {{n/a | }} | {{n/a | }} | - ! colspan="2" | Container ! {{cpp/container/table cell hn | /array }} ! {{cpp/container/table cell ho | /vector }} ! {{cpp/container/table cell ho | /deque }} ! {{cpp/container/table cell hn | /forward_list }} ! {{cpp/container/table cell ho | /list }} ! {{cpp/container/table cell ho | /set }} ! {{cpp/container/table cell ho | /multiset }} ! {{cpp/container/table cell ho | /map }} ! {{cpp/container/table cell ho | /multimap }} ! {{cpp/container/table cell hn | /unordered_set }} ! {{cpp/container/table cell hn | /unordered_multiset }} ! {{cpp/container/table cell hn | /unordered_map }} ! {{cpp/container/table cell hn | /unordered_multimap }} ! {{cpp/container/table cell ho | /stack }} ! {{cpp/container/table cell ho | /queue }} ! {{cpp/container/table cell ho | /priority_queue }} | - | colspan="2" | ! colspan="5" | Sequence containers ! colspan="4" | Associative containers ! colspan="4" | Unordered associative containers ! colspan="3" | Container adaptors | {{named_req | Container}} {{langlinks | ar | de | es | fr | it | ja | pl | pt | ru | tr | [[zh}}