C++常用的STL及方法 (下)
2021-06-08 06:02
标签:ble swap enter 使用 blank include pre c++ tar ? C++常用的STL及方法 (上) : C++常用的 STL 及方法 (中上) : C++常用的 STL 及方法 (中) : C++常用的 STL 及方法 (中下) : ? ? ? C++中的 提供了非常多的算法, 使用这些算法能极大的提高编程效率. ? ? ? algorithm 中提供的算法大多数对迭代器有要求, 且需要 STL ? 迭代器大致可分为 5 类 : ? ? ? 输入迭代器一般使用 istream_iterator, 其需要 STL ? 下面用一个 accumulate 函数来演示 istream_iterator 的操作 ? 输出结果 ? ? ? ? 输出流迭代器一般使用 ostream_iterator. 其需要 STL ? 下面用一个 vector 输出的例子来演示 ostream_iterator ? 输出结果 ? ? ? ? 顾名思义就是迭代器只能往一个方向移动, 例如 foward_list 使用的迭代器前向迭代器. ? ? ? ? 顾名思义就是迭代器可以双向移动, 例如 list 使用的迭代器就是双向迭代器. 该迭代器支持单向迭代器操作 ? ? ? ? 该迭代器的特点是元素可以使用下标访问, 迭代器之间可以相加相减, 这是单向迭代器和部分双向迭代器 (如 list ) 所做不到的. 常见的有 该迭代器支持单向和双向迭代器操作 ? ? ? ? 用途 : 求出两者的最大值 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 求出两者的最小值 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 求绝对值 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 交换两个者的值 一般形式 : ? 输出结果 ? 输出结果 ? ? ? ? 用途 : 反转容器 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 求一次排列 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 为容器的某一范围写入新值. 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 对容器进行升序排序 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 查找元素 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 求出元素在容器中出现的次数. 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 求和. 需要 STL 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 通过二分法找到第一个小于等于指定元素的元素. 注意使用时容器必须是有序的 ( 即 1, 2, 3 .... ) 一般形式 : ? ? 输出结果 ? ? ? ? 用途 : 通过二分法找到第一个大于指定元素的元素. 注意使用时容器必须是有序的 ( 即 1, 2, 3 .... ) 一般形式 : ? ? 输出结果 ? ? ? ? C++常用的STL及方法 (下) 标签:ble swap enter 使用 blank include pre c++ tar 原文地址:https://www.cnblogs.com/ICeVe/p/14536340.html前言
目录
STL -- 泛型算法
algorithm
输入迭代器
输出迭代器
前向迭代器
双向迭代器
随机访问迭代器
输入迭代器
操作
解释
istream_iterator
in 从输入流 is (一般为 cin ) 读取 typename 类型的值
istream_iterator
读取类型为 typename 的 istream_iterator 迭代器, 表示尾后位置
in1 == in2, in1 != in2
用来检查迭代器是否绑定的是相同的输入. 且 in1 和 in2 的 typename 必须相同.
*in
返回从流中读取的值
in -> mem
与 (*in).mem含义相同
++in, in++
从输入流读取下一个值
#include
1
2
14 /*迭代器发生了移动, 因此为14*/
返回迭代器目录
输出迭代器
操作
解释
ostream_iterator
out 将类型为 typename 的值写到输入流 os ( 一般为cout )中
ostream_iterator
out 将类型为 typename 的值写到输入流 os 中, 每个输出后面有个字符串 d
out = val
将 val 写入到 out 所绑定 os 中来输出结果, 其中 out 和 val 的类型必须兼容
#include
1 2 3 4 5
返回迭代器目录
前向迭代器
返回迭代器目录
双向迭代器
返回迭代器目录
随机访问迭代器
返回迭代器目录
max()
max(val1, val2, cmp);
/* val1 和 val2 为变量或常量, cmp 为二元谓词, 可视情况添加. 返回类型由 val1 和 val2 决定*/
#include
2
返回目录
min()
min(val1, val2, cmp);
/* val1 和 val2 为变量或常量, cmp为二元谓词, 可视情况添加. 返回类型由 val1 和 val2 决定*/
#include
1
返回目录
abs()
abs(val);
/* val1 为变量或常量, 返回类型由 val 决定*/
#include
1.4
返回目录
swap()
swap(x, y);
/* x 和 y 为变量. 返回类型为 void */
#include
1
2
返回目录
reverse()
reverse(begin, end);
/* begin 和 end 限定范围. 返回类型为 void . 需要双向迭代器 */
#include
7 6 5 4 3 2 1 8 9 10
返回目录
next_permutation()
next_permutation(begin, end, cmp);
/* begin 和 end 限定范围. cmp 为二元谓词, 可视情况添加. 返回类型为 bool. 需要双向迭代器*/
#include
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
返回目录
fill()
fill(begin, end, val);
/* begin 和 end 限定范围. val 为变量或常量. 返回类型为 void */
#include
4 4 4 4 4 6 7 8 9 10
输出结果
sort()
sort(begin, end, cmp);
/* begin 和 end 限定范围. cmp 为二元谓词, 可以视情况添加. 返回类型为 void */
#include
1 2 3 4 5 6 7 8 9 10
返回目录
find()
find(begin, end, val);
/* begin 和 end 限定范围. val 为要查找的元素. 返回一个指向该元素的迭代器*/
#include
4
返回目录
count()
count(begin, end, val);
/* begin 和 end 限定范围. val 为要需要求的元素. 返回类型为 ptrdiff_t */
#include
3
1
2
1
2
1
返回目录
accumulate()
accumulate(begin, end, init);
/* begin 和 end 限定范围, 或者是输入迭代器. init 为初始值. 返回类型为 int */
#include
15
返回目录
lower_bound()
lower_bound(begin, end, val, cmp);
/*
begin 和 end 限定范围. val 为要查找的元素. cmp为二元谓词, 可视情况添加.
返回一个小于等于 val 的元素的迭代器
*/
#include
4
返回目录
upper_bound()
upper_bound(begin, end, val, cmp);
/*
begin 和 end 限定范围. val 为要查找的元素. cmp 为二元谓词, 可视情况添加.
返回一个大于 val 的元素的迭代器
*/
#include
4
返回目录
参考: