#+title: C++ Containers * Container Concept: Common Interface :containers:concept: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504002 :END: ** Front What interface is shared by all C++ standard containers? ** Back - *Element access*: ~at~, ~operator[]~, ~front~, ~back~, ~data~ - *Iterators*: ~begin~, ~end~, ~cbegin~, ~cend~, ~rbegin~, ~rend~ - *Capacity*: ~empty~, ~size~, ~max_size~ - *Modifiers*: ~clear~, ~insert~, ~erase~, ~push_back~, ~pop_back~, ~resize~, ~swap~ * Do C++ containers inherit from a common base? :containers:concept:inheritance: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504003 :END: ** Front Do C++ containers (vector, list, map, etc.) inherit from a common base class? ** Back No. Standard containers are standalone classes. Shared interfaces come from conventions and C++20 concepts (~Container~, ~SequenceContainer~), not inheritance. * Sequence Containers :containers:sequence: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504004 :END: ** Front What are the C++ sequence containers? ** Back ~vector~, ~deque~, ~list~, ~forward_list~, ~array~ Sequence containers maintain insertion order. * Associative Containers :containers:associative: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504005 :END: ** Front What are the C++ associative containers? ** Back - *Ordered*: ~set~, ~multiset~, ~map~, ~multimap~ - *Unordered*: ~unordered_set~, ~unordered_multiset~, ~unordered_map~, ~unordered_multimap~ * Container Adapters :containers:adapter: :PROPERTIES: :ANKI_NOTE_ID: 1777826871054 :END: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504006 ** Front What are the C++ container adapters? ** Back ~stack~, ~queue~, ~priority_queue~ Adapters provide a restricted interface (e.g., LIFO for stack, FIFO for queue). * What does vector have that other containers don't? :containers:vector: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504007 :END: ** Front Which methods does ~vector~ have that other containers typically don't? ** Back ~reserve~, ~capacity~, ~shrink_to_fit~ These manage the internal memory buffer. * Unique methods on sequence containers (list, deque) :containers:sequence: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504008 :END: ** Front Which sequence containers support ~push_front~ and ~pop_front~? ** Back ~deque~ and ~list~ (not ~vector~) These containers support insertion/removal at both ends. * Unique methods on associative containers :containers:associative: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504009 :END: ** Front What tree-based methods do ordered associative containers have? ** Back ~find~, ~count~, ~lower_bound~, ~upper_bound~, ~equal_range~ These use tree traversal (BST behind the scenes). * Unique methods on unordered containers :containers:unordered: :PROPERTIES: :ANKI_NOTE_TYPE: Basic :ANKI_NOTE_ID: 20260504010 :END: ** Front What hash-specific methods do unordered containers have? ** Back ~bucket_count~, ~load_factor~, ~max_load_factor~, ~rehash~, ~reserve~ These manage hash table internals.