C++中std::sort函数介绍和使用场景

 更新时间:2024年02月19日 15:19:22   作者:老狼IT工作室  
std::sort函数是C++标准库中常用的排序函数之一,它可以对各种类型的序列进行排序,本文就来介绍一下C++中std::sort函数介绍和使用场景,感兴趣的可以了解一下

std::sort是C++标准库中的一个函数,用于对容器中的元素进行排序。它可以按照默认的升序方式对元素进行排序,也可以指定自定义的比较函数来实现降序排序等其他排序方式。

函数介绍

std::sort函数位于<algorithm>头文件中,其原型如下:

template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

其中,firstlast表示待排序序列的起始和结束迭代器,comp是一个可选的比较函数,用于指定排序规则。如果不提供比较函数,则默认按照升序排序。

使用场景

对数组进行排序

int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::sort(arr, arr + sizeof(arr) / sizeof(arr[0]));
// 现在 arr 数组已经按照升序排列为 {1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9}

对 vector 进行排序

std::vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
std::sort(v.begin(), v.end());
// 现在 v 向量已经按照升序排列为 {1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9}

对字符串进行排序

std::string str = "hello world";
std::sort(str.begin(), str.end());
// 现在 str 字符串已经按照字母表顺序排列为 "dehllloorw"

对 pair 进行排序

std::pair<int, std::string> p1 = {3, "apple"};
std::pair<int, std::string> p2 = {1, "banana"};
std::pair<int, std::string> p3 = {2, "orange"};
std::vector<std::pair<int, std::string>> vec = {p1, p2, p3};
std::sort(vec.begin(), vec.end());
// 现在 vec 向量已经按照第一个元素升序排列为 {{1, "banana"}, {2, "orange"}, {3, "apple"}}

完整示例

例子1: 对数组进行正向排序

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    sort(arr, arr + n);

    cout << "Sorted array is: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:Sorted array is: 1 1 2 3 3 4 5 5 5 6 9

例子2: 对 vector 进行正向排序

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

    sort(v.begin(), v.end());

    cout << "Sorted vector is: ";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:Sorted vector is: 1 1 2 3 3 4 5 5 5 6 9

例子3: 对字符串进行正向排序

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string str = "hello world";

    sort(str.begin(), str.end());

    cout << "Sorted string is: " << str << endl;

    return 0;
}

输出结果为:Sorted string is: dehllloorw

例子4: 对 pair 进行正向排序

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool compare(const pair<int, string>& a, const pair<int, string>& b) {
    return a.first < b.first;
}

int main() {
    vector<pair<int, string>> v = {{3, "apple"}, {1, "banana"}, {2, "orange"}};

    sort(v.begin(), v.end(), compare);

    cout << "Sorted vector of pairs is: ";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i].first << " " << v[i].second << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:Sorted vector of pairs is: 1 banana 2 orange 3 apple

例子5: 对数组进行反向排序

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    sort(arr, arr + n, greater<int>());

    cout << "Reverse sorted array is: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:Reverse sorted array is: 9 6 5 5 5 4 3 3 2 1 1

例子6: 对 vector 进行反向排序

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

    sort(v.rbegin(), v.rend(), greater<int>());

    cout << "Reverse sorted vector is: ";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:Reverse sorted vector is: 9 6 5 5 5 4 3 3 2 1 1

例子7: 对字符串进行反向排序

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

bool compare(const string& a, const string& b) {
    return a > b;
}

int main() {
    string str = "hello world";

    sort(str.rbegin(), str.rend(), compare);

    cout << "Reverse sorted string is: " << str << endl;

    return 0;
}

输出结果为:Reverse sorted string is: dlrow olleh

总结

std::sort函数是C++标准库中常用的排序函数之一,它可以对各种类型的序列进行排序。通过指定不同的比较函数,可以实现不同的排序方式。在实际开发中,我们经常需要对数据进行排序以便进行后续处理或分析。掌握std::sort函数的使用技巧可以帮助我们更高效地完成这些任务。

到此这篇关于C++中std::sort函数介绍和使用场景的文章就介绍到这了,更多相关C++ std::sort函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言内存操作函数使用示例梳理讲解

    C语言内存操作函数使用示例梳理讲解

    这篇文章主要介绍了C语言库函数中的内存操作函数memcpy()、memmove()、memset()、memcmp()使用示例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • C语言常用标准头文件使用实例

    C语言常用标准头文件使用实例

    在C的系列语言程序中,头文件(通常扩展名为.h)被大量使用,它通常包含函数、变量、结构体等的声明和定义,以及一些宏定义和类型定义,这篇文章主要给大家介绍了关于C语言常用标准头文件使用的相关资料,需要的朋友可以参考下
    2024-08-08
  • C++获取当前进程IAT的方法

    C++获取当前进程IAT的方法

    这篇文章主要介绍了C++获取当前进程IAT的方法,实例讲述了IAT(导入地址表)的获取方法,在Windows应用程序开发中有着非常实用的应用价值,需要的朋友可以参考下
    2014-10-10
  • C++ 指向类成员的指针

    C++ 指向类成员的指针

    指向类成员的指针总的来讲可以分为两大类四小类(指向数据成员还是成员函数,指向普通成员还是静态成员)
    2020-03-03
  • ubuntu20.04中vscode使用ROS的详细方法

    ubuntu20.04中vscode使用ROS的详细方法

    这篇文章主要介绍了ubuntu20.04 vscode使用ROS的详细方法,主要包括在vscode安装扩展创建工作文件夹的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C++中头文件与源文件的作用详解

    C++中头文件与源文件的作用详解

    这篇文章主要给大家介绍了关于C++中头文件与源文件的作用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C语言 字符串首字母转换成大写简单实例

    C语言 字符串首字母转换成大写简单实例

    这篇文章主要介绍了C语言 字符串首字母转换成大写简单实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • OpenGL实现贝塞尔曲线或曲面

    OpenGL实现贝塞尔曲线或曲面

    这篇文章主要为大家详细介绍了OpenGL实现贝塞尔曲线或曲面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 快速掌握VC6.0中各种宏注释应用(附图)

    快速掌握VC6.0中各种宏注释应用(附图)

    为了方便别人或自己阅读自己的程序,注释是坚决不可少的,一个漂亮的程序,不是在于你应用的技术多么高深,而是能够把高深的技术描述的清楚易懂
    2013-01-01
  • C++的sstream标准库详细介绍

    C++的sstream标准库详细介绍

    以下是对C++中的的sstream标准库进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09

最新评论