c++ - 我是否需要定义 `operator==` 才能将我的类与标准容器一起使用?

标签 c++ standards overloading containers

我想澄清 C++ 标准,特别是它在第 20.1.3 节中说(我的解释)“对于类 T 和类 T 的一个实例 x,T(x) 必须等同于 x”让类(class)使用标准容器。

我找不到“等效”的定义。这是否意味着我必须将 operator== 定义为我的类的成员,以便 T(x) == x 返回 true?

最佳答案

等效是有意含糊的。 (为避免暗示 operator== 必须 之类的事情;一般情况下不需要。)

但是,如果两个事物的数据表示相同的对象,那么从概念上讲,这两个事物是等价的。如果一个类的数据在“复制”时可能不同,那么您确实需要制作一个 operator== (可能还有 operator<rel_ops )以确保“等效”的实现。 (实际上,确保可变数据不是“类的一部分”,可以这么说。)

通常最好不要走这样的路,因为你最终不得不修补很多东西以确保它正常工作。如果要复制某些东西,就让 if 被完全复制。这更有意义。

关于c++ - 我是否需要定义 `operator==` 才能将我的类与标准容器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278600/

相关文章:

c++ - SSL_CTX_new仅在具有分发版本的32位iOS设备中崩溃

c++ - C++ 标准是否对 float 的表示做了任何规定?

javascript - 根据标准,哪种 JS 函数声明语法是正确的?

java方法重载: abnormal behaviour

cuda - 具有相同签名的函数

c++ - 从文件读取时如何创建对象 vector ? [C++]

java - JNI native : java. lang.UnsatisfiedLinkError : no HelloWorld in java. 库.path

c++ - 如何在 C++ 中将矩阵市场文件转换为矩阵

c++ - std::tuple 作为模板参数?

c - 我如何获得 ANSI C 标准的副本?