前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >transfrom算法

transfrom算法

作者头像
大忽悠爱学习
发布2021-03-02 14:39:22
2280
发布2021-03-02 14:39:22
举报
文章被收录于专栏:c++与qt学习

函数原型:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#include<iostream>
using namespace std;
#include<functional>
#include<vector>
#include<algorithm>
//打印输出
void a(const vector<int>& v)
{
	for (int i = 0; i < v.size(); i++)
	{
		cout << v[i] << " ";
	}
}
//1.传入一个函数
int p(int val)
{
	val = val + 10;
	cout << "val= " << val << endl;
	return val;
}
//2.传入一个函数对象
class p1 {
public:
	//仿函数
	int operator()(int val)
	{
		val = val + 100;
		cout << "val= " << val << endl;
		return val;
	}
};
void test()
{
	//treansfrom算法:要有返回值,因为要先进过函数处理,再传入所要搬运的容器
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);
	vector<int> v1;
	v1.push_back(520);
	v1.resize(v.size()+1);
	//1.传入一个函数
	//先把传入的v容器区间元素放入p函数进行操作,再放入v1容器传入迭代器的开始位置,进行搬运操作
	//v1容器指定大小要比v大,不然搬运的时候会因为大小不够而报错
	//区分与reszie重新指定大小的区别
	transform(v.begin(), v.end(), v1.begin()+1, p);
	cout << "-------------------------------------------" << endl;
	a(v1);
	cout << endl;
	//2.传入一个函数对象
	cout << "-------------------------------------------" << endl;
	transform(v.begin(), v.end(), v1.begin() + 1, p1());
	cout << "-------------------------------------------" << endl;
	a(v1);
}






class p2 {
public:
	int operator()(int val)
	{
		return val+100;
	}
};
class p3 {
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};
void test01()
{
	//先搬运再遍历
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	v.push_back(5);
	vector<int> v1;
	v1.resize(v.size());
	//搬运:如果不做任何操作,就返回本身的值
	transform(v.begin(), v.end(), v1.begin(), p2());
	//遍历
	//搬运过程中,如果发生改变,只会改变搬运进的容器,证明transfrom是值拷贝操作
	for_each(v1.begin(), v1.end(), p3());
	cout << endl;
	for_each(v.begin(), v.end(), p3());
}
int main()
{
	test01();
	system("pause");
	return 0;
}
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档