c++ - 如何在 C++ 中使用自定义比较函数对字符串进行排序?

标签 c++ string

<分区>

我需要对字符串中的字符进行排序,并且需要先显示小写字母。例如,“acDbA”排序后将变为“abcAD”。

下面的代码是我想出的:

bool compare(const char& c1, const char& c2) {
    if (c1 >= 'A' && c1 <= 'Z' && c2 >= 'a' && c2 <= 'z') return false;
    if (c2 >= 'A' && c2 <= 'Z' && c1 >= 'a' && c1 <= 'z') return true;
    return c1<c2;
}
void sortLetters(string &letters) {
    sort(letters.begin(), letters.end(), compare);
}

但是在 Visual Studio 中我得到了:

'sort': no matching overloaded function found   
'SortLetters::compare': non-standard syntax; use '&' to create a pointer to member  
'void std::sort(_RanIt,_RanIt)': expects 2 arguments - 3 provided   

我应该如何创建自定义比较函数来对字符串进行排序,我似乎无法在网上找到有关字符串排序的示例。

最佳答案

上面的代码在使用自由函数时编译得很好。在您的情况下,您使用的是一个对象的方法,它不是简单地可调用的。

您也可以传递仿函数对象或 lambda 对象。顺便说一下,由于 std::sort 是一个函数模板,比较器的确切参数是什么并不重要。唯一重要的是它能够获取这两个值并返回可以转换为 bool 值的内容。

关于c++ - 如何在 C++ 中使用自定义比较函数对字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44913437/

相关文章:

c++ - 无借位快速减法

c++ - 如何对 std::tuple 中的每个元素应用 constexpr 函数?

java - Java 替换字符串中的子字符串

c++ - VC++ Winforms 自动生成的项目无法调试 VS2010 : "This Project is out of Date"

c++ - 超高清 tx_waveforms

javascript - 如何使用 JS Regex 从 google 查询链接获取查询值? (Chrome 扩展)

android - 我怎样才能像这样解析这个 JSONArray/JSONObject?

python - 为什么 len ("".split ("")) 给出 1? Python

c++ - 按键时更改 GLFWwindow 的背景

c# - 随机化字符串中的字符列表,C#