繁体   English   中英

是std :: map <std::set<long> ,double&gt; AND std:map &lt;std :: pair <long, long> ,double&gt; C ++中的有效数据类型?

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

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

现在在我提到的数据类型中,键的类型为std::set<long>std::pair<long, long> 因此,这是有效的,请记住,地图值存储在键的排序值的基础上。 那么,是std::map<std::set<long>, double> AND std:map< std::pair<long, long>, double>有效吗?

std::set有一个operator< ,它在两组相同类型之间执行字典比较。 所以是的, std::set<T>可以是地图的有效密钥。

std::pair<T1,T2>也有一个operator<实现字典比较,所以如果 T1T2都少,则std::map<std::pair<T1, T2>, T3>也有效- 比较运算符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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM