在C++编程中,`sort` 是一个非常实用且高效的排序工具,它位于标准模板库(STL)的 `
基本用法
首先,确保包含必要的头文件:
```cpp
include
```
`sort` 的基本语法如下:
```cpp
void sort(Iterator first, Iterator last);
```
- `first` 和 `last` 是迭代器,分别指向要排序序列的起始位置和结束位置。
例如,对一个整数数组进行排序:
```cpp
include
include
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
// 对数组进行升序排序
std::sort(arr, arr + n);
for (int i = 0; i < n; ++i) {
std::cout << arr[i] << " ";
}
return 0;
}
```
输出结果为:
```
1 2 5 7 9
```
自定义排序规则
除了默认的升序排序外,`sort` 还允许我们通过第三个参数指定自定义的比较函数。例如,实现降序排序:
```cpp
include
include
bool compare(int a, int b) {
return a > b; // 降序排列
}
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
// 使用自定义比较函数进行排序
std::sort(arr, arr + n, compare);
for (int i = 0; i < n; ++i) {
std::cout << arr[i] << " ";
}
return 0;
}
```
输出结果为:
```
9 7 5 2 1
```
排序对象类
对于自定义的对象类,可以通过重载运算符或者提供比较函数来实现排序。例如,假设有一个简单的 `Person` 类:
```cpp
include
include
include
class Person {
public:
std::string name;
int age;
Person(std::string n, int a) : name(n), age(a) {}
};
// 自定义比较函数
bool compareByAge(const Person& a, const Person& b) {
return a.age < b.age;
}
int main() {
std::vector
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 35)
};
// 按年龄排序
std::sort(people.begin(), people.end(), compareByAge);
for (const auto& person : people) {
std::cout << person.name << ": " << person.age << "\n";
}
return 0;
}
```
输出结果为:
```
Bob: 25
Alice: 30
Charlie: 35
```
总结
`sort` 函数是C++中极为强大的工具,它不仅能够快速高效地完成排序任务,还提供了极大的灵活性,支持多种数据类型和复杂的排序逻辑。熟练掌握 `sort` 的使用方法,可以极大地提升代码的效率和可读性。