这里写目录标题
- 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,那么就按降序顺序存储数据,不然会出现下图这种情况: