要编写自定义比较函数来使用 stable_sort
函数进行稳定排序,我们需要定义一个函数,该函数接受两个参数并返回一个布尔值,用于指示哪个元素应排在前面。
以下是一个示例代码,演示如何编写一个自定义比较函数来对字符串长度进行稳定排序:
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
// 自定义比较函数,按字符串长度进行排序
bool compareLength(const std::string& str1, const std::string& str2) {
return str1.length() < str2.length();
}
int main() {
std::vector<std::string> strings = {"apple", "banana", "orange", "kiwi", "pear"};
std::cout << "Before sorting:" << std::endl;
for (const auto& str : strings) {
std::cout << str << " ";
}
std::cout << std::endl;
// 使用自定义比较函数进行稳定排序
std::stable_sort(strings.begin(), strings.end(), compareLength);
std::cout << "After sorting by length:" << std::endl;
for (const auto& str : strings) {
std::cout << str << " ";
}
std::cout << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为 compareLength
的自定义比较函数,该函数接受两个参数,即两个字符串的引用,然后比较它们的长度并返回比较结果。在 main
函数中,我们使用 stable_sort
函数并传入自定义比较函数,对 strings
向量进行稳定排序。排序后,我们打印出排序前后的结果,以验证排序是否正确。
通过编写类似上面的代码,您可以自定义比较函数来对各种类型的数据进行稳定排序。