zoukankan      html  css  js  c++  java
  • std::sort排序时VS2013报错“Expression : invalid operator < ”的解决方法

    最近做一些算法需要用到对自定义数据结构进行排序,为了省事,使用了std::sort,使用的前提必须要要重载自定义数据结构的“<操作符”,数据结构自定义如下:

    class Object
    {
    public:
      int index;
      double p[3];
     
      inline bool operator<(const Object &obj) const
      {
        if(p[0] < obj.p[0])
           return true;
        if(p[1] < obj.p[1])
           return true;
        if(p[2] < obj.p[2])
           return true;
        return false;
      }
    };

    然后调用std::sort进行排序,代码如下:

    std::vector<Object>  objVec;
    std::sort(objVec.begin(), objVec.end());

    在VS2013编译器下编译时提示错误:Expression : invalid operator <

    解决方法为修改重载的operator<函数如下:

    inline bool operator<(const Object &obj) const
    {
      return p[0] != obj.p[0]?( p[0] < obj.p[0]):(p[1] != obj.p[1])?(p[1] < obj.p[1]):(p[0] < obj.p[0]);
    }

    编译通过,排序结果正确,但是具体原因现在还没有想明白。

  • 相关阅读:
    反射
    IO流
    集合(下)
    集合(上)
    泛型
    异常
    常用类
    内部类
    将博客搬至CSDN
    DBMS_ERRLOG记录DML错误日志(二)
  • 原文地址:https://www.cnblogs.com/xuhui24/p/6501511.html
Copyright © 2011-2022 走看看