簡體   English   中英

C ++多集count()

[英]C++ Multiset count()

所以問題出在下面,我有一個多重集,在這里我使用std :: equal_to運算符比較元素,但是當我使用count()方法時,它說我多重集中的所有4個元素都等於我的counts參數。

std::multiset< std::string, std::equal_to< std::string > > mset;
mset.insert("C++");
mset.insert("SQL");
mset.insert("Jav");
mset.insert("C");

for(std::multiset<std::string>::iterator it = mset.begin(); it != mset.end(); ++it){
std::cout << *it << std::endl;
}

std::cout << std::endl;
std::cout << mset.count("STR");

輸出為:4

如果我理解正確,那么發生的事情是“ STR” ==“ C ++” ==“ SQL” ==“ Jav” ==“ C” == true。 這是我不明白的。

感謝您的幫助。

正如BobTFish在評論中已經說過的那樣,如果第一個參數“小於”(必須在第二個參數之前排序),則std::multisetCompare類型應該返回true 默認類型是std::less<Key>

對於存儲在std::multiset元素,您必須定義嚴格的弱排序關系 f(x, y) 嚴格弱排序的屬性之一是Irreflexivity,即f(x, x)必須為false 在嚴格的弱排序中違反了此屬性,並且您得到了一些未定義的結果。

您可能想要的是使用std::unordered_multiset代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM