C++头文件algorithm中的函数功能详解

接下来我会为您详细讲解 “C++头文件algorithm中的函数功能详解”的攻略。

1. 简介

C++ STL (Standard Template Library) 库提供了很多强大的功能, algorithm 是其中的一个头文件,提供了 许多算法、排序、搜索 和数值处理功能。

2. 常用函数

2.1 排序算法

2.1.1 std::sort

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

sort() 函数用于对序列进行升序排序,默认从小到大排序。比如对数组进行排序:

#include <iostream>
#include <algorithm> 

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

    std::sort(a, a+n);

    for (int i=0; i<n; i++) 
        std::cout << a[i] << " ";
}

输出结果为:

1 2 3 4 5 

也可以通过comp函数指定排序规则:

bool cmp(int x,int y){
    return x>y;
}

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

    std::sort(a, a+n, cmp); // 降序排序

    for (int i=0; i<n; i++) 
        std::cout << a[i] << " ";
}

输出结果为:

5 4 3 2 1 

2.1.2 std::nth_element

template< class RandomIt >
void nth_element( RandomIt first, RandomIt nth, RandomIt last );
template< class RandomIt, class Compare >
void nth_element( RandomIt first, RandomIt nth, RandomIt last, Compare comp );

std::nth_element 函数用于查找序列的第 n 个元素,并将第 n 个元素放到正确的位置,其余的元素在其原有位置。比如:

#include <iostream>
#include <algorithm> 

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

    std::nth_element(a, a+2, a+n);

    for (int i=0; i<n; i++) 
        std::cout << a[i] << " ";
}

输出结果为:

2 1 3 5 4 

2.2 查找算法

2.2.1 std::find

template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );

std::find 函数用于在序列中查找某个元素,如果找到了则返回该元素所在的位置(迭代器),否则返回末尾迭代器。比如:

#include <iostream>
#include <algorithm> 

int main()
{
    int a[] = {2, 1, 4, 5, 3};
    int n = sizeof(a)/sizeof(a[0]);
    int* p;
    p = std::find(a, a+n, 4);
    if (p != a+n)
        std::cout << "find 4 at position " << (p-a+1) << "\n";
    else
        std::cout << "4 not found\n";
}

输出结果为:

find 4 at position 3 

2.2.2 std::binary_search

template< class ForwardIt, class T >
bool binary_search( ForwardIt first, ForwardIt last, const T& value );
template< class ForwardIt, class T, class Compare >
bool binary_search( ForwardIt first, ForwardIt last, const T& value, Compare comp );

std::binary_search 函数用于在有序序列中查找某个元素,如果找到了则返回 true,否则返回 false。比如:

#include <iostream>
#include <algorithm> 

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

    if (std::binary_search(a, a+n, 4))
        std::cout << "4 found\n";
    else
        std::cout << "4 not found\n";
}

输出结果为:

4 found 

3. 总结

以上就是本篇攻略的全部内容,介绍了一些 algorithm 头文件中的常用函数,其中包括了排序算法和查找算法两个方面。相信通过本篇攻略,您已经了解了 algorithm 头文件的相关知识,并且能够熟练使用其提供的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++头文件algorithm中的函数功能详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • springbootcommandlinerunner的使用

    以下是“Spring Boot CommandLineRunner的使用”的完整攻略: Spring Boot CommandLineRunner的使用 Spring Boot CommandLineRunner是一个接口,用于在Spring Boot应用程序启动时执行一些代码。攻略将详细讲解CommandLineRunner的基础知识和应用开发技巧,包括C…

    other 2023年5月8日
    00
  • 删除SAM文件,清除Administrator账号密码

    要删除SAM文件并清除Administrator账号密码,我们需要进入Windows操作系统的安全模式。然后执行以下步骤: 1. 进入Windows安全模式 按下电脑的电源按钮,当看到启动画面时,按F8键进入高级启动选项界面。选择“安全模式”,然后按回车键。电脑现在将会在安全模式下启动。 2. 找到SAM文件 在安全模式下,我们需要找到C:\Windows\…

    other 2023年6月27日
    00
  • Android10开发者常见问题(小结)

    Android 10开发者常见问题小结 在Android10中,我们面临着一些与之前版本不同的问题和挑战。本文将对Android 10开发者常见问题进行总结,并提供解决这些问题的方案。 1. 访问设备ID被禁止 在Android10中,应用无法访问设备IMEI号或序列号。如果您需要访问这些识别设备的唯一信息,您可以在设备上使用Android ID来代替。 以…

    other 2023年6月26日
    00
  • 360压缩减少关联的右键菜单项方法图解

    下面是详细讲解如何在360压缩中减少关联的右键菜单项的完整攻略。 前置知识 在进行本攻略之前,需要你已经安装了360压缩,并且了解一些基本的文件压缩和解压缩操作。另外,本攻略的操作步骤可能会因不同版本的360压缩而有所不同,请以你所使用的版本为准。 1. 打开360压缩 双击桌面上的360压缩图标,或者通过开始菜单中的程序列表打开360压缩。 2. 进入设置…

    other 2023年6月27日
    00
  • C语言中scanf的用法举例

    让我们开始介绍C语言中scanf的用法。 什么是scanf? scanf函数是C语言中的一个标准库函数,用于从标准输入中读取一定格式的数据。其函数原型为: int scanf(const char *format, …) 我们通常调用scanf函数时,需要向其传递一个格式字符串,以指明我们要读取的数据的格式,此外,我们还需要传递一个或多个指向我们要存储读…

    other 2023年6月27日
    00
  • 无人深空常见问题及其解决方法

    无人深空常见问题及其解决方法 无人深空是一款备受玩家喜爱的开放世界太空探索游戏,但在游玩过程中难免会遇到一些问题,本文将介绍一些常见的问题及其解决方法。 问题一:无法启动游戏 在启动游戏时可能会遇到无法启动的问题,这时候可以尝试以下方法: 确认你的电脑符合游戏的最低配置要求,无人深空的最低配置要求为 Intel Core i3 处理器、8GB 内存和1GB的…

    other 2023年6月27日
    00
  • 如何使用冰点还原让电脑每次重启还原电脑初始状态

    以下是使用冰点还原让电脑每次重启还原电脑初始状态的详细攻略: 准备 首先,我们需要下载和安装“冰点还原”软件。可以在其官网(http://www.faronics.com.cn/products/deep-freeze/)下载最新版本的软件。安装完成后,进入软件设置。 配置 软件开机启动 打开冰点还原的设置界面,勾选“启动时自动保护”,默认即可,这将保证冰点…

    other 2023年6月27日
    00
  • SSIS 调试和故障排除

    SSIS 调试和故障排除 SSIS(SQL Server Integration Services)是一个用于 ETL(Extract, Transform, Load)过程的平台,可用于在 SQL Server 上创建数据集成方案。然而,在 SSIS 中,您可能会遇到一些跟踪难度和故障排除问题。在本文中,我们将介绍一些调试和故障排除提示,帮助您更加有效地处…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部