![](/img/trans.png)
[英]c++ : convert std::map<std::string, double> to std::map<std::string_view, double>
[英]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<
实现字典比较,所以如果 T1
和T2
都少,则std::map<std::pair<T1, T2>, T3>
也有效- 比较运算符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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.