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





  • 相关阅读:
    阻止事件传播的常用方法
    原生JS获取元素的位置与尺寸
    FileReader 与canvas结合使用显示图片
    dot.js使用心得
    时间格式转换
    JS对象操作
    vue-awesome-swipe 基于vue使用的轮播组件 使用(改)
    vscode 插件推荐
    chrome 发送请求出现:Provisional headers are shown 提示
    手机端
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121362.html
Copyright © 2011-2022 走看看