![](/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.