我有一个自定义类型 A 的对象(一个具有许多成员的类,这些成员是 std::string、向量等,但没有原始指针)。
现在,我有一个 A 对象列表。
A tmpobj;
std::list<A> temp;
如果我想调用 std::list::remove 函数从我正在尝试的列表中删除特定对象
temp.remove(tmpobj)
现在,这是我的问题
- 我假设我需要重载 == 运算符。如果我不需要以及默认 == 是否有效,请告诉我。我不确定。我知道如果我没有任何基于 STL 的成员,它会起作用
我已经重载了 < 运算符。然而,我认为需要提供“==”运算符。这是正确的吗。一个参数可以是,我们可以将“==”确定为对 '<' 运算符的两次调用,例如
if(a < b || b < a) 返回 false 否则返回 true;
或者这没有完成,因为它进行 2 次调用效率低下,还是有任何其他原因。