中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Expression:invalid comarator怎么辦

發布時間:2021-11-22 15:23:13 來源:億速云 閱讀:130 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Expression:invalid comarator怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

場景

        定義函數如下:

template <class T> struct greaterkey {//用于指定map當中的排序,遞減,map中默認遞增
 bool operator() (const T& x, const T& y) const
 {
  return x > y;
 }
};
template <class T> struct lesskey {
 bool operator() (const T& x, const T& y) const
 {
  return x < y;
 }
};

解決

vs2010后都是嚴格比較,相等的兩個元素,一定要返回false,可以看到STL的源碼:
[cpp]
template<class _Pr, class _Ty1, class _Ty2> inline
    bool _Debug_lt_pred(_Pr _Pred,
        _Ty1& _Left, _Ty2& _Right,
        _Dbfile_t _File, _Dbline_t _Line)
    {   // test if _Pred(_Left, _Right) and _Pred is strict weak ordering
    if (!_Pred(_Left, _Right))
        return (false);
    <strong>else if (_Pred(_Right, _Left))
        _DEBUG_ERROR2("invalid operator<", _File, _Line);</strong>
    return (true);
    }
如果left和right都一樣,STL就會報錯。。所以只能修改下自己的代碼,當相等的時候,就返回false了

template <class T> struct greaterkey {//用于指定map當中的排序,遞減,map中默認遞增
 bool operator() (const T& x, const T& y) const
 {

    if (x == y) return false;
      return x > y;
 }
};
template <class T> struct lesskey {
 bool operator() (const T& x, const T& y) const
 {

    if (x == y) return false;

      return x < y;
 }
};


感謝各位的閱讀!關于“Expression:invalid comarator怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海盐县| 长海县| 贞丰县| 禹城市| 青岛市| 湛江市| 广汉市| 泽普县| 报价| 山东| 岢岚县| 淳安县| 东海县| 扬州市| 丽水市| 苏尼特右旗| 星子县| 旌德县| 昌图县| 思南县| 西藏| 阜城县| 龙南县| 三台县| 瑞丽市| 公主岭市| 武冈市| 白河县| 余庆县| 腾冲县| 屏山县| 措勤县| 株洲市| 淮滨县| 光泽县| 苏尼特右旗| 清流县| 河东区| 阳西县| 抚顺县| 德庆县|