find(beg, end, val)
find_if(beg, end, unaryPred)
find_if_not(beg, end, unaryPred)
在[beg,end)内查找元素。若找到,返回一个迭代器,指向第1个满足条件的元素。若未找到,返回end。
count(beg, end, val)
count_if(beg, end, unaryPred)
统计[beg,end)内满足条件的元素的个数。返回一个计数器。
accumulate(beg, end, init)
accumulate(beg, end, init, binaryPred)
计算[beg,end)内所有值的和。和的初值从init指定的值开始。返回类型与init的类型相同。
equal(beg1, end1, beg2)
equal(beg1, end1, beg2, binaryPred)
判断[beg1,end1)与从beg2开始的序列是否相等。若[beg1,end1)中每个元素都与从beg2开始的序列中对应的元素相等,则返回true。
fill(beg, end, val)
fill_n(dest, cnt, val)
将val赋值给输入序列。返回一个迭代器,指向输出序列中写入的最后一个元素之后的位置。
copy(beg, end, dest)
copy_if(beg, end, dest, unaryPred)
copy_n(beg, n, dest)
将输入序列拷贝到输出序列。返回一个迭代器,指向输出序列中拷贝的最后一个元素之后的位置。
replace(beg, end, old_val, new_val)
replace_if(beg, end, unaryPred, new_val)
将[beg,end)中满足条件的元素替换为new_val。返回void。
replace_copy(beg, end, dest, old_val, new_val)
replace_copy_if(beg, end, dest, unaryPred, new_val)
将[beg,end)中的元素拷贝到从dest开始的输出序列,并将满足条件的元素替换为new_val。返回一个迭代器,指向输出序列中拷贝的最后一个元素之后的位置。
sort(beg, end)
sort(beg, end, comp)
对[beg,end)中的元素进行排序。返回void。
unique(beg, end)
unique(beg, end, binaryPred)
unique_copy(beg, end, dest)
unique_copy(beg, end, dest, binaryPred)
重排序列,通过覆盖实现“删除”相邻的重复元素。返回一个迭代器,指向不重复元素的尾后位置。
stable_sort(beg, end)
stable_sort(beg, end, comp)
对[beg,end)中的元素进行排序。稳定排序算法,维持相等元素的原有顺序。返回void。
partition(beg, end, unaryPred)
使用unaryPred划分[beg,end)中的元素。返回一个迭代器,指向最后一个满足unaryPred的元素之后的位置。若所有元素都不满足unaryPred,返回beg。
[capture list] (parameter list) ->return type {function body}
for_each(beg, end, unaryOp)
对输入序列中的每个元素应用可调用对象unaryOp。
stable_partition(beg, end, unaryPred)
使用unaryPred划分[beg,end)中的元素。返回一个迭代器,指向最后一个满足unaryPred的元素之后的位置。若所有元素都不满足unaryPred,返回beg。保持满足unaryPred的元素的相对位置。
transform(beg, end, dest, unaryOp)
transform(beg1, end1, beg2, dest, binaryOp)
调用特定操作Op,将结果写入输出序列。返回一个迭代器,指向输出序列最后一个变换的元素。输入序列与输出序列可相同。
auto newCallable = bind(callable, arg_list)
迭代器 | 描述 |
---|---|
插入迭代器 | 被绑定到一个容器上,用于向容器插入元素 |
流迭代器 | 被绑定到输入流或输出流上,用来遍历绑定的IO流 |
反向迭代器 | 迭代器反向移动,forward_list除外 |
移动迭代器 | 移动元素 |
// 插入迭代器操作
it = t
*it, ++it, it++
// istream_iterator操作
istream_iterator in(is);
istream_iterator end;
in1==in2, in1!=in2
*in
in->num
++in, in++
// ostream_iterator操作
ostream_iterator out(os);
ostream_iterator out(os, d);
out=val
*out, ++out, out++
迭代器类别 | 描述 |
---|---|
输入迭代器 | 只读不写,单遍扫描,只能递增 |
输出迭代器 | 只写不读,单遍扫描,只能递增 |
前向迭代器 | 可读可写,多遍扫描,只能递增 |
双向迭代器 | 可读可写,多遍扫描,递增递减 |
随机访问迭代器 | 可读可写,多遍扫描,支持全部迭代器运算 |
// 输入迭代器支持的操作
==, !=
++
* //只出现在赋值语句右侧
->
// 输出迭代器支持的操作
++
* //只出现在赋值语句左侧
// 前向迭代器支持的操作
==, !=
++
*
->
// 双向迭代器支持的操作
==, !=
++, --
*
->
iter[n]
alg(beg, end, args);
alg(beg, end, dest, args); // 假定目标空间足够容纳写入数据,或者dest被绑定到插入迭代器
alg(beg1, end1, beg2, args);// 假定从beg2开始的范围比[beg1, end1)至少一样大
alg(beg1, end1, beg2, end2, args);
unique(beq, end) // 使用==比较元素
unique(beq, end, comp) // 使用comp比较元素
find(beq, end, val) // 通过==找到值为val的元素
find_if(beq, end, pred) // 通过pred找到第一个满足条件的元素
reverse(beq, end) // 颠倒[beg, end)
reverse_copy(beq, end, dest) // 将[beg, end)逆序拷贝到dest
list和forward_list成员函数版本的算法 | 描述 |
---|---|
lst.reverse() | 颠倒lst中元素的顺序,返回void |
lst.sort() lst.sort(comp) |
对lst中的元素排序,返回void |
lst.remove(val) lst.remove_if(pred) |
调用erase删除满足条件的元素,返回void |
lst.unique() lst.unique(pred) |
调用erase删除重复的元素,返回void |
lst1.merge(lst2) lst1.merge(lst2, comp) |
将lst2合并到lst1,返回void |
list和forward_list中splice的参数 | 描述 |
---|---|
lst1.splice(p1, lst2) lst1.splice(p1, lst2, p2) lst1.splice(p1, lst2, b2, e2) |
将lst2的所有元素移动到lst1中p1之前的位置 将lst2中p2指向的元素移动到lst1中p1之前的位置 将lst2中[b2, e2)内的元素移动到lst1中p1之前的位置 |
flst1.splice_after(p1, flst2) flst1.splice_after(p1, flst2, p2) flst1.splice_after(p1, flst2, b2, e2) |
将flst2的所有元素移动到flst1中p1之后的位置 将flst2中p2之后的一个元素移动到flst1中p1之后的位置 将flst2中[b2, e2)内的元素移动到flst1中p1之后的位置 |