为了账号安全,请及时绑定邮箱和手机立即绑定

c++ set里放结构体,然后find函数应该怎么用?

c++ set里放结构体,然后find函数应该怎么用?

米脂 2019-01-31 16:07:19
struct node{int a;string b;};bool operator<(const node& x,const node& y){if(x.a==y.a)return x.b<y.b;return x.a<y.a;}比如这样,我想要搜索所有a==1但是b为任意值的内容,我该怎么去用find()?如果a==1的情况有很多个,该如何处理?
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

你没说清楚,其实和你这个问题相关的有两个find函数,一个是stl的算法函数find,另一个是set类的成员函数find
非成员函数find是线性时间复杂度的,他挨个遍历你传给他的区间内的元素,用等于号运算符判断是不是相等。
而set的成员函数find是logn时间复杂度的,他利用set内部的数据结构(一般来说是红黑树)来寻找元素,依据是set内部的比较器,如果你没有显式给他比较器的话,默认就是小于号运算符
所以:这两个函数会得到不一样的结果,如果你定义的等于号和小于号是不一致的话。如果你要通过等于号查找的话,用非成员函数的find

查看完整回答
反对 回复 2019-03-10
  • 2 回答
  • 0 关注
  • 1992 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号