C++ 使用sort()函数时出错
请看一下我的代码C++ 使用sort()函数时出错,c++,c++11,C++,C++11,请看一下我的代码 #包括 使用名称空间std; bool dec(常量字符串和a、常量字符串和b) { 如果(a.长度()!=b.长度()) 返回a.length()>b.length(); 返回a>b; } int main(){ int n,计数=0; 无序的地图散列; cin>>n; 而(n--) { 字符串str; cin>>str; INTA; cin>>a; if(hash.find(str)=hash.end()) 计数++; 而(一) { 字符串ns; cin>>ns; 哈希[s
#包括
使用名称空间std;
bool dec(常量字符串和a、常量字符串和b)
{
如果(a.长度()!=b.长度())
返回a.length()>b.length();
返回a>b;
}
int main(){
int n,计数=0;
无序的地图散列;
cin>>n;
而(n--)
{
字符串str;
cin>>str;
INTA;
cin>>a;
if(hash.find(str)=hash.end())
计数++;
而(一)
{
字符串ns;
cin>>ns;
哈希[str]。推回(ns);
}
}
你的dec
不是你所想的
当您打开std
名称空间时,这就是危险所在
解决方案:
- 使用命名空间std;删除
(tx@Quentin)
- 将您的
dec
重命名为其他名称或
- 完全限定它:
排序(开始(v),结束(v),::dec)
请你的问题提供一个。你没有正确地完成函数部分。要么使用内联函数,要么使用你不想包含的lambdaDid
?@xtofl显然bits/stdc++.h
是一个包含每个标准头的函数。我很高兴没有意识到。嗯……解决方案:不要向全局文件中吐垃圾通过不使用namespace std;
?鉴于使用
指令的传染性传播,它似乎不是:pSee
#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;
}
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>)’