当我使用STL集时,我应该重载==运算符吗?

hal*_*ack 3 c++ stl

当我想使用STL集来存储C++中的自定义对象时,有很多人说:你应该重载<operator,但如果我想使用find()方法,我认为它可能会使用==运算符来实现.可以任何人给我一些指示?

K-b*_*llo 8

标准库 set::find使用等价,而不是平等找到值.你并不需要提供operator ==,只是operator <(或者您指定的任何比较操作set,std::less是默认值).

如果您想知道如何找到您的元素,那么假设默认排序find(x)将返回以下元素e:

!( x < e || e < x )
Run Code Online (Sandbox Code Playgroud)

  • @ anthony-arnold:_RBTrees_是一个实现细节,与有​​序序列与_equivalence_而不是_equality_一起使用的事实无关. (3认同)