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;
    }





  • 相关阅读:
    九宫幻方
    K倍区间
    Excel地址
    2的n次幂
    最小乘积(基本型)
    基础练习 十六进制转八进
    java分析工具系列3:jstat (用于收集虚拟机个方面的运行数据)
    java分析工具系列2:jps(显示指定系统内所有的虚拟机进程)
    java分析工具系列1:入门
    oracle系列5:权限管理
  • 原文地址:https://www.cnblogs.com/ggzone/p/4052446.html
Copyright © 2011-2022 走看看