簡體   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