zoukankan      html  css  js  c++  java
  • 辅助性的“比较操作符”

    标准库中有四个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;
    }





  • 相关阅读:
    面试问题 集锦
    减少 lwip 消耗 的 RAM
    Blocking Master Example QT 自带 的 serial 即 串口 例子
    32位 的变量 用于表示 ms ,可以表示多少天那?
    centos 腾讯云 今天买了 18个月
    Linux BLE 基于 树莓派
    树莓派 4G模块 PPP 拨号 NDIS 拨号
    linux备份还原命令
    centos7中/tmp文件保存天数
    centos7查看可登陆用户
  • 原文地址:https://www.cnblogs.com/ggzone/p/4052446.html
Copyright © 2011-2022 走看看