【发布时间】:2014-12-16 12:21:16
【问题描述】:
我有这个结构:
struct tuple{int node; float cost};
std::map<int,std::set<tuple>> graph;
我想知道如何更改地图容器的比较运算符,这样我就不会像示例一样插入具有重复值的键:
例如:
insert(1, {2,3})
insert(1, {2,4}) // not allowed
insert(1, {4,3}) // allowed
容器用于实现图,因此只要一个节点已经在另一个节点邻接中,它就不能再插入到该邻接中。 谢谢。
【问题讨论】:
-
您能在更高的层次上解释一下您想用这个数据结构做什么吗?
-
关键是“1”,不能有两次!
-
所有三个插入似乎都使用相同的键...
-
比较器只比较键(在您的情况下 -
ints),而不是值,您不能使用在确定顺序时考虑值的比较器 -
可能你需要一个向量<:set> 作为值,这样你就可以为同一个键保存多个集合。但请确保您不能再次插入相同的密钥。