一些好用的c++ STL库函数

2023-05-16

stl可以说是懒癌患者福利了// 持续更新(随缘更新

全排列函数next_permutation

今天在洛谷做题的时候发现一个题简直是这个函数的完美应用
题目链接:洛谷P1088 火星人

头文件:#include < algorithm >

时间复杂度 :O(n)

函数原型:

     bool next_permutation(iterator start,iterator end)

该函数的作用是求全排列的下一项(这里其实还有一个prev_permutation函数是求上一项的,除此之外用法相同)这里的下一项指的是字典序列的下一项,如果存在下一项函数的返回值是true,不存在下一项返回false

下面来看个例子

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    char num[3]={'a','b','c'};
    do
    {
        cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;
    }while(next_permutation(num,num+3));
    return 0;
}  

这里对a,b,c进行全排列

输出结果:

在这里插入图片描述

需要注意的是这里num数组的初始化会对输出结果产生影响,因为该函数求的是下一个序列,所以如果初始数组不是按字典序第一个数组的话便不会再去便利之前的序列

比如说

char num[3]={'b','a','c'};

我们把num数组初始化过程中的a和b调换位置之后输出结果变为
在这里插入图片描述

突然发现next_permutation甚至可以自己重写cmp函数(这也太好用了吧)

贴个例子吧

int cmp(char a,char b) 
{
 if(tolower(a)!=tolower(b))//tolower 是将大写字母转化为小写字母.
 return tolower(a)<tolower(b);
 else
 return a<b;
}

另外附上开头那道题的AC代码

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <cstdio>
#include <vector>
#include <cstring>
#include <queue>
#include <map>
#include <stack>
#include <fstream>
typedef long long ll;
#define MAXN 500010
using namespace std;
int a[10010];
int main()
{
    int n,m;
    cin >> n >> m;
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for (int i=1;i<=m;i++)
        next_permutation(a+1, a+n+1);
    for (int i=1;i<n;i++)
        printf("%d ",a[i]);
    cout << a[n] << endl;
}

二分查找有关函数lower_bound upper_bound和 binary_search

时间复杂度:O(logn) 因为是二分

用法:

lower_bound( begin,end,num): 从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num): 从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

在从大到小的排序数组中,重载lower_bound()和upper_bound()

lower_bound( begin,end,num,greater() ): 从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num,greater() ): 从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

下面介绍几个单参数的用法

lower_bound(val): 返回容器中第一个值【大于或等于】val的元素的iterator位置。
功能:函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置.

注意:如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!

upper_bound(val): 返回容器中第一个值【大于】val的元素的iterator位置。
功能:函数upper_bound()返回的在前闭后开区间查找的关键字的上界,返回大于val的第一个元素位置

注意:返回查找元素的最后一个可安插位置,也就是“元素值>查找值”的第一个元素的位置。同样,如果val大于数组中全部元素,返回的是last。(注意:数组下标越界)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一些好用的c++ STL库函数 的相关文章

  • UAV Ubuntu18.04 PX4环境搭建

    Ubuntu18 04 PX4环境搭建 设备 VMware WorkStation16 0pro Ubuntu18 04 虚拟机 参考链接 XTDrone团队的 xff1a 仿真平台基础配置 xff08 PX4 1 11版 xff09 ht
  • 无人机遥控器使用说明

    遥控器使用说明 21 06 09 激光雷达避障使用时候设置的通道 开机前检查 所有拨码开关拨到最上方 SWA SWB两个开关 暂时没用 主要使用SWC和SWD 开机 同时按下两个开机键开机 模式说明 现在使用的模式主要设置了四个 红框 SW
  • Jetson Tx2配置PX4飞控实机开发环境

    Jetson Tx2使用 设备 Jetson Tx2板卡 xff08 原装或者底板加核心板 xff09 带Ubuntu系统电脑或者虚拟机Tx2原装数据线HDMI显示器鼠标键盘 刷机 参考链接 1 使用NVIDIA SDK Manager刷机
  • Jetson Nano刷系统教程

    Jetson Nano使用 设备 Jetson Nano板卡64G SD卡 xff08 最小16G xff09 读卡器HDMI显示器鼠标键盘 刷机 格式化SD卡 使用SD卡格式化工具进行格式化 下载镜像 进入英伟达下载中心 xff1a ht
  • 【Windows下搭建深度学习环境之TensorFlow篇】一气呵成,五步搞定TensorFlow的安装!TensorFlow的安装之路

    TensorFlow的安装之路 0 安装前须知1 安装Anaconda1 1 什么是虚拟环境 xff1f 1 2 安装Anaconda具体步骤1 3 添加环境变量 xff08 系统变量 xff09 1 4 修改Conda库和pip库的安装源
  • 关于putty出现access denied的问题解决方案

    关于putty出现access denied的问题解决方案 1 网上也说了很多 比较多一点的就是修改PermitRootLogin 在linux终端terminal执行下面命令 sudo gedit etc ssh sshd config
  • [四旋翼无人机PID仿真(一)

    64 四旋翼无人机串级PID仿真 四旋翼无人机的数学模型的建立 xff1a 在建立模型的过程中 xff0c 采用了欧拉角来进行数学模型的建立 首先进行无人机结构以及飞行原理的分析 xff0c 然后进行系统建模 xff0c 在建模的过程中 x
  • Django查询、删除、更新数据

    查询数据 查询无疑是数据库表中使用频率最高的操作 table object get 方法用于从数据库表中取得一条匹配的结果 xff0c 返回一个对象 xff0c 如果记录不存在的话 xff0c 那么它会报DoesNotExist类型错误 通
  • static 静态方法可以直接调用,不用创建对象

    static 静态方法可以直接调用 xff0c 不用创建对象
  • Java歌手评分系统

    有五个评委 xff0c 对一个歌手唱歌打分 xff0c 最终得分要求去掉最高分去掉最低分 xff0c 求平均分 注意要求的格式为 xff1a 输入第1个评委给分 97 1 输入第2个评委给分 89 2 输入第3个评委给分 88 6 输入第4
  • python3环境下使用cv_bridge

    环境 ubuntu18 04 ros melodic 由于ros自带的python版本是2 7 系统中的cv bridge是用python2编译的 xff0c 如果在python3环境中使用cv bridge xff0c 会报以下错误 xf
  • 运行VINS-MONO报的错

    刚刚安装完环境 xff0c 已经可以跑通Euroc数据集 xff0c 回忆一下值得记下来的注意事项 环境配置 我的电脑 xff1a Ubuntu18 04 ROS melodic Opencv3 4 3 首先 xff1a GitHub上的代
  • TX2安装realsense SDK和librealsense

    官网https github com IntelRealSense librealsense安装很简单 xff0c 一定要对应好SDK与ros包 realsense固件的版本 https github com IntelRealSense
  • VINS-Fusion轨迹评估

    代码轨迹输出修改 visualization cpp VINS Fusion master vins estimator src utility visualization cpp的150行左右 xff1a span class token
  • antd4中Form组件initialValues设置初始值无效,使用setFieldsValue动态赋值,getFieldsValus动态获取值

    首先说明initialValues这个属性 xff0c 这个属性antd官方给的是设置Form组件初始值 xff0c 但是有个问题如果值从后端请求那么initialValues可能会设置不上 xff0c 如果说用匿名组件的话 xff0c 修
  • 一个存放论文、笔记等的github仓库

    link xff1a PaperNote如果好用 xff0c 请给个star哦
  • 关于C++ Overload、Override、hide的一些总结

    一 override和overload区别 当需要一些相同的函数名接受不同的参数实现不同的功能时 xff0c 可以是运用函数重载来实现 但是 xff0c 函数的重载必须要在同一个作用域内重载 xff0c 才叫做重载 在不同作用域的两个同名函
  • C++多态的个人总结

    多态 多态分为运行时多态和编译期多态 xff0c 也被称作动态绑定和静态绑定或者晚绑定和早绑定 一 编译期多态 编译期多态主要是通过函数重载 xff0c 运算符重载还有模板函数 xff0c 模板类来是实现的 函数重载和运算符重载 xff0c
  • 嵌入式linux截图工具gsnap移植到OK6410 TX2416开发板

    交叉编译器版本 xff1a arm linux gcc 4 3 2 操作系统平台 xff1a Ubuntu 11 04 开发板平台 xff1a Tx2416 OK6410开发板 需要以下两个源文件 jpegsrc v6b tar gz gs
  • C++四种类型转换运算符的个人总结

    在这四种类型转换符包括static cast dynamic cast reinterpret cast const cast其中使用比较多的是dynamic cast和static cast 我们就从这两种类型转换符开始谈起 一 stat

随机推荐

  • 什么是系统调用?

    01 系统调用是什么 系统内核通过包装一些能够实现特定功能的特殊硬件指令和硬件状态 xff0c 即为内核函数 xff0c 通过一组称为系统调用 xff08 system call 的接口呈现给用户 xff0c 为系统调用而封装出来的API也
  • js中函数内部可以访问外部的变量

  • 视觉SLAM——小觅相机实测vins-mono步骤

    文章目录 step1 相机对应驱动 ubuntu SDK源码安装step2 相机测试 标定参数获取step3 安装vins并建立启动文件step4 开启相机节点并运行vins 使用的是双目深度板小觅相机 xff0c 只需要使用相机左摄像头和
  • ROS自定义消息类型 发布与订阅

    1 自定义消息类型与编译 1 在功能包里面创建一个msg文件夹 添加文档 文档名字为生成的头文件名和消息类型名 功能包名为消息类型的作用域 在msg文件夹下创建一个Person msg文件 xff0c 将下列代码复制进去 xff1a str
  • ROS的launch文件创建

    1 使用launch文件 Launch文件是ROS提供的 xff0c 可以同时运行多个nodes的文件 Launch文件以一种特殊的XML格式编写 xff0c 在ROS packages中使用广泛 创建launch功能包 首先在工作空间sr
  • ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)上

    Universal Robots xff08 优傲机器人 xff09 公司是一家引领协作机器人全新细分市场的先驱企业 xff0c 该公司成立于2005年 xff0c 关注机器人的用户可操作性和灵活度 xff0c 总部位于丹麦的欧登塞市 xf
  • ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下

    1参考链接 1 UR5 realsense手眼标定 2 优遨机器人UR5与RealSense深度摄像头D435的手眼标定 3 UR5 realsense手眼标定 4 标定所需二维码 5 ROS下UR5 usb cam单目外参标定 xff08
  • 链表的头节点理解

    不管带不带头节点 xff0c 头指针始终指向第一个结点 xff0c 头指针始终指向第一个结点 xff0c 而头节点是带头结点的链表的第一个结点 xff0c 结点内通常不存储信息 图示如下 xff1a 2 在建立链表时 xff0c 如果是不带
  • 汇编语言学习04之X86计算机组件

    X86计算机组件 本文首先通过检查典型主板配置以及围绕 CPU 的芯片组来了解 x86 如何与其他组件的集成 然后讨论内存 I O 端口和通用设备接口 最后说明汇编语言程序怎样利用系统硬件 固件 xff0c 并调用操作系统函数来实现不同访问
  • 【翻译】服务器后端的编程语言

    对于那些需要web服务的初创公司里的大型新项目 xff0c 我会选择何种后端编程语言呢 xff1f 在客户端侧有CSS html和javascript xff08 包括CoffeeScript和TypeScript这类衍生语言 xff09
  • ubuntu换内核的方法适用于16-18系统

    2080ti的卡兼容18 04的5 0 0 37 generic内核驱动需要用418 56 ubuntu内核突然变了 导致nvidia显卡驱动用不了 进行内核降级 解决方法 查找可用的内核版本 grep menuentry boot gru
  • 统计信号估计 (二) 最小方差无偏估计量(MUV)的线性模型

    MVU表示最小方差无偏估计 xff0c 下面将推导一个线性模型的MVUE xff0c 即最小方差无偏估计量 线性模型可以表示为 xff1a x 61 H 43 w
  • python二级考试-每日刷题7

    知识导图 文件 文件的类型 文件的打开和关闭 文件的读写
  • 树莓派入门(笔记本当显示屏)

    树莓派入门 笔记本当显示屏 your elephant的博客 CSDN博客 树莓派连接笔记本屏幕
  • python-sklearn实现神经网络(数据量小的情况)

    以下内容笔记出自 跟着迪哥学python数据分析与机器学习实战 xff0c 外加个人整理添加 xff0c 仅供个人复习使用 神经网络 xff08 neural network 模块重要的有两个类 xff0c MLPClassifier 分类
  • 想免像控?RTK/PPK无人机 vs GCP 测绘精度对比

    无人机航拍测绘具有精度高 作业效率高 数据分析能力强的特点 xff0c 很大程度上解决了人工测绘的痛点 因此 xff0c 无人机在测绘工程中的应用越来越广泛 精度对于测绘从业人员来说精度至关重要 xff0c 针对RTK PPK 无人机和使用
  • ROS的GPS驱动包

    ROS WiKi地址 http wiki ros org nmea gps driver ROS功能包 xff1a nmea gps driver Package to parse NMEA strings and publish a ve
  • 【操作系统】进程切换到底是怎么个过程?

    首先 xff0c 我们要了解 xff0c 进程切换是个什么过程 xff1f 进程切换概念 其实很简单 xff0c 进程切换就是从正在运行的进程中 xff0c 收回CPU的使用权利 xff0c 交给下一个要运行的进程 实际上 xff0c 因为
  • docker设置多个环境变量

    在命令行直接使用 e或 env xff0c env file xff0c 每个变量写一次 e 2 在dockerfile里设置 这里键值是以空格分开的
  • 一些好用的c++ STL库函数

    stl可以说是懒癌患者福利了 持续更新 xff08 随缘更新 xff09 全排列函数next permutation 今天在洛谷做题的时候发现一个题简直是这个函数的完美应用 题目链接 xff1a 洛谷P1088 火星人 头文件 xff1a