Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这个类会有严格的弱序吗_C++_Math_Stl - Fatal编程技术网

C++ 这个类会有严格的弱序吗

C++ 这个类会有严格的弱序吗,c++,math,stl,C++,Math,Stl,假设我有class/structFoo struct Foo { int a, b; bool operator< (Foo const& r){ return a < r.a; } bool operator== (Foo const& r){ return a==r.a&&b==r.b; } }; Foo bar = { 5, 1 }; Foo baz = { 5, 2 };

假设我有class/struct
Foo

struct Foo {
    int a, b;
    bool operator< (Foo const& r){
        return a < r.a;
    }
    bool operator== (Foo const& r){
        return a==r.a&&b==r.b;
    }
};
Foo bar = { 5, 1 };
Foo baz = { 5, 2 };
structfoo{
INTA,b;
bool操作员<(Foo const&r){
返回a
现在
bar==baz
为假,但是
bar
baz
也是假


请注意,这里的排序完全忽略
b
,但
b
是相等关系的一部分。

技术上是的,您是通过
a
成员直接排序的,这对于例如
std::set
应该很好。基本上,它们的行为类似于整数,即如果a
  • 对于所有x,x
  • 所有x≠ y、 如果x
  • 对于所有x、y和z,如果x
  • 对于所有x、y和z,如果x与y不可比,并且y是 与z不可比,那么x与z不可比(的传递性 等价性)

操作符类本身没有弱排序。严格弱序是一个二元函数,如
运算符。我认为它对于
A
具有严格弱序,只是因为
运算符的缘故。这个问题与语义有关。如果
!(你为什么不编写一个包含
Foo
s向量的程序,对它进行排序,然后看看它的顺序:)@Flame:不完全正确。仅仅因为在
操作符下,两件事是“等价的”。定义顺序的是关系/谓词,而不是类。