首页 > 解决方案 > C++ wrt字符串中的STL排序函数

问题描述

所以我一直在尝试根据字符的频率对字符串进行排序。但是我一直在使用的在线法官向我显示错误
Line 17: invalid use of non-static member function 'bool olution::helper(char, char)'
为什么对我的函数的调用是错误的?我以前用过这个sort()函数,但不是字符串。我的helper()功能不正确吗?

class Solution {
public:
unordered_map<char,int> freq;

bool helper(char c1,char c2){
    if(freq[c1]>freq[c2]) return false;
    else return true;
}
string frequencySort(string s) {

    for(char c:s)
    {
        freq[c]++;
    }

    sort(s.begin(),s.end(),helper);

    return s;
}
};

标签: c++sortingstlstl-algorithm

解决方案


使用 lambda 捕获this

sort(s.begin(),s.end(),[this](auto a, auto b) -> bool { return helper(a,b); });

推荐阅读