一個常見的應用案例是在處理需要穩定排序的數據結構中,如有序的關聯容器(如std::map)或者需要保持原有元素順序的容器(如std::vector)。
例如,我們有一個存儲學生信息的結構體Student,其中包含學生的姓名和分數。我們需要按照學生的分數進行排序,但是在分數相同時需要保持原有的順序。這時就可以使用stable_sort來實現穩定排序。
#include <iostream>
#include <vector>
#include <algorithm>
struct Student {
std::string name;
int score;
};
bool compare(const Student& s1, const Student& s2) {
return s1.score < s2.score;
}
int main() {
std::vector<Student> students = {
{"Alice", 85},
{"Bob", 92},
{"Cathy", 85},
{"David", 78}
};
// 使用stable_sort按照學生的分數進行排序
std::stable_sort(students.begin(), students.end(), compare);
// 輸出排序后的結果
for (const auto& student : students) {
std::cout << student.name << " " << student.score << std::endl;
}
return 0;
}
在上面的例子中,我們使用stable_sort對學生信息按照分數進行排序,并且在分數相同時保持原有的順序。這樣就可以確保相同分數的學生在排序后仍然按照其在原有順序出現的順序排列。