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

一. 变动性算法
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值