簡體   English   中英

是否可以通過LEMON圖形庫中的Map值獲取節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM