#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <set>
#include <list>
#include <algorithm>
#include <functional>
#include <string>
#include <iterator> //输出流
using namespace std;
template <typename T>
void printElem(T &t)
{
T::iterator it;
for (it = t.begin(); it != t.end(); it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
void main091_copy()
{
vector<int> vecIntA;
vecIntA.push_back(1);
vecIntA.push_back(3);
vecIntA.push_back(5);
vecIntA.push_back(7);
vecIntA.push_back(9);
vector<int> vecIntB;
vecIntB.resize(vecIntA.size());
/*
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
{
// copy [_First, _Last) to [_Dest, ...)
if (_First == _Last)
return (_Dest);
else
{
// worth copying, check then copy
_DEBUG_RANGE(_First, _Last);
_DEBUG_POINTER(_Dest);
return (_Copy_impl(_Unchecked(_First), _Unchecked(_Last), _Dest, _Is_checked(_Dest)));
}
}
*/
copy(vecIntA.begin(), vecIntA.end(), vecIntB.begin()); //vecIntB: {1,3,5,7,9}
printElem(vecIntB);
}
//将指定范围内的所有等于oldValue的元素替换成newValue。
void main092_replace()
{
vector<int> vecIntA;
vecIntA.push_back(1);
vecIntA.push_back(3);
vecIntA.push_back(5);
vecIntA.push_back(3);
vecIntA.push_back(9);
/*
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(vecIntA.begin(), vecIntA.end(), 3, 8); //{1,8,5,8,9}
printElem(vecIntA);
}
bool GreatThree(int &num)
{
return (num > 3);
}
//将指定范围内所有操作结果为true的元素用新值替换。
void main093_replace_if()
{
vector<int> vecIntA;
vecIntA.push_back(1);
vecIntA.push_back(3);
vecIntA.push_back(5);
vecIntA.push_back(7);
vecIntA.push_back(9);
/*
void replace_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);
}
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;
}
*/
replace_if(vecIntA.begin(), vecIntA.end(), GreatThree, 8); // GreaterThree的定义在上面
printElem(vecIntA);
}
//交换两个容器的元素
void main094_swap()
{
vector<int> vecIntA;
vecIntA.push_back(1);
vecIntA.push_back(3);
vecIntA.push_back(5);
vector<int> vecIntB;
vecIntB.push_back(2);
vecIntB.push_back(4);
/*
void swap(vector<_Ty, _Alloc>& _Left, vector<_Ty, _Alloc>& _Right)
{
// swap _Left and _Right vectors
_Left.swap(_Right);
}
*/
swap(vecIntA, vecIntB); //交换 全部交换,大小不限制
printElem(vecIntA);
printElem(vecIntB);
}
int main()
{
//main091_copy();
//main092_replace();//将指定范围内的所有等于oldValue的元素替换成newValue。
//main093_replace_if();//将指定范围内所有操作结果为true的元素用新值替换。
main094_swap(); //交换两个容器的元素
cout<<"\nhello"<<endl;
system("pause");
return 0;
}
常用STL算法4_拷贝和替换
最新推荐文章于 2020-05-29 16:46:06 发布