Replace()算法比较简单,它的作用是将容器中的值替换为相应的值,可以先看下算法的定义:
// TEMPLATE FUNCTION replace
template<class _FwdIt,
class _Ty> inline
void replace(_FwdIt _First, _FwdIt _Last,
const _Ty& _Oldval, const _Ty& _Newval)
{ // replace each matching _Oldval with _Newval
_DEBUG_RANGE(_First, _Last);
_Replace(_Unchecked(_First), _Unchecked(_Last),
_Oldval, _Newval);
}
算法的参数为容器的头迭代器,尾迭代器,指定值与替换值,而replace()算法没有仿函数重载,它的实现方式为
template<class _FwdIt,
class _Ty> inline
void _Replace(_FwdIt _First, _FwdIt _Last,
const _Ty& _Oldval, const _Ty& _Newval)
{ // replace each matching _Oldval with _Newval
for (; _First != _Last; ++_First)
if (*_First == _Oldval)
*_First = _Newval;
}
方法为遍历容器,当容器的值为指定值时,将其替换为替换值。
下面做个演示
vector<int> a(5);
createContainer(a);
showContainer(a);
replace(a.begin(), a.end(), 1, 2);
showContainer(a);