在地图的值是向量对的地图中插入键值

阿格

我很难弄清楚如何在以下类型的地图中插入元素。鉴于:

std::map<Node*, std::vector<pair<Edge*, Node*> > > adjacencyMap;

,其中NodeEdge是结构。我想创建一个图,两个节点之间的每个连接都应存储在此地图中。每个节点可能与另一个节点具有多个连接。主要思想是,对于每个节点,可能会有一对边和节点对的列表,例如

node1 and node2 are connected through an edge12
node1 and node3 are connected through an edge13

adjacencyMap

node1 -> [(edge12, node2), (edge13, node3)]
node2 -> [(edge12, node1)]
node3 -> [(edge13, node1)]

我知道如何插入像这样的元素,(node1, pair(edge12,node2))但是我不知道如何插入(如果(node1, pair(edge12,node2))已经是一个元素)(node1, pair(edge13, node3)),例如

node1 -> [(edge12, node2), (edge13, node3)].

我如何实现我的意图?

提前致谢!

插口

我假设用于Node和的内存管理不在Edge其他地方,因为存储原始指针意味着没有人会照顾他们的管理。

operator[]std::unordered_map已经构造了一个默认值(如果它不那么尖锐的话),只需按下即可:

map[node1].emplace_back(edge13, node2);
map[node1].emplace_back(edge13, node3);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章