c++ sort比较函数的使用

先给结论:简单的来讲,sort的每次都会选择两个数信息比较,而选择函数会通过返回true或者false来控制排序,true是升序,false是降序。

在C++中,std::sort函数用于对容器中的元素进行排序。std::sort函数通常接受三个参数:要排序的容器的起始迭代器、结束迭代器以及用于比较元素的比较函数。

比较函数可以是普通函数,也可以是lambda函数。比较函数的作用是用于指定元素的相对顺序,即确定元素在排序结果中的位置。

下面是一个示例,展示了如何使用std::sort函数和比较函数对容器中的元素进行排序:

cpp 复制代码
#include <iostream>
#include <algorithm>
#include <vector>

bool compare(int a, int b) {
    return a < b;
}

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

    // 使用普通函数作为比较函数
    std::sort(vec.begin(), vec.end(), compare);

    // 输出排序后的结果
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

上面的示例中,compare函数用于指定元素的比较逻辑,根据a < b的结果来确定a和b的相对顺序。在std::sort函数调用时,传入compare函数作为比较函数,实现升序排序。

除了使用普通函数,还可以使用lambda函数来作为比较函数,如下所示:

cpp 复制代码
#include <iostream>
#include <algorithm>
#include <vector>

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

    // 使用lambda函数作为比较函数,实现降序排序
    std::sort(vec.begin(), vec.end(), [](int a, int b) {
        return a > b;
    });

    // 输出排序后的结果
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述代码中,lambda函数[](int a, int b) { return a > b; }用于实现降序排序,其中a > b表示降序排序的逻辑。在std::sort函数调用时,传入lambda函数作为比较函数,实现对容器中元素的降序排序。

总之,比较函数在std::sort函数中起着关键作用,通过比较函数可以灵活地指定元素的相对顺序,从而实现不同的排序效果。

相关推荐
鸭子程序员30 分钟前
c++ 算法
开发语言·c++·算法
不会c嘎嘎44 分钟前
算法百练,直击OFFER -- day5
c++·算法
序属秋秋秋1 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
乌萨奇也要立志学C++1 小时前
【洛谷】二分查找专题 告别二分死循环!模板 + 细节 + 实战
c++·算法
Rock_yzh1 小时前
LeetCode算法刷题——128. 最长连续序列
数据结构·c++·算法·哈希算法
wheeldown2 小时前
【Rokid+CXR-M】基于Rokid CXR-M SDK的博物馆AR导览系统开发全解析
c++·人工智能·ar
利刃大大2 小时前
【c++中间件】语音识别SDK && 二次封装
开发语言·c++·中间件·语音识别
晨非辰2 小时前
C++ 波澜壮阔 40 年:从基础I/O到函数重载与引用的完整构建
运维·c++·人工智能·后端·python·深度学习·c++40周年
艾莉丝努力练剑5 小时前
【C++:C++11】C++11新特性深度解析:从可变参数模板到Lambda表达式
c++·stl·c++11·lambda·可变模版参数
同学小张7 小时前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native