• 辅助性的“比较操作符”


    标准库中有四个template function,分别定义了!=,>,<=,>=四个比较操作符。它们都是利用操作符==和<完成的。

    namespace rel_ops
    		{	// nested namespace to hide relational operators from std
    template<class _Ty> inline
    	bool operator!=(const _Ty& _Left, const _Ty& _Right)
    	{	// test for inequality, in terms of equality
    	return (!(_Left == _Right));
    	}
    
    template<class _Ty> inline
    	bool operator>(const _Ty& _Left, const _Ty& _Right)
    	{	// test if _Left > _Right, in terms of operator<
    	return (_Right < _Left);
    	}
    
    template<class _Ty> inline
    	bool operator<=(const _Ty& _Left, const _Ty& _Right)
    	{	// test if _Left <= _Right, in terms of operator<
    	return (!(_Right < _Left));
    	}
    
    template<class _Ty> inline
    	bool operator>=(const _Ty& _Left, const _Ty& _Right)
    	{	// test if _Left >= _Right, in terms of operator<
    	return (!(_Left < _Right));
    	}
    		}
    只需定义<和==操作符,就可以使用它们。只要加上using namespace std::rel_ops,上述四个比较操作符就自动获得了定义。例如:

    class X
    {
    private:
    	int value;
    public:
    	X(int x) :value(x){};
    
    	bool operator==(const X& x)const
    	{
    		return value == x.value;
    	}
    	bool operator<(const X& x)const
    	{
    		return value < x.value;
    	}
    };
    int main()
    {
    	cout<<numeric_limits<int>::max()<<endl;
    	cout << boolalpha;  //以符号形式显示bool值
    	using namespace std::rel_ops;//引入命名空间使其他四个模板比较操作符有效
    	X x1(1), x2(2);
    	cout << "x1 == x2" << (x1 == x2) << endl;
    	cout << "x1 != x2" << (x1 != x2) << endl;
    	cout << "x1<x2" << (x1 < x2) << endl;
    	cout << "x1>x2" << (x1 > x2) << endl;
    
    	system("pause");
    	return 0;
    }





  • 相关阅读:
    让Controller支持对平铺参数执行@Valid数据校验
    @Validated和@Valid的区别?校验级联属性(内部类)
    Apache和Spring提供的StopWatch执行时间监视器
    Spring方法级别数据校验:@Validated + MethodValidationPostProcessor
    疑问
    第20章 链接详解(笔记)
    nm命令介绍
    使用Euclid算法求最大公约数
    Linux Man手册的使用示例
    VMware12 + Ubuntu16.04 虚拟磁盘扩容
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121362.html
Copyright © 2020-2023  润新知