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
See also
TODO
This page was last modified on 2024-03-13