C++算法补充---STL

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,那么就按降序顺序存储数据,不然会出现下图这种情况:
在这里插入图片描述

相关推荐

  1. <span style='color:red;'>c</span>++<span style='color:red;'>补充</span>

    c++补充

    2024-04-03 06:16:01      36 阅读
  2. C++ STL泛型算法

    2024-04-03 06:16:01       38 阅读
  3. C+八股补充Record

    2024-04-03 06:16:01       42 阅读
  4. C++标准模板(STL)- 算法

    2024-04-03 06:16:01       94 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 06:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 06:16:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 06:16:01       82 阅读
  4. Python语言-面向对象

    2024-04-03 06:16:01       91 阅读

热门阅读

  1. uni-app选择多张图片上传并压缩——2024.04.02

    2024-04-03 06:16:01       35 阅读
  2. 前端|babel升级

    2024-04-03 06:16:01       34 阅读
  3. 【TypeScript系列】与其它构建工具整合

    2024-04-03 06:16:01       36 阅读
  4. GIN实例讲解

    2024-04-03 06:16:01       36 阅读
  5. centos7.9离线安装docker

    2024-04-03 06:16:01       39 阅读
  6. 安装gitlab笔记

    2024-04-03 06:16:01       36 阅读
  7. ASTM C1186-22 纤维水泥平板

    2024-04-03 06:16:01       36 阅读
  8. gitlab备份与恢复

    2024-04-03 06:16:01       37 阅读
  9. 【项目】牛马点评 问题汇总

    2024-04-03 06:16:01       34 阅读
  10. mysql 字段类型为json,后端用list接收

    2024-04-03 06:16:01       37 阅读
  11. linux系统编程 线程 p1

    2024-04-03 06:16:01       34 阅读