排序算法和拷贝替换的运用
//排序算法
//sort, random_shuffle
#include
#include
#include
#include
class Myprint
{
public:
void operator()(int val)
{
cout << val << " ";
}
};
void test5()
{
vector v;
v.push_back(10);
v.push_back(100);
v.push_back(30);
v.push_back(40);
//没有排序前打印数据
for_each(v.begin(), v.end(), Myprint());
cout << endl;
//排序
sort(v.begin(), v.end(), less());
//排序后打印
for_each(v.begin(), v.end(), Myprint());
cout << endl;
//洗牌
random_shuffle(v.begin(), v.end());
for_each(v.begin(), v.end(), Myprint());
}
//拷贝和替换
//copy, replace, replace_if, swap
class MyPrint
{
public:
void operator()(int val)
{
cout << val << " ";
}
};
class Less100
{
public:
bool operator()(int val)
{
return val < 100;
}
};
void test6()
{
vector v;
for (int i = 0; i < 10; i++)
{
v.push_back(i + 10);
}
vector vtarget;
vtarget.resize(v.size());
copy(v.begin(), v.begin() + 5, vtarget.begin());
for_each(vtarget.begin(), vtarget.end(), MyPrint());
cout << endl;
replace(vtarget.begin(), vtarget.end(), 0, 100); //将0替换成100
for_each(vtarget.begin(), vtarget.end(), MyPrint());
cout << endl;
replace_if(vtarget.begin(), vtarget.end(), Less100(), 2000); //Less100()谓词,replace_if条件替换,将小于100的原元素替换成2000
for_each(vtarget.begin(), vtarget.end(), MyPrint());
cout << endl;
}
int main()
{
//srand((unsigned int)time(NULL));
//test5();
test6();
system("pause");
return 0;
}