有没有办法通过 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 的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");
相关文章:
- 如何获取两个 std::map 的公钥?
- 从std::map值中获取密钥的有效方法
- 我尝试使用MAP容器来映射资源,现在RESOURCEFILE正在获取所有信息.为什么
- 如何在 std::map 中从 std::vector of std::p air 中获取输入?
- C++ std::map:获取特定偏移量的密钥
- 从 Map 中获取具有给定值的元素
- 有没有办法通过 LEMON 图形库中的 Map 值获取节点?
- 从私人std :: Map中获取价值
- 将 map
转换为 void* 并返回并获取密钥 - 根据值的概率从 Map 获取随机键
- 获取传递给模板函数的 std::map 的值类型
- C++ std::map 如何在每次调用类对象时获取新的 map 对象
- 从 std::map 中的向量获取数据
- 从具有自定义类型的 C++ 中的 std::map 中获取值
- 获取std::map元素的有效方法是在容器中删除一个元素
- 如何使用std::map从模板中获取数据类型
- 如何根据std::map的值获取它们的前n个键
- 如何用std::map获取双向迭代器的索引
- 从任意Map获取指向mapped_type的指针或引用
- std::map 获取最低的 n 个元素时间