本文主要是介绍C++ std::multiset find 返回值不对,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不是不对!而是下面的规则
find(elem) | 返回元素值为elem的第一个元素,如果没有返回end() |
【C++ STL】Set和Multiset - Memset - 博客园
#include <iostream>
#include <set>
using namespace std;class stru{public:stru(int a, int b): x(a), y(b){}int x;int y;
};bool operator<(const stru& a, const stru& b) //比较的是x的值
{return a.x < b.x;
}int main()
{//创建multiset<stru> st;//插入st.insert(stru(9, 40)); //添加成功,因为multiset可以有重复的值,也就是说有x = 10的stru也可以。st.insert(stru(9, 41)); //添加成功st.insert(stru(10, 42));st.insert(stru(10, 43));//查看for (auto it = st.rbegin(); it != st.rend(); it++) //10-40 9-43 9-45 8-40 7-35 6-30 5-25 4-20 3-15 2-10 1-5 0-0cout<<(*it).x<<"-"<<(*it).y<<" ";cout<<endl;// 查找for(int i=0; i < 10; i++){auto it = st.find(stru(10, 43)); //和上面一样,只会找x = 9的第一项。cout<<it->x<<" "<<it->y<<endl; // 返回10,42}}
并没有返回想要的元素
这篇关于C++ std::multiset find 返回值不对的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!