您的位置:首页 > 其它

STL学习笔记----11.STL算法之 (变动性算法)

2012-03-07 16:09 363 查看
一. 变动性算法

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: