我知道std::map
我们有一个键和一个对应的映射值。
现在在我提到的数据类型中,键的类型是std::set<long>
or std::pair<long, long>
。因此,请记住,地图中的值是基于键的排序值存储的,这是否有效。那么,std::map<std::set<long>, double>
AND std:map< std::pair<long, long>, double>
有效吗?
std::set
有一个operator<
在相同类型的两个集合之间执行字典顺序比较. 所以是的, anstd::set<T>
可以是地图的有效键。
Anstd::pair<T1,T2>
也有一个operator<
实现字典比较的方法,所以当两者都std::map<std::pair<T1, T2>, T3>
有效并且有一个小于比较实现严格的弱排序时也是有效的。所以要求更严格。两者和都需要比较作为映射的键,但它们不需要它来形成有效的对。因此,有效的对不一定构成映射的有效密钥。另一方面,您可以使用自己的比较标准来实例化地图。T1
T2
operator<
T1
T2
std::map<std::pair<T1, T2>, T3, Comp> m;
不,语法错误。你想要的是std::map<std::set<a_type_here>, double>
,所以为 set 添加模板参数。
注意a_type_here
应该有operator<
或者你需要使用std::set<a_type_here, compare_function>
你似乎想要的是: std::map<std::pair<long, long>, double> mapping
如何使用的示例; mapping[std::make_pair(1,2)] = 0.1;