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日

相关文章

  • webpack安装

    webpack安装 webpack是一个现代JavaScript应用程序的静态模块打包器。本文将提供一个完整的攻略,介绍如何安装webpack,并供两个示例说明。 安装Node.js 在安装webpack之前,需要先安装Node.js。可以从官网下载安包,或使用包管理器进行安装。 安装 可以使用以下命令安装webpack: npm install webpa…

    other 2023年5月8日
    00
  • gprsdtu概念及dtu的工作原理(转)

    GPRS DTU概念及DTU的工作原理(转) 随着现代通信技术的发展,独立于固定线路的无线通信技术得到了广泛应用。其中,DTU即数据传输单元,是无线通信技术发展的一项重要成果。本文将介绍GPRS DTU的概念及DTU的工作原理。 GPRS DTU概念 GPRS,即移动通信系统通用分组无线服务(General Packet Radio Service),是现代…

    其他 2023年3月28日
    00
  • 魔兽世界7.3.5生存猎怎么堆属性 wow7.35生存猎配装属性优先级攻略

    魔兽世界7.3.5生存猎怎么堆属性 – 配装属性优先级攻略 简介 生存猎是魔兽世界中一个相对容易上手的近战职业,掌握好其属性堆叠和配装优先级可以提高其输出能力和生存能力。本文主要介绍如何堆叠生存猎的属性以及配装的优先级。 属性堆叠原则 熟练度 熟练度是生存猎最主要的属性之一,可以提升其输出和生存能力。要尽量提升熟练度,建议选择装备和宝石。 爆击 爆击是提高生…

    other 2023年6月27日
    00
  • 小米4悄然升级Android 6.0.1:版本号也变成了MMB29M

    小米4悄然升级Android 6.0.1: 版本号也变成了MMB29M攻略 小米4是一款备受欢迎的智能手机,最近悄然升级到了Android 6.0.1,并且版本号也变成了MMB29M。本攻略将详细介绍如何升级小米4的操作步骤。 步骤一:备份重要数据 在进行任何系统升级之前,我们强烈建议您备份重要的数据。这可以防止数据丢失或损坏。您可以通过以下方式备份数据: …

    other 2023年8月3日
    00
  • Spring Cloud Alibaba Nacos Config加载配置详解流程

    首先我会介绍一下Spring Cloud Alibaba Nacos Config的基本概念,然后再展开讲解加载配置的详细流程。 Spring Cloud Alibaba Nacos Config简介 Spring Cloud Alibaba Nacos Config是基于Nacos的配置中心,可以将配置信息集中管理并动态更新。在使用Spring Cloud…

    other 2023年6月25日
    00
  • 电脑出现应用程序无法运行的解决方法

    当电脑出现应用程序无法运行的情况时,可能是因为该应用程序存在异常或因系统设置问题而无法正常运行。下面将详细介绍电脑出现应用程序无法运行的解决方法。 1.升级或重新安装该应用程序 应用程序无法运行的一个常见原因是程序文件已经损坏。此时,可以尝试升级或重新安装该应用程序以解决问题。以下是示例: 示例一:重新安装Chrome浏览器 如果您使用的是Chrome浏览器…

    other 2023年6月25日
    00
  • 磁盘读写和数据库读写哪个效率更高?磁盘读写与数据库的关系

    磁盘读写是指计算机系统对硬盘等存储设备的读写操作,包括从磁盘读取数据到内存,将内存中的数据写入磁盘等。而数据库读写是指对数据库进行查询、插入、更新、删除等操作。磁盘读写和数据库读写在性能方面的比较要视具体情况而定,以下是两个不同情况的示例: 小量数据的场景下,磁盘读写效率更高。 假设有一个网站的日访问量不大,每次访问只需要读取几条固定的数据。在这个场景下,采…

    other 2023年6月28日
    00
  • 服务器硬件知识普及篇(需要配置服务器的朋友可以参考)第4/7页

    以下是 “服务器硬件知识普及篇(需要配置服务器的朋友可以参考)第4/7页” 的完整攻略: 什么是RAID RAID (Redundant Array of Independent Disks) 是一种磁盘阵列技术。通过将多个硬盘组合成一个虚拟磁盘单元,RAID 提供了数据冗余、数据备份和性能提升等功能。常见的 RAID 级别有 RAID 0, RAID 1,…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部