std::stable_sort
Актуально для C++23.
#include <algorithm>
Актуально на 2024-03-13.
Define overload #1
template<class RandomAccessIterator> void stable_sort(RandomAccessIterator first, RandomAccessIterator last);
Сортирует диапазон [first, last] в порядке возрастания так, что сохраняется порядок следования эквивалентных элементов.
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class RandomAccessIterator> void stable_sort(ExecutionPolicy&& exec, RandomAccessIterator first, RandomAccessIterator last);
TODO
Example, possible implementation
Define overload #3
template<class RandomAccessIterator, class Compare> void stable_sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
Сортирует диапазон [first, last] при помощи бинарного предика "comp" так, что сохраняется порядок следования эквивалентных элементов.
Example, possible implementation
Define overload #4
template<class ExecutionPolicy, class RandomAccessIterator, class Compare> void stable_sort(ExecutionPolicy&& exec, RandomAccessIterator first, RandomAccessIterator last, Compare comp);
TODO
Example, possible implementation
Examples
Example 1:
#include <iostream> #include <algorithm> #include <vector> int main() { struct S { int id; std::string brand; bool operator < (S const& rhs) const { return id < rhs.id; } }; std::vector<S> vec = { {3, "Lexus"}, {3, "Toyota"}, {1, "BMW"}, {2, "Renault"} }; std::stable_sort(std::begin(vec), std::end(vec)); for (std::size_t i = 0; i < vec.size(); ++i) { std::cout << vec[i].id << ' ' << vec[i].brand << std::endl; } return 0; }
1 BMW 2 Renault 3 Lexus 3 Toyota
Changelog
C++26
TODOC++23
TODOC++20
TODOC++17
TODOC++14
TODOC++11
TODOSee also
TODO
This page was last modified on 2024-03-13