stl::(10)常用遍历算法

#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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值