c++ - std::map<std::set<long>, double> 和 std:map< std::pair<long, long>, double> 是 C++ 中的有效数据类型吗?

标签 c++ map

我知道在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 T1T2有一个小于比较operator<实现严格的弱排序。所以要求比较严格。两者 T1T2需要比较成为 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/

相关文章:

java - 如何从 HashMap 中检索键和值

c++ - c++中关于map的初值假设

.net - Winforms 的商业或开源映射控制

c++ - APPCRASH(不在调试时)和使用 QtCreator (C/C++) 的段错误

c++ - 为什么 IE 不监听 ActiveX 事件?

php - 如何在 PHP 中使用对象键创建类似数组的数据结构?

map - Clojure 基于优先级逻辑从 map 中提取值(value)

c++ - 如何计算整数链中使用了多少次数字?

c++ - 欧氏距离使用内在指令

c++ - 在 istreambuf_iterator 中使用 C++20 范围