函数原型:
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare cmp);
头文件:< algorithm >
参数说明:
first表示要排序数组的起始地址;
last表示数组结束地址的下一位;
cmp规定排序的方法,如果不填,默认为升序。
功能:将将[first, last)区间内元素升序排列或者降序排列。
区间为左闭右开。
第一种方式:使用STL的仿函数less
#include < vector>
#include < algorithm>
#include < iostream>int main(int argc, char* argv[]){std::vector vec = {1, 3, 5, 2, 4, 6};for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;std::sort(vec.begin(), vec.end(), std::less());for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
输出:
1 3 5 2 4 6
1 2 3 4 5 6
第二种方式:自己实现仿函数
#include < vector>
#include < algorithm>
#include < iostream>bool cmp(int a, int b) {return a < b;
}int main(int argc, char* argv[]){std::vector vec = {1, 3, 5, 2, 4, 6};for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;std::sort(vec.begin(), vec.end(), cmp);for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
输出:
1 3 5 2 4 6
1 2 3 4 5 6
第三种方式:缺省仿函数
#include
#include
#include int main(int argc, char* argv[]){std::vector vec = {1, 3, 5, 2, 4, 6};for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;std::sort(vec.begin(), vec.end());for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
输出:
1 3 5 2 4 6
1 2 3 4 5 6
第一种方式:使用STL的仿函数greater
#include
#include
#include int main(int argc, char* argv[]){std::vector vec = {1, 3, 5, 2, 4, 6};for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;std::sort(vec.begin(), vec.end(), std::greater());for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
输出:
1 3 5 2 4 6
6 5 4 3 2 1
第二种方式:自己实现仿函数
#include
#include
#include bool cmp(int a, int b) {return a > b;
}int main(int argc, char* argv[]){std::vector vec = {1, 3, 5, 2, 4, 6};for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;std::sort(vec.begin(), vec.end(), cmp);for (auto num : vec) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
输出:
1 3 5 2 4 6
6 5 4 3 2 1