C++ set find 找不到本来存在的元素
看一个例子C++的set中的find函数,具体什么原理啊,总不对呢-CSDN论坛我的情况是,set中可能存在多个相同的元素,然后重载了比较函数operator,其中写了=号,查询时候就会查不到本来存在的元素。将>=修改为>就好了。其原理是其实,set容器在判定已有元素a和新插入元素b是否相等时,是这么做的:1)将a作为左操作数,b作为有操作数,调用比较函数,并返回比较值 2)将b作为左
·
看一个例子
C++的set中的find函数,具体什么原理啊,总不对呢-CSDN论坛
我的情况是,set中可能存在多个相同的元素,然后重载了比较函数operator,其中写了=号,
查询时候就会查不到本来存在的元素。
将>=修改为>就好了。
其原理是
其实,set容器在判定已有元素a和新插入元素b是否相等时,是这么做的:1)将a作为左操作数,b作为有操作数,调用比较函数,并返回比较值 2)将b作为左操作数,a作为有操作数,再调用一次比较函数,并返回比较值。如果1、2两步的返回值都是false,则认为a、b是相等的,则b不会被插入set容器中;如果1、2两步的返回值都是true,则可能发生未知行为,因此,记住一个准则:永远让比较函数对相同元素返回false。
————————————————
版权声明:本文为CSDN博主「云洞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/janeqi1987/article/details/107245566
如果需要set存在多个相同的元素,可以使用multiset。
更多推荐
已为社区贡献8条内容
所有评论(0)