C++之常用的拷贝和替换算法
copy
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>void Myptint(int val)
{cout << val << " ";
}void test()
{vector<int> v;for (int i = 0; i < 10; i++){v.push_back(i);}vector<int>v2;v2.resize(v.size());copy(v.begin(), v.end(), v2.begin());for_each(v2.begin(), v2.end(), Myptint);cout << endl;
}int main()
{test();system("pause");return 0;
}
replace
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>void Myptint(int val)
{cout << val << " ";
}void test()
{vector<int> v;v.push_back(10);v.push_back(30);v.push_back(50);v.push_back(20);cout << "替换前" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;//将50替换为500replace(v.begin(), v.end(), 50, 500);cout << "替换后" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;}int main()
{test();system("pause");return 0;
}
replace_if
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>void Myptint(int val)
{cout << val << " ";
}class Greater30
{
public:bool operator()(int val){return val >= 30;}
};void test()
{vector<int> v;v.push_back(10);v.push_back(30);v.push_back(50);v.push_back(20);cout << "替换前" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;//将大于等于30替换为500replace_if(v.begin(), v.end(), Greater30(), 500);cout << "替换后" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;}int main()
{test();system("pause");return 0;
}
swap
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>void Myptint(int val)
{cout << val << " ";
}void test()
{vector<int> v;vector<int>v2;for (int i = 0; i < 10; i++){v.push_back(i);v2.push_back(i + 10);}cout << "交换前" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;for_each(v2.begin(), v2.end(), Myptint);cout << endl;swap(v, v2);cout << "交换后" << endl;for_each(v.begin(), v.end(), Myptint);cout << endl;for_each(v2.begin(), v2.end(), Myptint);cout << endl;
}int main()
{test();system("pause");return 0;
}