C++sort函数怎么用
时间: 2023-09-20 22:07:31 浏览: 88
可以使用C标准库中的sort函数对数组进行排序,其函数原型为:
```
void sort(void* base, size_t num, size_t size, int (*cmp)(const void*,const void*));
```
其中,base参数为要排序的数组的指针,num参数为数组中元素的个数,size参数为单个元素的大小(以字节为单位),cmp参数为比较函数的指针,用于指定排序规则。
例如,可以定义如下的比较函数对整型数组进行升序排序:
```
int cmp(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
```
然后使用sort函数进行排序:
```
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6};
int len = sizeof(arr) / sizeof(int);
sort(arr, len, sizeof(int), cmp);
```
排序后,数组arr中的元素为:1 1 2 3 4 5 6 9。
相关问题
c++sort函数使用
C++中的sort函数是一种常用的排序算法,它可以将数组或容器中的元素按照指定的方式进行排序。sort函数的基本用法如下:
```c++
#include <algorithm>
sort(begin_iterator, end_iterator, compare_function);
```
其中,begin_iterator和end_iterator表示要排序的数组或容器的起始和终止迭代器,compare_function是一个可选参数,用于指定排序方式。如果不指定compare_function,则默认按照元素的大小进行升序排序。
如果需要自定义排序方式,可以通过定义一个比较函数来实现。比较函数的定义如下:
```c++
bool compare_function(const Type& a, const Type& b) {
// 自定义排序方式
}
```
其中,Type表示要排序的元素类型,a和b分别表示要比较的两个元素。比较函数需要返回一个bool值,表示a是否应该排在b的前面。
c++sort函数
C++中的`sort`函数是一个非常常用的排序函数,可以对数组或容器中的元素进行排序。其函数原型为:
```c++
template<class RandomIt>
void sort(RandomIt first, RandomIt last);
template<class RandomIt, class Compare>
void sort(RandomIt first, RandomIt last, Compare comp);
```
其中第一个函数适用于普通类型的元素,第二个函数适用于自定义类型的元素。
例如对于一个数组进行排序,可以这样写:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {5, 3, 1, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:`1 2 3 4 5`。
对于自定义类型,可以通过重载`operator<`来指定排序规则,例如:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Student {
string name;
int score;
bool operator<(const Student& other) const {
return score > other.score; // 按照分数从高到低排序
}
};
int main() {
vector<Student> students = {
{"Tom", 90},
{"Jerry", 80},
{"Alice", 95},
{"Bob", 85}
};
sort(students.begin(), students.end());
for (const auto& student : students) {
cout << student.name << " " << student.score << endl;
}
return 0;
}
```
输出结果为:
```
Alice 95
Tom 90
Bob 85
Jerry 80
```
阅读全文