使用sort()函数时出错

时间:2017-12-22 12:44:52

标签: c++ c++11

请查看我的代码https://ideone.com/qk7GdO

#include <bits/stdc++.h>
using namespace std;
bool dec(const string &a,const string &b)
{
    if(a.length()!=b.length())
    return a.length()>b.length();
    return a>b;
}
int main() {
    int n,count=0;
    unordered_map<string,vector<string> >hash;
    cin>>n;
    while(n--)
    {
        string str;
        cin>>str;
        int a;
        cin>>a;
        if(hash.find(str)==hash.end())
        count++;
        while(a--)
        {
            string ns;
            cin>>ns;
            hash[str].push_back(ns);
        }
    }
    cout<<count<<endl;
    unordered_map<string,vector<string> >::iterator it;
    for(it=hash.begin();it!=hash.end();it++)
    {
        cout<<it->first;
        vector<string>v;
        for(int i=0;i<(it->second).size();i++)
        {
            string temp=(it->second)[i];
            v.push_back(temp);
        }
        sort(v.begin(),v.end(),dec);
        bool vis[v.size()];
        memset(vis,false,sizeof(vis));
        for(int i=0;i<v.size();i++)
        {
            if(!vis[i])
            {
                for(int j=i+1;j<v.size();j++)
                {
                    if(v[j]==v[i].substr(v[i].length()-v[j].length(),v[j].length()))
                    vis[j]=true;
                }
                cout<<" "<<v[i];
            }
        }
        cout<<endl;
    }


    return 0;
}

我得到sort()函数相关的编译错误,所以如果有人可以提供帮助,那将非常棒。 这是我得到的错误

error: no matching function for call to ‘sort(std::vector<std::__cxx11::basic_string<char> >::iterator, std::vector<std::__cxx11::basic_string<char> >::iterator, <unresolved overloaded function type>)’

提前致谢

1 个答案:

答案 0 :(得分:1)

您的dec不是您的想法。 (http://en.cppreference.com/w/cpp/io/manip/hex

当您打开std命名空间时,这就是危险。

解决方案:

  • 删除using namespace std;(tx @Quentin)
  • 将您的dec重命名为其他内容或
  • 完全符合条件:sort(begin(v), end(v), ::dec)