mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
更新一些 stl 算法
This commit is contained in:
parent
c04525974a
commit
724ff206f9
|
@ -168,6 +168,7 @@ move|将范围 `[first1,last1)`(参数)内的元素移动到从 `result`(
|
||||||
swap|交换 `a`、`b`(参数)两个对象的值
|
swap|交换 `a`、`b`(参数)两个对象的值
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
|
// 简单查找算法,要求输入迭代器(input iterator)
|
||||||
find(beg, end, val); // 返回一个迭代器,指向输入序列中第一个等于 val 的元素,未找到返回 end
|
find(beg, end, val); // 返回一个迭代器,指向输入序列中第一个等于 val 的元素,未找到返回 end
|
||||||
find_if(beg, end, unaryPred); // 返回一个迭代器,指向第一个满足 unaryPred 的元素,未找到返回 end
|
find_if(beg, end, unaryPred); // 返回一个迭代器,指向第一个满足 unaryPred 的元素,未找到返回 end
|
||||||
find_if_not(beg, end, unaryPred); // 返回一个迭代器,指向第一个令 unaryPred 为 false 的元素,未找到返回 end
|
find_if_not(beg, end, unaryPred); // 返回一个迭代器,指向第一个令 unaryPred 为 false 的元素,未找到返回 end
|
||||||
|
@ -177,4 +178,51 @@ all_of(beg, end, unaryPred); // 返回一个 bool 值,判断是否所有元素
|
||||||
any_of(beg, end, unaryPred); // 返回一个 bool 值,判断是否任意(存在)一个元素满足 unaryPred
|
any_of(beg, end, unaryPred); // 返回一个 bool 值,判断是否任意(存在)一个元素满足 unaryPred
|
||||||
none_of(beg, end, unaryPred); // 返回一个 bool 值,判断是否所有元素都不满足 unaryPred
|
none_of(beg, end, unaryPred); // 返回一个 bool 值,判断是否所有元素都不满足 unaryPred
|
||||||
|
|
||||||
|
// 查找重复值的算法,传入向前迭代器(forward iterator)
|
||||||
|
adjacent_find(beg, end); // 返回指向第一对相邻重复元素的迭代器,无相邻元素则返回 end
|
||||||
|
adjacent_find(beg, end, binaryPred); // 返回指向第一对相邻重复元素的迭代器,无相邻元素则返回 end
|
||||||
|
search_n(beg, end, count, val); // 返回一个迭代器,从此位置开始有 count 个相等元素,不存在则返回 end
|
||||||
|
search_n(beg, end, count, val, binaryPred); // 返回一个迭代器,从此位置开始有 count 个相等元素,不存在则返回 end
|
||||||
|
|
||||||
|
// 查找子序列算法,除 find_first_of(前两个输入迭代器,后两个前向迭代器) 外,都要求两个前向迭代器
|
||||||
|
search(beg1, end1, beg2, end2); // 返回第二个输入范围(子序列)在爹一个输入范围中第一次出现的位置,未找到则返回 end1
|
||||||
|
search(beg1, end1, beg2, end2, binaryPred); // 返回第二个输入范围(子序列)在爹一个输入范围中第一次出现的位置,未找到则返回 end1
|
||||||
|
find_first_of(beg1, end1, beg2, end2); // 返回一个迭代器,指向第二个输入范围中任意元素在第一个范围中首次出现的位置,未找到则返回end1
|
||||||
|
find_first_of(beg1, end1, beg2, end2, binaryPred); // 返回一个迭代器,指向第二个输入范围中任意元素在第一个范围中首次出现的位置,未找到则返回end1
|
||||||
|
find_end(beg1, end1, beg2, end2); // 类似 search,但返回的最后一次出现的位置。如果第二个输入范围为空,或者在第一个输入范围为空,或者在第一个输入范围中未找到它,则返回 end1
|
||||||
|
find_end(beg1, end1, beg2, end2, binaryPred); // 类似 search,但返回的最后一次出现的位置。如果第二个输入范围为空,或者在第一个输入范围为空,或者在第一个输入范围中未找到它,则返回 end1
|
||||||
|
|
||||||
|
// 其他只读算法,传入输入迭代器
|
||||||
|
for_each(beg, end, unaryOp); // 对输入序列中的每个元素应用可调用对象 unaryOp,unaryOp 的返回值被忽略
|
||||||
|
mismatch(beg1, end1, beg2); // 比较两个序列中的元素。返回一个迭代器的 pair,表示两个序列中第一个不匹配的元素
|
||||||
|
mismatch(beg1, end1, beg2, binaryPred); // 比较两个序列中的元素。返回一个迭代器的 pair,表示两个序列中第一个不匹配的元素
|
||||||
|
equal(beg1, end1, beg2); // 比较每个元素,确定两个序列是否相等。
|
||||||
|
equal(beg1, end1, beg2, binaryPred); // 比较每个元素,确定两个序列是否相等。
|
||||||
|
|
||||||
|
// 二分搜索算法,传入前向迭代器或随机访问迭代器(random-access iterator),要求序列中的元素已经是有序的。通过小于运算符(<)或 comp 比较操作实现比较。
|
||||||
|
lower_bound(beg, end, val); // 返回一个迭代器,表示第一个小于等于 val 的元素,不存在则返回 end
|
||||||
|
lower_bound(beg, end, val, comp); // 返回一个迭代器,表示第一个小于等于 val 的元素,不存在则返回 end
|
||||||
|
upper_bound(beg, end, val); // 返回一个迭代器,表示第一个大于 val 的元素,不存在则返回 end
|
||||||
|
upper_bound(beg, end, val, comp); // 返回一个迭代器,表示第一个大于 val 的元素,不存在则返回 end
|
||||||
|
equal_range(beg, end, val); // 返回一个 pair,其 first 成员是 lower_bound 返回的迭代器,其 second 成员是 upper_bound 返回的迭代器
|
||||||
|
binary_search(beg, end, val); // 返回一个 bool 值,指出序列中是否包含等于 val 的元素。对于两个值 x 和 y,当 x 不小于 y 且 y 也不小于 x 时,认为它们相等。
|
||||||
|
|
||||||
|
// 只写不读算法,要求输出迭代器(output iterator)
|
||||||
|
fill(beg, end, val); // 将 val 赋予每个元素,返回 void
|
||||||
|
fill_n(beg, cnt, val); // 将 val 赋予 cnt 个元素,返回指向写入到输出序列最有一个元素之后位置的迭代器
|
||||||
|
genetate(beg, end, Gen); // 每次调用 Gen() 生成不同的值赋予每个序列,返回 void
|
||||||
|
genetate_n(beg, cnt, Gen); // 每次调用 Gen() 生成不同的值赋予 cnt 个序列,返回指向写入到输出序列最有一个元素之后位置的迭代器
|
||||||
|
|
||||||
|
// 使用输入迭代器的写算法,读取一个输入序列,将值写入到一个输出序列(dest)中
|
||||||
|
copy(beg, end, dest); // 从输入范围将元素拷贝所有元素到 dest 指定定的目的序列
|
||||||
|
copy_if(beg, end, dest, unaryPred); // 从输入范围将元素拷贝满足 unaryPred 的元素到 dest 指定定的目的序列
|
||||||
|
copy_n(beg, n, dest); // 从输入范围将元素拷贝前 n 个元素到 dest 指定定的目的序列
|
||||||
|
move(beg, end, dest); // 对输入序列中的每个元素调用 std::move,将其移动到迭代器 dest 开始始的序列中
|
||||||
|
transform(beg, end, dest, unaryOp); // 调用给定操作(一元操作),并将结果写到dest中
|
||||||
|
transform(beg, end, beg2, dest, binaryOp); // 调用给定操作(二元操作),并将结果写到dest中
|
||||||
|
replace_copy(beg, end, dest, old_val, new_val); // 将每个元素拷贝到 dest,将等于 old_val 的的元素替换为 new_val
|
||||||
|
replace_copy_if(beg, end, dest, unaryPred, new_val); // 将每个元素拷贝到 dest,将满足 unaryPred 的的元素替换为 new_val
|
||||||
|
merge(beg1, end1, beg2, end2, dest); // 两个输入序列必须都是有序的,用 < 运算符将合并后的序列写入到 dest 中
|
||||||
|
merge(beg1, end1, beg2, end2, dest, comp) // 两个输入序列必须都是有序的,使用给定的比较操作(comp)将合并后的序列写入到 dest 中
|
||||||
|
|
||||||
```
|
```
|
Loading…
Reference in New Issue
Block a user