C++ std::stable_sort的用法

678 阅读1分钟

std::stable_sort 是 C++ 标准库中的一个排序算法,它对元素进行排序,并保持等价元素的相对顺序。这意味着如果两个元素相等,它们在排序后的序列中的相对顺序将与排序前的序列中的相对顺序相同。

下面是 std::stable_sort 的基本用法:

#include <algorithm>
#include <vector>

int main() {
    std::vector<int> v = {4, 2, 5, 3, 1};
    
    std::stable_sort(v.begin(), v.end());

    // 现在,v 包含 {1, 2, 3, 4, 5}
    
    return 0;
}

在这个例子中,我们使用 std::stable_sort 对一个整数向量进行排序。std::stable_sort 需要两个迭代器,表示要排序的范围。在这个例子中,我们使用 v.begin()v.end(),表示整个向量。

你还可以使用自定义比较函数来指定排序的顺序。例如,如果你想按降序排序,你可以这样做:

#include <algorithm>
#include <vector>

bool compare(int a, int b) {
    return a > b;
}

int main() {
    std::vector<int> v = {4, 2, 5, 3, 1};
    
    std::stable_sort(v.begin(), v.end(), compare);

    // 现在,v 包含 {5, 4, 3, 2, 1}
    
    return 0;
}

在这个例子中,我们定义了一个名为 compare 的函数,它接受两个整数并返回一个布尔值。然后,我们在调用 std::stable_sort 时将这个函数作为第三个参数传递。这将导致 std::stable_sort 使用这个函数来确定元素的顺序。