C++中STL模板中 <algorithm> 中sort函数
作者:野牛程序员:2023-02-24 19:12:30C++程序设计阅读 2590
在 C++ STL 中的 <algorithm> 头文件中,sort 函数可以对容器中的元素进行排序。sort 函数使用的是快速排序(Quicksort)算法,其时间复杂度为 O(nlogn)。
sort 函数的使用非常简单,其基本语法如下:
template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last);
其中,first
和 last
分别指定了排序范围的起始位置和结束位置,要求迭代器是随机访问迭代器。sort
函数会将 [first, last)
范围内的元素进行排序,其中包括 first
指向的元素,但不包括 last
指向的元素。
例如,以下代码演示了如何使用 sort 函数对 vector 容器中的元素进行排序:
#include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> v { 5, 2, 8, 4, 7, 1, 9 }; std::sort(v.begin(), v.end()); for (int i = 0; i < v.size(); ++i) { std::cout << v[i] << " "; } std::cout << std::endl; return 0; }
输出结果为:
1 2 4 5 7 8 9
在以上代码中,首先创建了一个 vector 容器 v
,其中包含了七个整数。然后,使用 sort
函数将 v
中的元素进行排序。最后,使用 for 循环输出排序后的结果。
除了默认的排序方式外,sort
函数还可以通过传递一个谓词(Predicate)来指定排序的方式。例如,以下代码演示了如何使用 sort 函数按照字符串长度对 vector 容器中的元素进行排序:
#include <iostream> #include <vector> #include <algorithm> #include <string> bool compare(const std::string& a, const std::string& b) { return a.length() < b.length(); } int main() { std::vector<std::string> v { "apple", "banana", "orange", "pear", "grape" }; std::sort(v.begin(), v.end(), compare); for (int i = 0; i < v.size(); ++i) { std::cout << v[i] << " "; } std::cout << std::endl; return 0; }
输出结果为:
pear apple grape banana orange
在以上代码中,定义了一个名为 compare
的谓词,用于按照字符串长度进行比较。然后,使用 sort
函数对 vector 容器 v
中的元素进行排序,第三个参数传递了 compare
谓词。最后,使用 for 循环输出排序后的结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C++中什么是STL模板?
- 下一篇:C++中什么是 vector 容器?