STL中的Sort提示 invalid comparator

大城市里の小女人 提交于 2019-12-18 02:19:08

使用Sort进行排序,最后一个参数cmp函数,调用时,出现Invalid comparator错误,cmp函数如下

bool compare(Node* n1, Node* n2) {
    return n1->f <= n2->f;
}

 

如果两个元素相等,必须返回false。故改成如下代码,可以通过编绎。

bool compare(Node* n1, Node* n2) {
    return n1->f < n2->f;
}

 

因为_wfindnext在查找文件时,如果有文件“16.txt”和“5.txt”. 找出来的顺序是16.txt 5.txt.而不是期望的5.txt 16.txt

    bool sortFun(wstring s1, wstring s2)
    {

          if(s1.length()<s2.length())

                return true;

           else

               return s1<s2;

     }

vector<wstring> filelist;

std::sort(filelist.begin(), filelist.end(), sortFun)

这版报错:invalid comparator

改为

    bool sortFun(wstring s1, wstring s2)
    {
        return (s1.length() < s2.length() || (s1.length() <= s2.length() && s1 < s2));//升序排列  
    }

 

使用Sort进行排序,最后一个参数cmp函数,调用时,出现Invalid comparator错误,cmp函数如下

bool compare(Node* n1, Node* n2) {
    return n1->f <= n2->f;
}

 

如果两个元素相等,必须返回false。故改成如下代码,可以通过编绎。

bool compare(Node* n1, Node* n2) {
    return n1->f < n2->f;
}

 

因为_wfindnext在查找文件时,如果有文件“16.txt”和“5.txt”. 找出来的顺序是16.txt 5.txt.而不是期望的5.txt 16.txt

    bool sortFun(wstring s1, wstring s2)
    {

          if(s1.length()<s2.length())

                return true;

           else

               return s1<s2;

     }

vector<wstring> filelist;

std::sort(filelist.begin(), filelist.end(), sortFun)

这版报错:invalid comparator

改为

    bool sortFun(wstring s1, wstring s2)
    {
        return (s1.length() < s2.length() || (s1.length() <= s2.length() && s1 < s2));//升序排列  
    }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!