sort — not stable. stable_sort — preserves order of equal elements.
std::sort:
1struct Person {2 std::string name;3 int age;4};56std::vector<Person> people = {7 {"Alice", 30},8 {"Bob", 25},9 {"Charlie", 30}10};1112std::sort(people.begin(), people.end(),13 [](const auto& a, const auto& b) {14 return a.age < b.age;15 }16);17// Alice and Charlie (both 30) may swap
std::stable_sort:
1std::stable_sort(people.begin(), people.end(),2 [](const auto& a, const auto& b) {3 return a.age < b.age;4 }5);6// Alice stays before Charlie (both 30)
When to use stable_sort: