std::map<std::set, double> AND std:<long>map< std::p air<long, long>, double>

Is std::map<std::set<long>, double> AND std:map< std::pair<long, long>, double> a valid data type in C++?

本文关键字:gt std lt long double map air set AND      更新时间:2023-10-16

我知道在std::map中我们有一个键和对应的映射值。

现在在我提到的数据类型中,key的类型将是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>可以是映射的有效键。

std::pair<T1,T2>也有一个operator<实现字典顺序比较,所以std::map<std::pair<T1, T2>, T3>也是有效的如果 T1T2都有一个小于比较operator<实现严格的弱排序。所以要求更严格了。T1T2都需要比较作为映射的键,但它们不需要它来形成一个有效的对。因此,有效的对不一定构成映射的有效密钥。另一方面,您可以使用自己的比较标准实例化映射。

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;