#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
void print(int v)
{
cout << v << "-";
}
// 函数对象
class print2
{
public:
void operator()(int v)
{
cout << v <<"-";
count++;
}
int count;
};
// 绑定参数输出
class print3: public binary_function<int ,int ,void>
{
public:
void operator()(int v ,int start) const
{
cout << v +start <<"-";
}
};
void forEach()
{
vector<int> v;
for (int i=0;i<10;i++)
{
v.push_back(i);
}
for_each(v.begin(), v.end(), print);
cout << endl;
print2 p2=for_each(v.begin(),v.end(), print2());
cout << "count:" << p2.count << endl;;
for_each(v.begin(), v.end(), bind2nd(print3(), 1000));
}
// transform元素搬运
class TransForm
{
public:
int operator()(int val)
{
return val;
}
};
void transForm()
{
vector <int> v; // 原容器
for (int i=0;i<10;i++)
{
v.push_back(i);
}
vector<int > vTarget; // 目标容器
vTarget.resize(v.size());
transform(v.begin(), v.end(),vTarget.begin(), TransForm());
cout << endl;
for_each(vTarget.begin(), vTarget.end(), [](int val) {
cout << val << " "; });
}
class TransForm2
{
public:
int operator()(int val,int val2)
{
return val+val2;
}
};
// 两个容器相加合到一个容器
void transForm2()
{
vector <int> v1; // 原容器1
vector <int> v2; // 原容器2
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
v2.push_back(i);
}
vector<int > vTarget; // 目标容器
vTarget.resize(v1.size());
transform(v1.begin(), v1.end(),v2.begin(), vTarget.begin(), TransForm2());
cout << endl;
for_each(vTarget.begin(), vTarget.end(), [](int val) {
cout << val << " "; });
}
int main()
{
forEach();
transForm();
transForm2();
}
stl::(10)常用遍历算法
猜你喜欢
转载自blog.csdn.net/qq_40329851/article/details/114423563
今日推荐
周排行