Defined in header <algorithm>
构造函数:
template< class RandomIt > void sort( RandomIt first, RandomIt last ); | (1) | |
template< class RandomIt, class Compare > void sort( RandomIt first, RandomIt last, Compare comp ); | (2) |
[first, last)
in ascending order. The order of equal elements is not guaranteed to be preserved. The first version uses
operator<
to compare the elements, the second version uses the given comparison function object
comp
.
构造函数(1)是按升序排列的
构造函数(2)可以自己定义排序规则
时间复杂度:
O(N·log(N)), where N = std::distance(first, last) comparisons. | (since C++11) |
Example
#include <algorithm>
#include <functional>
#include <array>
#include <iostream>
int main()
{
std::array<int, 10> s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
// sort using the default operator<
std::sort(s.begin(), s.end());
for (int a : s) {
std::cout << a << " ";
}
std::cout << '\n';
// sort using a standard library compare function object
std::sort(s.begin(), s.end(), std::greater<int>());
for (int a : s) {
std::cout << a << " ";
}
std::cout << '\n';
// sort using a custom function object
struct {
bool operator()(int a, int b)
{
return a < b;
}
} customLess;
std::sort(s.begin(), s.end(), customLess);
for (int a : s) {
std::cout << a << " ";
}
std::cout << '\n';
// sort using a lambda expression
std::sort(s.begin(), s.end(), [](int a, int b) {
return b < a;
});
for (int a : s) {
std::cout << a << " ";
}
std::cout << '\n';
}
0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0