【发布时间】:2020-08-04 03:32:22
【问题描述】:
我收到一条错误消息,指出“与运算符不匹配-”。当我使用 sort() 函数时会发生这种情况。
#include <bits/stdc++.h>
using namespace std;
bool comp(pair<char, int> &a, pair<char, int> &b)
{
return a.first < b.first ? 1 : -1;
}
int main() {
// your code goes here
int t;
cin >> t;
while (t--)
{
string s;
cin >> s;
map<char, int> m;
for(int i = 0; i < s.size(); i++)
{
m[s[i]]++;
cout << (char)s[i];
}
cout << "hello";
sort(m.begin(), m.end(), comp);
}
return 0;
}
【问题讨论】:
-
地图默认按key排序
-
您的比较应该只是
return a.first < b.first;。-1对bool没有任何意义。如果您希望地图以不同方式排序,则需要在声明它时指定它,因为它是一个排序容器。不确定您在这里真正想要做什么。 -
除了已经指出的问题,您的比较函数应该采用 const 引用。
标签: c++ dictionary stl