Files
2026-05-04 08:12:20 +08:00

110 lines
3.0 KiB
Org Mode

#+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.