|
digraph ContainerDecision { |
|
graph [rankdir=TB, fontname="Arial", nodesep=0.2]; |
|
node [shape=box, style="rounded", fontname="Arial", width=2.5, height=0.5]; |
|
edge [fontname="Arial", fontsize=10]; |
|
|
|
/* Decision Tree */ |
|
Start [label="Start: Need a container?"]; |
|
KeyValue [label="Key-Value Pairs?" shape=diamond]; |
|
Unique [label="Unique Elements?" shape=diamond]; |
|
Ordered [label="Require Ordering?" shape=diamond]; |
|
MiddleInsert [label="Frequent Middle Insertions?" shape=diamond]; |
|
FrontBack [label="Frequent Front/Back Ops?" shape=diamond]; |
|
FixedSize [label="Fixed Size?" shape=diamond]; |
|
|
|
/* Key-Value Path */ |
|
Map [label="std::map\n(Sorted tree, O(log n))"]; |
|
UnorderedMap [label="std::unordered_map\n(Hash table, O(1))"]; |
|
|
|
/* Unique Elements Path */ |
|
Set [label="std::set\n(Sorted tree, O(log n))"]; |
|
UnorderedSet [label="std::unordered_set\n(Hash table, O(1))"]; |
|
|
|
/* Sequential Path */ |
|
List [label="std::list\n(O(1) splice, O(n) access)"]; |
|
Deque [label="std::deque\n(O(1) push/pop both ends)"]; |
|
Array [label="std::array\n(Stack-allocated)"]; |
|
Vector [label="std::vector\n(Default, cache-friendly)"]; |
|
|
|
/* Edges */ |
|
Start -> KeyValue; |
|
|
|
/* Key-Value Branch */ |
|
KeyValue -> Ordered [label="Yes"]; |
|
Ordered -> Map [label="Yes"]; |
|
Ordered -> UnorderedMap [label="No"]; |
|
|
|
KeyValue -> Unique [label="No"]; |
|
|
|
/* Unique Elements Branch */ |
|
Unique -> Ordered [label="Yes"]; |
|
Ordered -> Set [label="Yes"]; |
|
Ordered -> UnorderedSet [label="No"]; |
|
|
|
Unique -> MiddleInsert [label="No"]; |
|
|
|
/* Sequential Branch */ |
|
MiddleInsert -> List [label="Yes"]; |
|
MiddleInsert -> FrontBack [label="No"]; |
|
|
|
FrontBack -> Deque [label="Yes"]; |
|
FrontBack -> FixedSize [label="No"]; |
|
|
|
FixedSize -> Array [label="Yes"]; |
|
FixedSize -> Vector [label="No"]; |
|
|
|
/* Styling */ |
|
{rank=same; Map; UnorderedMap} |
|
{rank=same; Set; UnorderedSet} |
|
{rank=same; List; Deque} |
|
{rank=same; Array; Vector} |
|
} |
DeepSeek AI configuration: