C++算法补充---STL

这里写目录标题

  • C++STL
    • 容器
      • 字符串函数(string容器函数)
        • 字符串转字符
    • 算法
      • 交换函数
      • 拿到容器或者数组的第一个最大(小)值元素的下标或者值
      • 排序函数
      • 求字符数组的有效长度
      • atoi函数(将字符串类型的数字转为真正的int型数字)
      • string转字符 再将数字字符转为int型数字
      • ceil向上取整(注意double)
      • 向下取整(注意double)
      • 四舍五入(用于四舍五入为整数)(注意double)
      • 四舍五入2(使用自定义函数或者printf,同样只能用于四舍五入为整数)
      • 用于小数的四舍五入(四舍五入保留小数的?位)
      • 补充前导0
      • 绝对值
      • sort降序(自定义排序)
      • 全排列

C++STL

容器

字符串函数(string容器函数)

字符串转字符

在这里插入图片描述
string对象调用data()函数 会返回他的 const char* 也就是字符数组 之后取单个字符即可

算法

交换函数

在这里插入图片描述
swap(int a,int b)
可以交换a和b的位置 是C++的库函数 直接用即可

拿到容器或者数组的第一个最大(小)值元素的下标或者值

在这里插入图片描述
如果不加* 那么拿到的就是下标 (但是要减去首地址或者第一个迭代器)
如果加星 那么就会直接输出最大值

排序函数

在这里插入图片描述
其中的sort是排序函数 传入两个参数 第一个是字符串的第一个字符 第二个是字符串的最后一个字符 他是一个实参形参同步的函数 没有返回值 但是会把字符串进行排序 并同步实参

在这里插入图片描述
sort()使用时要包含头文件#include 之后传入参数 有三个 第一个参数是待排序的第一个元素的指针 第二个参数是待排序的最后一个元素的指针 第三个是排序规则 可以不写 不写的话默认从小到大

如果想从大到小 可以传入greater()

或者也可以自定义排序规则 定义一个返回值为bool的函数 参数传入两个数
具体规则 可以将两个数想象为先后传入 想象为待排序数组(或字符串)中的相邻的两个元素 之后比较返回真假值就可以确定比较法则
在这里插入图片描述

求字符数组的有效长度

!!! 对于第一种方式要包含头文件《cstring》
在这里插入图片描述
第二种方式 由于结尾\0的存在 输出的数会多一个 减去即可

对于非字符数组:
在这里插入图片描述
没有尾字符 所以数是对的

这里补充 单纯的end() 和begin()函数 会直接返回数组的首指针 和 尾指针的下一个

atoi函数(将字符串类型的数字转为真正的int型数字)

在这里插入图片描述
在这里插入图片描述
无需包含cstdlib头文件,但是要把string转为char *
使用s.c_str()即可,(无需包含文件)
其中s是字符串,如下图:
在这里插入图片描述

string转字符 再将数字字符转为int型数字

在这里插入图片描述
在这里插入图片描述

首先通过图中通过key得到了value 是一个string类型的字符 调用string函数 c_str()函数 转为字符数组类型 然后用atoi(字符数组)再将数字字符转为int型数字

详情可查阅算法专栏“算法知识+错题本”一文中STL部分

ceil向上取整(注意double)

在这里插入图片描述
在这里插入图片描述

ceil(a),如果a是2.5,那么结果就是3;如果结果是2.0000001,那么结果还是3

向下取整(注意double)

在这里插入图片描述
在这里插入图片描述

四舍五入(用于四舍五入为整数)(注意double)

在这里插入图片描述
在这里插入图片描述

四舍五入2(使用自定义函数或者printf,同样只能用于四舍五入为整数)

printf(“%.xf”,x)可以实现四舍五入
.0f,是保留到整数,四舍五入
在这里插入图片描述
在这里插入图片描述
仅用于整数四舍五入
如果用于小数:那么要满足要保留的位数后面还有两个有效数字,编号为1、2,2号不能为0

用于小数的四舍五入(四舍五入保留小数的?位)

在这里插入图片描述

补充前导0

一种补充前导0的办法。printf(“%02d”,x)表示输出两位数字,如果x是个位,就在前面补0,如果x是两位数,则忽略前面那个0

绝对值

在这里插入图片描述

sort降序(自定义排序)

在这里插入图片描述
如果是结构体,那么传入引用

全排列

全排列有两个API,一个是next_permutation(初始迭代器,尾后迭代器),一个是pre_permutation(初始迭代器,尾后迭代器),二者的用法均如下图所示,首先定义一个数组,或者其他容器,(按顺序存储),然后进行do-while循环,就可以将全排列之后的结果返回出来
在这里插入图片描述
在这里插入图片描述

特别注意:要注意数据顺序的差异,如果使用next_permutation,那么要按升序顺序存储数据,如果是pre_permutation,那么就按降序顺序存储数据,不然会出现下图这种情况:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RUST Rover 条件编译 异常处理

按官方处理发现异常 会报异常 error: failed to parse manifest at C:\Users\topma\RustroverProjects\untitled2\Cargo.toml 修改模式如下才能正常编译 网上说明 这样处理 [features] print-a [] print-b [] full ["print-a","print-b"]

Vue3组件计算属性的缓存

Vue.js3组件的方法-CSDN博客 使用Vue3组件的计算属性-CSDN博客 Vue3组件计算属性的get和set方法-CSDN博客 计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时,才会重新求值。 计算属性的写法和方法很相似,完全可以在method…

鸿蒙OS元服务开发:【(Stage模型)学习窗口沉浸式能力】

一、体验窗口沉浸式能力说明 在看视频、玩游戏等场景下,用户往往希望隐藏状态栏、导航栏等不必要的系统窗口,从而获得更佳的沉浸式体验。此时可以借助窗口沉浸式能力(窗口沉浸式能力都是针对应用主窗口而言的),达到预…

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…

Apache Paimon实时数据糊介绍

Apache Paimon 是一种湖格式,可以使用 Flink 和 Spark 构建实时 数据糊 架构,用于流式和批处理操作。Paimon 创新地将湖格式和 LSM(日志结构合并树)结构相结合,将实时流式更新引入湖架构中。 Paimon 提供以下核心功能: 实时更新: 主键表支持大规模更新的写入,具有非常…

day4|gin的中间件和路由分组

中间件其实是一个方法, 在.use就可以调用中间件函数 r : gin.Default()v1 : r.Group("v1")//v1 : r.Group("v1").Use()v1.GET("test", func(c *gin.Context) {fmt.Println("get into the test")c.JSON(200, gin.H{"…

Redis的安装部署

目录 1、关闭防火墙 2、yum安装gcc依赖包 3、提前准备好安装包并解压在opt目录下 4、进入redis目录下进行make编译 5、选择用于安装的目录 6、执行软件包提供的 install_server.sh 脚本文件设置 Redis 服务所需要的相关配置文件 7、一直回车直到出现以下提示 8、 把redi…

ClickHouse集群搭建教程

文章目录 前言一、相关介绍1. 端口介绍 二、部署规划1. 准备centos2. 配置集群免密登录3. 部署规划 三、ckman依赖部署1. prometheus搭建1.1 下载并解压1.2 配置启停服务1.3 promethues配置(可选,不影响ckman核心功能)1.4 prometheus启停命令1.4.1 启动prometheus1.…

3D模型格式转换工具HOOPS Exchange如何将3D文件加载到PRC数据结构中?

HOOPS Exchange是一款高效的数据访问工具,专为开发人员设计,用于在不同的CAD(计算机辅助设计)系统之间进行高保真的数据转换和交换。由Tech Soft 3D公司开发,它支持广泛的CAD文件格式,包括但不限于AutoCAD的…

商场促销--策略模式

1.1 商场收银软件 package com.lhx.design.pattern.test;import java.util.Scanner;public class Test {public static void main(String[] args){System.out.println("**********************************************"); System.out.println("《大话设计模式…

Folder Icons for Mac v1.8 激活版文件夹个性化图标修改软件

Folder Icons for Mac是一款Mac OS平台上的文件夹图标修改软件,同时也是一款非常有意思的系统美化软件。这款软件的主要功能是可以将Mac的默认文件夹图标更改为非常漂亮有趣的个性化图标。 软件下载:Folder Icons for Mac v1.8 激活版 以下是这款软件的一…

XAMPP本地开发环境软件的最佳替代品

在开发新网站或应用时,选择合适的本地开发环境是至关重要的。本地开发环境让您可以在自己的电脑上搭建和测试网站或应用,直到它们准备好被迁移到线上服务器。一些工具甚至提供了推送到生产环境的功能,以及设置多个本地站点的能力。 XAMPP是一…