sort()函数

在C++中,`sort()` 函数是一个非常强大的标准库函数,用于对数组或容器中的元素进行排序。它定义在 `<algorithm>` 头文件中。`sort()` 可以对几乎所有类型的序列进行排序,包括数组、`std::vector`、`std::list`、`std::deque` 等。

### 基本用法

`sort()` 函数的基本用法非常简单。对于一个数组或容器,你可以这样调用它:

#include <algorithm> // 包含sort()
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {5, 3, 2, 8, 6};

    std::sort(vec.begin(), vec.end());

    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

这段代码会将 `vec` 中的元素从小到大排序。

### 函数原型

`sort()` 函数的原型如下:

void sort(ForwardIterator begin, ForwardIterator end);

对于自定义数据类型或复杂对象,你可以提供自己的比较函数:

void sort(ForwardIterator begin, ForwardIterator end, Compare comp);

这里的 `ForwardIterator` 是指向序列中元素的迭代器,`Compare` 是一个比较函数或函数对象,它接受两个参数并返回一个布尔值,指示第一个参数是否应该在第二个参数之前。

### 使用自定义比较函数

你可以提供一个自定义的比较函数来控制排序顺序。例如,如果你想要从大到小排序,可以这样做:

#include <algorithm> // 包含sort()
#include <vector>
#include <iostream>

bool compare(int a, int b) {
    return a > b; // 降序排序
}

int main() {
    std::vector<int> vec = {5, 3, 2, 8, 6};

    std::sort(vec.begin(), vec.end(), compare);

    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

### 使用Lambda表达式

在C++11及更高版本中,你可以使用lambda表达式来指定排序准则,这使得代码更加简洁:

#include <algorithm> // 包含sort()
#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {5, 3, 2, 8, 6};

    std::sort(vec.begin(), vec.end(), [](int a, int b) {
        return a > b; // 降序排序
    });

    for (int num : vec) {
        std::cout << num << " ";
    }

    return 0;
}

### 注意事项

- `sort()` 会就地排序,这意味着它会直接修改传入的序列。
- 默认情况下,`sort()` 使用`std::less<T>`作为比较函数,其中 `T` 是序列中元素的类型,这会导致元素按升序排序。
- 对于复杂对象,确保你的比较函数或lambda表达式正确地处理了对象的比较逻辑。

`sort()` 是C++标准库中非常强大和灵活的工具,适用于各种排序需求。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值