我知道在std::map
我们有一个键和一个对应的映射值。
现在在我提到的数据类型中,键的类型是 std::set<long>
或 std::pair<long, long>
.因此,记住在 map 中值是基于键的排序值存储的是有效的。所以,是 std::map<std::set<long>, double>
和 std:map< std::pair<long, long>, double>
有效吗?
最佳答案
std::set
有一个 operator<
它在相同类型的两组之间执行词典顺序比较。所以是的,一个std::set<T>
可以是 map 的有效键。
安std::pair<T1,T2>
还有一个 operator<
实现字典顺序比较,所以 std::map<std::pair<T1, T2>, T3>
也将是有效的iff T1
和 T2
有一个小于比较operator<
实现严格的弱排序。所以要求比较严格。两者 T1
和 T2
需要比较成为 map 的键,但他们不需要它来形成有效的对。因此有效对不一定构成映射的有效键。另一方面,您可以使用自己的比较标准实例化 map 。
std::map<std::pair<T1, T2>, T3, Comp> m;
关于c++ - std::map<std::set<long>, double> 和 std:map< std::pair<long, long>, double> 是 C++ 中的有效数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15203040/