C++算法补充---STL

news2024/11/23 2:37:55

这里写目录标题

  • 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.coloradmin.cn/o/1564368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营三刷day42 | 动态规划之背包问题 416. 分割等和子集

三刷day42 416. 分割等和子集确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 416. 分割等和子集 题目链接 解题思路: 这是一维的背包问题 只有确定了如下四点,才能把01背包问题套到本题上来。 背包的体积为sum / 2背…

vscode shadertoy插件,非常方便的glsl着色器编写工具

很著名的shadertoy网站,集合了非常多大神利用数学写出美妙的shader效果。像shadertoy创始人之一的IQ大神它在这方面有很多的建树。他的利用光线步进和躁声可以创建很多不可思议的3D场景。 vscode有一件shadertoy的插件,安装后可以新建一个*.glsl文件&am…

分布式任务调度框架XXL-JOB

1、概述 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 官方文档:https://www.xuxueli.com/xxl-job/#%E4%BA%8C%E3%80%81%E5%BF%AB%E9%80%9F%E…

安卓主板MT8390(Genio 700)_MTK联发科Linux开发板方案

MediaTek Genio 700 (MT8390)是一款高性能的边缘 AI 物联网平台,专为智能家居、互动零售、工业与商业应用而设计。提供快速响应的边缘计算能力、先进的多媒体功能、广泛的传感器和连接方式,且支持多任务操作系统。 MT8390安卓核心…

Java代码示例:演示多态特性及子类方法重写(day17)

java代码里面体现多态的特点: 第一步创建一个父类father, 然后创建子类subclasses, 最后创建一个DemoMulti, 上面的父类特有的方法不是私有的,因此子类能够继承。 新建一个父类方法Father 创建子类subclasses 在下面的代码中…

Aurora8b10b(2)上板验证

文章目录 前言一、AXI_Stream数据产生模块二、上板效果总结 前言 上一篇内容我们已经详细介绍了基于aurora8b10b IP核的设计,本文将基于此进一步完善并且进行上板验证。 设计思路及代码思路参考FPGA奇哥系列网课 一、AXI_Stream数据产生模块 AXIS协议是非常简单的…

单片机中的RAM vs ROM

其实,单片机就是个小计算机。大计算机少不了的数据存储系统,单片机一样有,而且往往和CPU集成在一起,显得更加小巧灵活。 直到90年代初,国内容易得到的单片机是8031:不带存储器的芯片,要想工作&a…

Linux网络编程一(协议、TCP协议、UDP、socket编程、TCP服务器端及客户端)

文章目录 协议1、分层模型结构2、网络应用程序设计模式3、ARP协议4、IP协议5、UDP协议6、TCP协议 Socket编程1、网络套接字(socket)2、网络字节序3、IP地址转换4、一系列函数5、TCP通信流程分析 第二次更新,自己再重新梳理一遍… 协议 协议:指一组规则&…

【tensorflow框架神经网络实现鸢尾花分类—优化器】

文章目录 1、前言2、神经网络参数优化器2.1、SGD2.2、SGDM2.3、Adagrad2.4、RMSProp2.5、Adam 3、实验对比不同优化器4、结果对比 1、前言 此前,在【tensorflow框架神经网络实现鸢尾花分类】一文中使用梯度下降算法SGD,对权重 w w w和偏置 b b b进行更新…

STM32学习和实践笔记(4):分析和理解GPIO_InitTypeDef GPIO_InitStructure (c)

第二个成员变量是GPIOSpeed_TypeDef GPIO_Speed;也与int a一样同理。 GPIOSpeed_TypeDef是一个枚举类型,其定义如下: typedef enum { GPIO_Speed_10MHz 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef; #define IS_GPI…

网络协议学习——HTTPS

目录 ​编辑 一,认识HTTPS 二,加密方式 1,对称式加密 2,非对称式的加密 3,数据指纹(数据摘要) 4,数据签名 三,HTTPS的工作原理 实现方式 数字证书 一&#xff0c…

FFmpeg获取视频详情

话不多说&#xff0c;直接上代码&#xff1a; pom依赖&#xff1a; <!--视频多媒体工具包 包含 FFmpeg、OpenCV--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.3</versi…

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

中间件其实是一个方法&#xff0c; 在.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{"…

vue项目入门——index.html和App.vue

vue项目中的index.html文件 在Vue项目中&#xff0c;index.html文件通常作为项目的入口文件&#xff0c;它包含了Vue应用程序的基础结构和配置。 该文件的主要作用是引入Vue框架和其他必要的库&#xff0c;以及定义Vue应用程序的启动配置。 import Vue from vue import App …

论文浅尝 | cTBLS:使用对话表格增强大型语言模型

笔记整理&#xff1a;金日辉&#xff0c;东南大学硕士&#xff0c;研究方向为表格模态数据相关的处理任务 链接&#xff1a;https://arxiv.org/pdf/2303.12024.pdf 1、动机 让人工智能对话具备多模态能力&#xff0c;可以拓宽人类与此类系统的对话范围。多模态会话人工智能面临…

【Linux】查看某个进程的tcp全连接队列长度

TCP三次握手成功后,会把连接放到全连接队列里,等待服务器端accept后移除。 如下图所示,图片转自:https://zhuanlan.zhihu.com/p/547279481 下图转自博客:https://zhuanlan.zhihu.com/p/340016138 TCP三次握手过程中,第一次握手server收到client的syn后,内核会把该连接存…

面向C++程序员的Rust教程(二)

先序文章请看&#xff1a; 面向C程序员的Rust教程&#xff08;一&#xff09; 所有权与移动语义 要说Rust语言跟其他语言最大的区别&#xff0c;那笔者觉得非数这个所有权和移动语义莫属。 深浅复制 对于绝大多数语言来说&#xff0c;变量/对象之间的赋值通常都是复制语义。…

Spring中BeanFactoryPostProcessor详解

目录 功能与作用 使用案例 spring提供的常见BeanFactoryPostProcessor 1.EventListenerMethodProcessor 2.BeanDefinitionRegistryPostProcessor 功能与作用 使用案例 spring提供的唯一BeanDefinitionRegistryPostProcessor 总结 功能与作用 参考BeanFactoryPostProce…

Kaggle:收入分类

先看一下数据的统计信息 import pandas as pd # 加载数据&#xff08;保留原路径&#xff0c;但在实际应用中建议使用相对路径或环境变量&#xff09; data pd.read_csv(r"C:\Users\11794\Desktop\收入分类\training.csv", encodingutf-8, encoding_errorsrepl…

蓝桥杯练习笔记(十六)

蓝桥杯练习笔记&#xff08;十六&#xff09; 一、 输入示例&#xff1a; 3 1 2 1 11 3 4 74 5 3这是用到了m叉树的结论&#xff1a;对于某个m叉树的一个节点n&#xff0c;假如其有完整子树&#xff0c;则其左子节点l为l(n-1)m2&#xff0c;右子节点r为rmn1。基于此我们可以快…