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





  • 相关阅读:
    MIX11大会WP7主题演讲中文字幕版
    日本战神——源义经
    System.Web.HttpUtility for .Net Compact Framework
    VS2010 SP1
    <如何成为一个成功的职业经理人>读书笔记2
    <左手曾国藩,右手胡雪岩>读书笔记
    <福布斯荐75本经商必读06基业长青>读书笔记
    <中国人聪明之道>读书笔记
    <浮沉>读书笔记
    <79个潜规则:改变生活的心理学法则>读书笔记
  • 原文地址:https://www.cnblogs.com/ggzone/p/4052446.html
Copyright © 2011-2022 走看看