请查看我的代码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>)’
提前致谢
答案 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)