C++ STL中sort函数详解及使用示例

需积分: 35 7 下载量 143 浏览量 更新于2024-09-18 收藏 32KB DOC 举报
"sort函数的使用方法" 在编程中,`sort`函数是一个非常重要的工具,尤其是在处理大量数据的排序需求时。它属于C++标准模板库(STL)的一部分,提供了一种高效且灵活的排序手段。`sort`函数的主要功能是对给定范围内的元素进行排序,通常适用于数组和容器如vector、list等。 `sort`函数的基本用法包括传递两个参数,即要排序的序列的起始和结束迭代器。例如,对于一个整数数组`int a[100]`,若要对数组中的元素进行升序排序,可以使用如下代码: ```cpp #include <algorithm> sort(a, a + 100); ``` 这里的`a`是起始迭代器,`a + 100`是结束迭代器,表示排序范围从`a[0]`到`a[99]`。注意,结束迭代器指向的是排序区间的最后一个元素之后的位置。 对于动态大小的容器,如`std::vector<int> v`,排序方式类似: ```cpp sort(v.begin(), v.end()); ``` `sort`函数默认执行升序排序,但也可以通过提供第三个参数来自定义排序规则。这个参数是一个比较函数对象,它可以是一个函数指针或一个重载了`()`操作符的对象。例如,要实现降序排序,可以定义一个名为`cmp`的比较函数: ```cpp bool cmp(int a, int b) { return a > b; } sort(a, a + 100, cmp); ``` 对于自定义类型的数据,如结构体`node`,需要提供一个比较函数来定义排序规则。以下是一个例子,根据结构体`node`的`a`、`b`和`c`字段进行排序: ```cpp struct node { int a; int b; double c; }; bool cmp(node x, node y) { if (x.a != y.a) return x.a < y.a; if (x.b != y.b) return x.b > y.b; return x.c > y.c; } sort(arr, arr + 100, cmp); ``` 在某些情况下,可能需要与C函数`qsort`配合使用,这时比较函数的定义会有所不同,例如: ```cpp int cmp(const void* a, const void* b) { return (*(int*)a - *(int*)b); } qsort(s[0], n, sizeof(s[0]), cmp); ``` 以上就是`sort`函数的基本用法和自定义比较函数的实现方式。无论是在解决算法竞赛问题还是在日常开发中,掌握`sort`函数的用法都能极大地提高代码效率和可读性。