replace/replace_if详解
来源:互联网 发布:延伫乎吾将反得乎 编辑:程序博客网 时间:2024/05/21 10:42
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
for (;_First != _Last; ++_First)
if(*_First == _Oldval)
*_First = _Newval;
}
template<class _FwdIt,
class_Ty> inline
voidreplace(_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_if和前面的_if系列函数一样,提供返回值为bool的但参数函数.如果返回值为true,则替换.
// TEMPLATEFUNCTION replace_if
template<class _FwdIt,
class_Pr,
class_Ty> inline
void_Replace_if(_FwdIt _First, _FwdIt _Last, _Pr _Pred,const_Ty& _Val)
{ // replace each satisfying _Pred with _Val
for (;_First != _Last; ++_First)
if(_Pred(*_First))
*_First = _Val;
}
template<class _FwdIt,
class_Pr,
class_Ty> inline
voidreplace_if(_FwdIt _First, _FwdIt _Last, _Pr _Pred,const_Ty& _Val)
{ // replace each satisfying _Pred with _Val
_DEBUG_RANGE(_First, _Last);
_DEBUG_POINTER(_Pred);
_Replace_if(_Unchecked(_First),_Unchecked(_Last),
_Pred, _Val);
}
这两个函数的实现码很简单.这里不过多说明.
举例:
template<typenameT>
bool isTrue( T _val )
{
return( _val % 2 ) == 0;
}
int main()
{
vector<int>vecInt;
for ( int i = 0;i < 10;++ i)
{
vecInt.push_back( i );
}
cout<<"vecIntsource:\n";
copy( vecInt.begin(),vecInt.end(),ostream_iterator<int>( cout,"" ) );
replace(vecInt.begin(),vecInt.end(),2,1 );
cout<<"\nvecIntreplace:\n";
copy(vecInt.begin(),vecInt.end(),ostream_iterator<int>(cout," " ) );
replace_if(vecInt.begin(),vecInt.end(),isTrue<int>,10);
cout<<"\nvecIntreplace:\n";
copy(vecInt.begin(),vecInt.end(),ostream_iterator<int>(cout," " ) );
system( "pause");
return0;
}
- replace/replace_if详解
- replace,replace_if,replace_copy,repace_copy_if
- STl-replace_if() trim,split,replace
- C++ replace,replace_if,replace_copy,replace_copy_if
- STL中replace/replace_if例子
- STL_Algorithm4: Replace, replace_if, replace copy, replace_copy_if
- STL 之replace,replace_if,replace_copy,replace_copy_if
- C++标准库---替换元素replace()&replace_if()
- STL 之replace,replace_if,replace_copy,replace_copy_if
- STL算法replace,replace_if,replace_copy.replace_copy_if
- STL常用算法: replace.replace_copy.replace_if.replace_copy_if
- replace_if
- 泛型算法系列32:replace()&&replace_copy()&&replace_if()&&replace_copy_if()
- 变异算法之替换(replace, replace_if, replace_copy, replace_copy_if)
- STL algorithm算法replace,replace_if和replace_copy,replace_copy_if(49)
- STL_算法_替换(replace、replace_copy、replace_if、replace_copy_if)
- replace_if 用法
- C# regex replace 详解
- C++中通过溢出覆盖虚函数指针列表执行代码
- 梦境
- Arrays的toString()方法
- lucene3.6 中文分词 文件索引
- hdu 2222
- replace/replace_if详解
- 改变apache的端口
- Android游戏开发系统控件-TabSpec与TabHost
- replace_copy/replace_copy_if
- 【内存池系列】内存池设计与应用
- lucene 中文分词 内存索引
- Android中实现滑动翻页—使用ViewFlipper
- JS禁止右击菜单、复制、选择
- 只有时间可以说明一切