C++ sort排序之降序、升序使用总结
介绍
sort函数是C++ STL库提供的一种排序函数,可以快速方便地对数组或容器进行排序。本文将详细介绍sort函数的用法,包括排序方式、自定义比较函数和对容器的排序等内容。
基本用法
sort函数的声明如下:
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last);
其中,RandomAccessIterator表示可以访问任意位置的迭代器类型,例如指针。first和last分别表示排序区间的起始地址和终止地址。
sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。
降序排序
方式一
sort函数的比较函数默认是升序排序的。如果想要按照降序排序,可以将比较函数改为返回第一个参数大于第二个参数的情况。
示例代码如下:
#include <algorithm>
#include <iostream>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
int main()
{
int arr[] = {4, 2, 5, 1, 3};
int n = sizeof(arr) / sizeof(int);
sort(arr, arr + n, compare);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
输出结果为:
5 4 3 2 1
方式二
另外,C++11引入了一个新的函数对象std::greater
示例代码如下:
#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;
int main()
{
int arr[] = {4, 2, 5, 1, 3};
int n = sizeof(arr) / sizeof(int);
sort(arr, arr + n, greater<int>());
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
输出结果为:
5 4 3 2 1
升序排序
升序排序是sort函数的默认排序方式,无需指定比较函数。
示例代码如下:
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int arr[] = {4, 2, 5, 1, 3};
int n = sizeof(arr) / sizeof(int);
sort(arr, arr + n);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
return 0;
}
输出结果为:
1 2 3 4 5
对容器排序
除了对数组进行排序外,sort函数还可以对STL容器进行排序,如vector和list等。
示例代码如下:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec = {4, 2, 5, 1, 3};
sort(vec.begin(), vec.end());
for (auto i : vec)
{
cout << i << " ";
}
return 0;
}
输出结果为:
1 2 3 4 5
自定义比较函数
sort函数默认是按升序排序的,如果想要按照降序排序,需要使用比较函数来指定排序方式。有时我们需要按照某种特定的方式排序,比如对字符串按照长度进行排序,这就需要自定义比较函数来实现。
示例代码如下:
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bool compare(string a, string b)
{
return a.size() < b.size();
}
int main()
{
vector<string> vec = {"apple", "banana", "pear", "orange"};
sort(vec.begin(), vec.end(), compare);
for (auto i : vec)
{
cout << i << " ";
}
return 0;
}
输出结果为:
pear apple banana orange
总结
本文对C++ STL库中sort函数进行了详细的介绍,包括排序方式、自定义比较函数和对容器的排序等内容。使用sort函数可以极大地简化排序过程,提高代码的效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ sort排序之降序、升序使用总结 - Python技术站