upd
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
#+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.
|
||||
Reference in New Issue
Block a user