一. 变动性算法
copy() | 从第一个元素开始,复制某段区间 |
copy _backward() | 从最后一个元素开始,复制某段区间 |
transform() | 变动(并复制)元素,将两个区间的元素合并 |
merge() | 合并两个区间 |
swap_ranges() | 交换两区间内的元素 |
fill() | 以给定值替换每一个元素 |
fill_n() | 以给定值替换n个元素 |
generate() | 以某项操作的结果替换每一个元素 |
generate_n() | 以某项操作的结果替换n个元素 |
replace() | 将具有某特定值的元素替换为另一个值 |
replace()_if() | 将符合某准则的元素替换为另一个值 |
replace_copy() | 复制整个区间,同时并将具有某特定值的元素替换为另一个值 |
replace_copy_if() | 复制整个区间,同时并将符合某种准则的元素替换为另一个值 |
二. 复制元素
//将源区间[sourceBeg, sourceEnd]中所有元素复制到以destBeg为起点的目标区间去
//返回目标区间内最后一个被复制元素的下一个位置
//destBeg或destEnd不可处于[sourceBeg, sourceEnd]区间内
OutputIterator
copy (InputIterator sourceBeg,
InputIterator sourceEnd,
OutputIterator destBeg)
//将源区间[sourceBeg, sourceEnd]中所有元素复制到以destEnd为终点的目标区间去
BidirectionalIteratorl
copy_backward (BidirectionalIterator1 sourceBeg,
BidirectionalIterator1 source End,
BidirectionalIterator2 destEnd)
三. 转换和结合元素
1. 转换元素
//针对源区间[sourceBeg, sourceEnd)中的每一个元素调用op(elem)
//并将结果写到以destBeg起始的目标区间内
//返回目标区间内的"最后一个被转换元素"的下一位置
//sourceBeg与destBeg可以相同
OutputIterator
transform (InputIterator sourceBeg, InputIterator sourceEnd,
Output Iterator destEeg,
UnaryFunc op)
2. 将两序列的元素加以结合
//针对第一个源区间[source1Beg, source1End)以及从source2Beg开始的第二个源区间元素
//调用op(source1Elem, source2Elem),并将结果写入destBeg起始的目标区间内
OutputIterator
transform (InputIterator1 source1Beg, InputIterator1 source1End,
InputIterator2 source2Beg,
OutputIterator destBeg,
BinaryFunc op)
四. 互换元素内容
//将区间[beg1, end1)内的元素和从beg2开始的区间内的对应元素互换
//返回第二个区间中最后一个被交换元素的下一位置
ForwardIterator2
swap_ranges (ForwardIterator1 beg1, ForwardIterator1 end1,
ForwardIterator2 beg2)
五. 赋于新值
1. 赋于完全相同的数值
//将区间[beg, end)内的每一个元素都赋于新值newValue
void
fill (ForwardIterator beg, ForwardIterator end,
const T& newValue)
//将从beg开始的前num个元素赋于新值newValue
void
fill_n (OutputIterator beg,
Size num,
const T& newValue)
2. 赋于新产生的数值
//op()产生新值,并赋值给区间[beg, end)内的每个元素
void
generate (ForwardIterator beg, ForwardIterator end,
Func op)
//op()产生新值,并赋值给以beg起始的区间内的前num个元素
void
generate_n (OutputIterator beg,
Size num,
Func op)
六. 替换元素
1. 替换序列内的元素
//将区间[beg, end)内每一个与 oldValue 相等的元素替换为 newValue
void
replace (Forwardlterator beg, ForwardIterator end,
const T& oldValue,
const T& newValue)
//将区间[beg, end)内每一个令op(elem)为true的元素替换为 newValue
void
replace_if (ForwardIterator beg, ForwardIterator end,
UnaryPredicate op,
const T& newValue)
2. 复制并替换元素
//将源区间[beg, end)中的元素复制到以 destBeg 为起点的目标区间去
//同时将其中与 oldValue 相等的所有元素替换为 newValue
OutputIterator
replace_copy (InputIterator sourceBeg, InputIterator sourceEnd,
OutputIterator destBeg,
const T& oldValue, const T& newValue)
//将源区间[beg, end)中的元素复制到以 destBeg 为起点的目标区间去
//同时将其中使p(elem)为true的所有元素替换为 newValue
OutputIterator
replace_copy_if (InputIterator sourceBeg, InputIterator sourceEnd,
OutputIterator destBeg,
UnaryPredicate op, const T& newValue)