- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的两个编译器(g++ 和 clang)都不会编译这个:
#include <vector>
struct A {
friend bool operator!=(A const& a1, A const& a2) { return false; }
};
int main()
{
std::vector<A> v1, v2;
return (v1 != v2);
}
错误是 STL_algobase.h 中某处的 !(*__first1 == *__first2)
无效。
换句话说,它完全忽略了 A
的现有运算符!=。不用说,如果我定义一个 operator==
然后它编译并工作。
按照标准应该是这样的吗?
如果是,为什么?
最佳答案
是因为the comparison operators想要一个 EqualityComparable
或 LessThanComparable
类型。
只有 ==
和 <
, 你可以导出等价的 !=
, <=
, >=
, 和 >
.换句话说,只需实现 2 个运算符,就可以获得所有 6 个比较(假设我没有在逻辑上犯错):
(a != b) is !(a == b)
(a <= b) is !(b < a)
(a >= b) is !(a < b)
(a > b) is (b < a)
标准容器通常使用它,并将使用 operator==
和 operator<
在进行类型比较时。
所以,是的,这是应该的。
至于问题的第二部分(为什么),我实际上并不完全确定为什么没有使用其他可用的运算符。 p>
关于c++ - 比较 vector 的不等式仅在 vector 元素上使用相等运算符。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953477/
所以我正在为“石头剪刀布蜥蜴 Spock”制作一个 Javascript 程序,并且使用 Math.random()。我需要使用if/else/else if's。有人可以帮我解决不平等问题吗?我
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
我们正在使用一个代码分析器,它具有这样的规则“不检查浮点相等性/不等性”。下面是给出的示例。 float f = 0.100000001f; // 0.1 double d = 0.100000000
C++20 为我们提供了飞船操作符,甚至允许我们 default它,使用默认语义生成所有比较,这将从我们的代码库中删除很多样板,太棒了! 但是平等和不平等呢? C++20 是否也为我们提供了一种方式
我今天在写一些 Python 时意识到可以将不等运算符写成 a!=b 或 not a==b。这让我很好奇: 这两种方式的行为是否完全相同,还是存在一些细微差别? 是否有理由使用一个而不是另一个?一种比
假设我们有几个线性不等式,比如 2x-5y=0 ,我们如何绘制这两个不等式?为了扩展这一点,如果我们有多个这样的不等式,我们如何尝试以图形方式解决这个问题? 最佳答案 你可以试试ImplicitEqu
为什么以下简化 不起作用,或者如何解决: >>> x = Symbol('x', real=True) >>> y = Symbol('y', real=True) >>> simplify(x -
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
这个问题在这里已经有了答案: Draw 3d Inequality on Matlab (1 个回答) matlab - plot inequality in 3d with surf (1 个回答
考虑使用这两个表和以下查询: SELECT Product. * FROM Product WHERE EXISTS ( SELECT * FROM Codes
我在笔记本界面中使用 Mathematica 7,我想重新排列一个不等式,以便在一侧获得某个变量。例如。 FullSimplify[x^3+L+r>3x^3+2r] 给 L > r + 2 x^3 但
我是一名优秀的程序员,十分优秀!