Почему вызов моей функции неправильный? Я использовал функцию sort ()
раньше, но не в строки. Моя функция helper () неверна?
Поскольку помощник является функцией-членом Solution. Когда вы делаете это
sort(s.begin(),s.end(),helper);
вы в основном делаете это
sort(s.begin(),s.end(),this->helper);
3-й параметр для сортировки должен представлять собой отдельную функцию, предикат, функтор или лямбду. Он не может быть нестатическим членом класса
Этот код, вычищенный, работает. Обратите внимание на статику
class Solution {
public:
// using thread_local so that each thread
// has its own global variable.
static thread_local std::unordered_map<char, int> freq;
static bool helper(char c1, char c2) {
return (freq[c1]<freq[c2]);
}
std::string frequencySort(std::string s)
{
freq.clear();
for (char c : s)
++freq[c];
std::sort(s.begin(), s.end(), helper);
return s;
}
};
// definition
std::unordered_map<char, int> Solution::freq;