std::rel_ops::operator!=,>,<=,>=

来自cppreference.com
< cpp‎ | utility

 
 
实用工具库
类型的支持 (basic types, RTTI, type traits)
动态内存管理
错误处理
程序实用工具
可变参数函数
日期和时间
函数对象
initializer_list(C++11)
bitset
hash(C++11)
关系运算符
原文:
Relational operators
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
rel_ops::operator!=
rel_ops::operator>
rel_ops::operator<=
rel_ops::operator>=
双和元组
原文:
Pairs and tuples
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
pair
tuple(C++11)
piecewise_construct_t(C++11)
piecewise_construct(C++11)
掉期,远期和移动
原文:
Swap, forward and move
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
swap
forward(C++11)
move(C++11)
move_if_noexcept(C++11)
declval(C++11)
 
在头文件 <utility> 中定义
template< class T >
bool operator!=( const T& lhs, const T& rhs );
(1)
template< class T >
bool operator>( const T& lhs, const T& rhs );
(2)
template< class T >
bool operator<=( const T& lhs, const T& rhs );
(3)
template< class T >
bool operator>=( const T& lhs, const T& rhs );
(4)
给定的一个用户定义的operator==operator<类型T的对象,实现其它比较运算符通常的语义.
原文:
Given a user-defined operator== and operator< for objects of type T, implements the usual semantics of other comparison operators.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
1)
实现operator!=operator==.
原文:
Implements operator!= in terms of operator==.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
2)
实现operator>operator<.
原文:
Implements operator> in terms of operator<.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
3)
实现operator<=operator<.
原文:
Implements operator<= in terms of operator<.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
4)
实现operator>=operator<.
原文:
Implements operator>= in terms of operator<.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 参数

lhs -
左边的参数
原文:
left-hand argument
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
rhs -
右手的说法
原文:
right-hand argument
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 返回值

1)
返回truelhs是“不等于”rhs.
原文:
Returns true if lhs is not equal to rhs.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
2)
如果true返回lhs是“更大的”比rhs.
原文:
Returns true if lhs is greater than rhs.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
3)
返回truelhs是“小于或等于”rhs.
原文:
Returns true if lhs is less or equal to rhs.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
4)
返回truelhs是“大于或等于”rhs.
原文:
Returns true if lhs is greater or equal to rhs.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 可能的实现

版本一
namespace rel_ops {
    template< class T >
    bool operator!=( const T& lhs, const T& rhs )
    {
        return !(lhs == rhs);
    }
}
版本二
namespace rel_ops {
    template< class T >
    bool operator>( const T& lhs, const T& rhs )
    {
        return rhs < lhs;
    }
}
版本三
namespace rel_ops {
    template< class T >
    bool operator<=( const T& lhs, const T& rhs )
    {
        return !(rhs < lhs);;
    }
}
版本四
namespace rel_ops {
    template< class T >
    bool operator>=( const T& lhs, const T& rhs )
    {
        return !(lhs < rhs);
    }
}

[编辑] 为例

#include <iostream>
#include <utility>
 
struct Foo {
    int n;
};
 
bool operator==(const Foo& lhs, const Foo& rhs)
{
    return lhs.n == rhs.n;
}
 
bool operator<(const Foo& lhs, const Foo& rhs)
{
    return lhs.n < rhs.n;
}
 
int main()
{
    Foo f1 = {1};
    Foo f2 = {2};
    using namespace std::rel_ops;
 
    std::cout << std::boolalpha;
    std::cout << "not equal?     : " << (bool) (f1 != f2) << '\n';
    std::cout << "greater?       : " << (bool) (f1 > f2) << '\n';
    std::cout << "less equal?    : " << (bool) (f1 <= f2) << '\n';
    std::cout << "greater equal? : " << (bool) (f1 >= f2) << '\n';
}

输出:

not equal?     : true
greater?       : false
less equal?    : true
greater equal? : false