最近在看C++的标准库,对transform和for_each两个函数发生兴趣,于是自己尝试着写了下这两个函数的实现。
C++的标准库中transform有两种形式,我打算拿
template<class InputIterator1, class InputIterator2, class OutputIterator,
class BinaryFunction>
OutputIterator transform(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
OutputIterator _Result,
BinaryFunction _Func
);
进行说明。
具体代码如下:
namespace testSTL {
template<class InputIterator1, class InputIterator2, class OutputIterator,
class BinaryFunction>
OutputIterator transform(
InputIterator1 _First1,
InputIterator1 _Last1,
InputIterator2 _First2,
OutputIterator _Result,
BinaryFunction _Func
)
{
while( _First1 != _Last1 ){
*_Result = _Func(*_First1,*_First2);
_First1++;
_First2++;
_Result++
}
return _Result;
}