当前位置:首页C++程序设计 > 正文

C++中STL模板中 <algorithm> 中sort函数

作者:野牛程序员:2023-02-24 19:12:30C++程序设计阅读 2590

在 C++ STL 中的 <algorithm> 头文件中,sort 函数可以对容器中的元素进行排序。sort 函数使用的是快速排序(Quicksort)算法,其时间复杂度为 O(nlogn)。

sort 函数的使用非常简单,其基本语法如下:

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

其中,firstlast 分别指定了排序范围的起始位置和结束位置,要求迭代器是随机访问迭代器。sort 函数会将 [first, last) 范围内的元素进行排序,其中包括 first 指向的元素,但不包括 last 指向的元素。

例如,以下代码演示了如何使用 sort 函数对 vector 容器中的元素进行排序:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v { 5, 2, 8, 4, 7, 1, 9 };
    std::sort(v.begin(), v.end());

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

    return 0;
}

输出结果为:

1 2 4 5 7 8 9

在以上代码中,首先创建了一个 vector 容器 v,其中包含了七个整数。然后,使用 sort 函数将 v 中的元素进行排序。最后,使用 for 循环输出排序后的结果。

除了默认的排序方式外,sort 函数还可以通过传递一个谓词(Predicate)来指定排序的方式。例如,以下代码演示了如何使用 sort 函数按照字符串长度对 vector 容器中的元素进行排序:

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

bool compare(const std::string& a, const std::string& b) {
    return a.length() < b.length();
}

int main() {
    std::vector<std::string> v { "apple", "banana", "orange", "pear", "grape" };
    std::sort(v.begin(), v.end(), compare);

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

    return 0;
}

输出结果为:

pear apple grape banana orange

在以上代码中,定义了一个名为 compare 的谓词,用于按照字符串长度进行比较。然后,使用 sort 函数对 vector 容器 v 中的元素进行排序,第三个参数传递了 compare 谓词。最后,使用 for 循环输出排序后的结果。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击