C++ 多集计数()

C++ Multiset count()

本文关键字:C++      更新时间:2023-10-16

所以问题如下,我有一个多重集,我使用 std::equal_to 运算符来比较元素,但是当我使用 count() 方法时,它说我的多重集中的所有 4 个元素都equal_to我的计数参数。

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 在评论中已经说过的那样,如果第一个参数"更少"(必须在第二个参数之前排序),Compare类型的std::multiset应该返回true。默认类型为 std::less<Key>

对于存储在std::multiset中的元素,您必须定义严格的弱排序关系f(x, y)。严格弱排序的属性之一是不可反身性,即f(x, x)必须false。在严格的弱排序中违反了此属性,并且得到了一些未定义的结果。

您可能想要的是改用std::unordered_multiset

相关文章:
  • 没有找到相关文章