📅  最后修改于: 2023-12-03 15:08:34.962000             🧑  作者: Mango
在 C++ 中,我们可以使用标准模板库(STL)中的 sort
函数来对数组进行排序。sort
函数可以对各种类型的元素进行排序,包括整数、浮点数、字符串等等。
下面是一个对数组进行排序的基本示例代码:
#include <iostream>
#include <algorithm> // 必须包含头文件才能使用 sort 函数
using namespace std;
int main()
{
int arr[] = {5, 3, 1, 6, 4, 2}; // 定义一个整数数组
int len = sizeof(arr) / sizeof(arr[0]); // 获取数组长度
sort(arr, arr + len); // 对数组进行排序
for(int i = 0; i < len; i++) {
cout << arr[i] << " "; // 输出排序后的数组元素
}
return 0; // 程序结束
}
在上面的示例代码中,我们首先定义了一个整数数组 arr
,然后使用 sizeof(arr) / sizeof(arr[0])
获取数组的长度。接下来,我们调用 sort
函数对数组进行排序。最后,我们使用 for 循环遍历数组并输出排序后的元素。
需要注意的是,sort
函数所需的头文件为 algorithm
,必须包含该头文件才能使用该函数。
上面的示例代码可以输出以下结果:
1 2 3 4 5 6
除了基本的排序功能外,sort
函数还支持对自定义数据类型进行排序。如果要对自定义数据类型进行排序,需要实现比较函数(comparator function)来告诉 sort
函数如何比较这些数据类型。
下面是一个对自定义数据类型进行排序的示例代码:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Student {
string name; // 姓名
int age; // 年龄
bool operator < (const Student& s) const { // 定义比较函数
return age < s.age; // 按照年龄升序排序
}
};
int main()
{
vector<Student> students = {
{"Alice", 20},
{"Bob", 18},
{"Charlie", 22},
{"David", 19},
{"Eric", 21}
};
sort(students.begin(), students.end()); // 对学生数组进行排序
for(auto& s : students) {
cout << s.name << " " << s.age << endl;
}
return 0;
}
在上面的示例代码中,我们定义了一个结构体 Student
,其中包含姓名和年龄两个成员变量,同时实现了小于号运算符重载(operator <
),指定了按照年龄升序排列。然后,我们定义了一个 std::vector
类型的学生数组并初始化。最后,我们调用 sort
函数对学生数组进行排序,遍历输出排序后的学生信息。
需要注意的是,当比较函数返回 true 时,按照升序排序,当比较函数返回 false 时,按照降序排序。如果不使用默认的从小到大排序,可以自定义比较函数,按照需要实现排序逻辑。