我正在嘗試使用 std::list 和 std::unordered_map 來存盤有向無環圖。每個串列元素存盤一個節點鍵(無符號)及其子節點。映射為每個鍵存盤一個指向串列中節點的迭代器:
std::list<std::pair<unsigned, std::list<decltype(lst.begin())>>> lst;
std::unordered_map<unsigned, decltype(lst.begin())> nodemap;
但是decltype(lst.begin())在lst結果的宣告中會出現編譯錯誤,因為lst尚未定義。我可以定義lst另一種方式嗎?
編輯:使用std::vector<unsigned, std::list<unsigned>> vec可能會起作用,其中list<unsigned>包含索引到vec. 不確定堅持初始std::list是更好還是更糟。
uj5u.com熱心網友回復:
寫類。在類的定義中,它是一個不完整的型別,這意味著您可以使用指向它的指標(或參考)。
子指標可以是非擁有的,映射擁有所有節點。
class Graph {
struct Node {
unsigned key;
std::vector<Node *> children;
};
std::unordered_map<unsigned, Node> nodes;
public:
// graph behaviours
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/312603.html
上一篇:模板推導和隱式建構式
下一篇:帶陣列的多載賦值運算子
