看一个例子

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。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐