【发布时间】:2021-11-27 09:35:01
【问题描述】:
我正在尝试使用 std::list 和 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 是好是坏。
【问题讨论】:
-
我最近写了一个答案,其中两个列表的元素相互存储迭代器。我用
std::anystackoverflow.com/a/69412271/4117728,虽然可能有更方便的解决方案 -
我假设您在
std::list<decltype(lst.begin())中尝试定义lst? -
@doctorlove 是的,我现在刚刚更新了问题以澄清这一点。
标签: c++ templates data-structures graph stl