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日

相关文章

  • 统一社会信用代码生成器

    统一社会信用代码生成器 什么是统一社会信用代码 统一社会信用代码是由国务院颁布实施的一项新的统一编码标志,由18位数字和英文字符组成,用于统一登记和识别企业和法人单位的信息和活动。企业在进行注册、申请贷款、办理涉税业务等方面都需要用到统一社会信用代码。在我国实施数字化管理的大背景下,统一社会信用代码的重要性越来越显著。 为什么需要统一社会信用代码生成器 虽然…

    其他 2023年3月29日
    00
  • Java NIO实战之聊天室功能详解

    Java NIO实战之聊天室功能详解 简介 本文将介绍如何使用Java NIO实现一个简单的聊天室功能,包括客户端和服务器端的实现,以及如何使用Java NIO的相关API实现该功能。 聊天室功能介绍 聊天室功能是指用户可以登录到聊天室,然后可以发送消息给其他用户,也可以接收其他用户发送的消息,并在自己的聊天窗口中显示。聊天室功能是一种常见的用户交互方式,被…

    other 2023年6月27日
    00
  • CrystalDiskMark测试硬盘使用? CrystalDiskMark数据查看方法

    当我们想要测试硬盘的性能时,CrystalDiskMark是一个常用的工具。下面是使用CrystalDiskMark测试硬盘的完整攻略,并包含两个示例说明: 步骤一:下载和安装CrystalDiskMark 首先,您需要从CrystalDiskMark官方网站(https://crystalmark.info/en/software/crystaldiskm…

    other 2023年10月17日
    00
  • 「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块

    「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块 一、介绍 本篇文章将介绍如何使用Arduino控制RGB全彩LED模块。RGB全彩LED模块是一种能够输出红、绿、蓝三种颜色的LED模块,通过组合三种颜色可以输出各种颜色的光线。本篇文章将会介绍如何控制RGB全彩LED模块的颜色,并在实际环境中进行实验演示。 二、材料 Arduino UNO…

    其他 2023年3月28日
    00
  • python2.7.8setuptools下载及安装方法

    以下是详细讲解“Python 2.7.8 setuptools下载及安装方法”的完整攻略,过程中至少包含两条示例说明的标准Markdown格式文本: Python 2.7.8 setuptools下载及安装 setuptools是Python的一个重要的第三方库,它提供了一种方便的方式来安装、构建和分发Python包。本文将介绍如何下载和安装Python 2…

    other 2023年5月10日
    00
  • ModelAndView的介绍

    ModelAndView是Spring Boot框架中的一个类,用于将数据和视图封装到一起,返回给前端页面。在本文中,我们将详细介绍ModelAndView的作用和使用方法,并提供两个示例说明。 ModelAndView的作用 ModelAndView的作用是将数据和视图封装到一起,返回给前端页面。在Spring Boot框架中,我们可以使用ModelAnd…

    other 2023年5月5日
    00
  • swift调用oc方法

    当然,我可以为您提供有关“Swift调用OC方法”的完整攻略,以下是详细说明: Swift调用OC方法 在Swift中,可以通过桥接文件(Bridging Header)来调用OC方法。桥接文件是一个,用于将Swift代码和OC代码连接起来。以下是详细步骤: 创建桥文件 在Swift项目中,创建一个名“项目名]-Bridging-Header.h”的头文件,…

    other 2023年5月7日
    00
  • Redis 数据类型的详解

    Redis 数据类型的详解 Redis 是一种非常流行的内存键值数据库,它提供了多种不同的数据类型来存储和操作数据。这些数据类型包括:字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(sorted set)等。在本文中,我们将详细讲解这些数据类型以及如何在 Redis 中使用它们。 字符串(string) 字符串是 Red…

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