我试图使用std::列表和std::unordered_map来存储有向无环图。每个列表元素存储一个节点键(无符号)及其子键。对于每个键,映射存储到列表中节点的迭代器:
std::list<std::pair<unsigned, std::list<decltype(lst.begin())>>> lst;
std::unordered_map<unsigned, decltype(lst.begin())> nodemap;
但是lst
的声明中的decltype(lst.begin())
会导致编译错误,因为lst
还没有定义。我可以用另一种方式定义lst
吗?
std::vector<unsigned, std::list<unsigned>> vec
可能会工作,其中list<unsigned>
包含到vec
的索引。不确定使用初始的std::list
是好还是坏。
写类。在类的定义中,它是一个不完全类型,这意味着您可以使用指向它的指针(或引用)。
子指针可以是非拥有的,映射拥有所有节点。
class Graph {
struct Node {
unsigned key;
std::vector<Node *> children;
};
std::unordered_map<unsigned, Node> nodes;
public:
// graph behaviours
};