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
。
相关文章:
- 没有找到相关文章