[英]Is there a way to get a node via a Map value in LEMON Graph library?
我正在使用LEMON圖形庫 ,想知道是否存在一種通過其對應的ListDigraph::NodeMap
的值接收ListDigraph::Node
x的有效方法?
我在想類似的東西:
lemon::ListDigraph lg;
lemon::ListDigraph::NodeMap<std::string> nodeColor(lg);
lemon::ListDigraph::Node n = lg.addNode();
nodeColor[n] = "red";
lemon::ListDigraph::Node m = lg.addNode();
nodeColor[m] = "green";
# now I'd like to have something like:
lemon::ListDigraph::Node x = nodeColor.getNodeFromColor("red");
LEMON中是否已經存在這樣的東西? 如果沒有其他方法可以編寫自己的地圖,該如何返回鍵(節點)? 我可以遍歷地圖的基礎值嗎?
不幸的是,無法從Lemon的NodeMap
獲取密鑰集(或相應的節點),請參閱NodeMap參考 。
也沒有辦法遍歷地圖。 解決此問題的最佳方法是在編寫自己的代碼時編寫自己的地圖,或使用其他幫助程序地圖(或類似的容器)。
據我所知,開箱即用檸檬是不可能的。 特別是因為NodeMap
不一定是一對一的。 沒有什么可以阻止您為所有節點提供值“ red”,因此向后查詢將沒有唯一的正確結果。
您也不能直接迭代NodeMap
的內容。 但是,您可以遍歷圖中的所有節點,並請求相應的值:
for (lemon::ListDigraph::NodeIt n(lg); n != lemon::INVALID; ++n) {
if (nodeColor[n] == "red) {
// do something
}
}
或者,正如您提到的,您可以定義自己的地圖:
#include <unordered_map>
lemon::ListDigraph lg;
lemon::ListDigraph::NodeMap<std::string> nodeColor(lg);
std::unordered_map<std::string, lemon::ListDigraph::Node> color2node;
lemon::ListDigraph::Node n = lg.addNode();
nodeColor[n] = "red";
color2node.emplace("red", n);
lemon::ListDigraph::Node m = lg.addNode();
nodeColor[m] = "green";
color2node.emplace("green", m);
lemon::ListDigraph::Node x = node2color.at("red");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.