当前位置: 首页 > article >正文

c++遍历算法的transform算法

transform 算法函数用于对指定范围内的元素进行一个操作,并将结果存储到另一个范围中。

template<class InputIterator, class OutputIterator, class UnaryOperation> OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op);

功能:
对范围 [first, last) 内的每个元素应用一元操作 op,并将结果依次存储在范围 [result, result + (last - first)) 中。

返回值:
返回指向存储结果的范围的尾后迭代器 result + (last - first)

注意事项:

  • 要确保目标范围 [result, result + (last - first)) 有足够的空间来存储转换后的结果。
  • transform 函数可以用于任何支持迭代器的容器(如向量、链表、数组等)。
  • 需要包含 <algorithm> 头文件。

总结:
transform 算法用于对指定范围内的元素进行一个操作,并将结果存储到另一个范围中。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<functional>
#include<vector>
#include<algorithm>
using namespace std;
//transform容器不会提前给目标容器分配内存,要提前分配
struct myadd
{
	int operator()(int val)
	{
		return val + 100;
	}
};
void test01()
{
	vector<int>v;
	v.push_back(23);
	v.push_back(22);
	v.push_back(11);
	vector<int>v2;
	//手动分配内存
	v2.resize(v.size());
	/*for (; _UFirst != _ULast; ++_UFirst, (void) ++_UDest) {
		*_Dest = _Func(*_UFirst);
	
	return _Dest;
}*/
	transform(v.begin(), v.end(), v2.begin(), myadd());
	for_each(v2.begin(), v2.end(), [](int val)->void{ cout << val << " "; });//返回类型为void
}
struct myadd2
{
	int operator()(int val1, int val2)
	{
		return val1 + val2;
	}
};
void test02()
{
	vector<int>v;
	v.push_back(23);
	v.push_back(22);
	v.push_back(11);
	vector<int>v2;
	v2.push_back(100);
	v2.push_back(200);
	v2.push_back(299);
	v2.push_back(200);

	int a;
	/*if (v.size() > v2.size())
	{
		a = v.size();
	}
	else
	{
		a = v2.size();
	}*/
	a = max(v.size(), v2.size());
	vector<int>v3;
	v3.resize(a);
	transform(v.begin(), v.end(), v2.begin(), v3.begin(), myadd2());
	for_each(v3.begin(), v3.end(), [](int val)->void { cout << val << " "; });//返回类型为void
	//结果//123 222 310 0
}
int main()
{
	test02();
	system("pause");
	return 0;
}


http://www.kler.cn/a/160786.html

相关文章:

  • 单例模式详解:如何优雅地实现线程安全的单例
  • 什么是两化融合
  • Qt 编写插件plugin,支持接口定义信号
  • Django 的 ModelViewSet 中的 get_queryset 方法自定义查询集
  • HTML(超文本标记语言)
  • Nebula NGQL语言的使用 一
  • Python-上下文管理器
  • Matlab 在一个文件中调用另一个文件中的函数
  • CMakeLists中下载github仓库代码和设置代理
  • 【华为OD题库-082】TLV解析II-Java
  • 备考六级day1
  • mybatis的分页插件
  • SCI论文——respectively用法
  • Vue3整合Element Plus过程
  • 创业6个月裤衩都赔掉了;2023生成式AI年度大事表;AI工程师的自我修养;LLM开发者成长计划;OpenAI LLM入门课程 | ShowMeAI日报
  • Stable Diffusion Automatic1111 Web UI和dreambooth扩展的安装教程
  • 艾泊宇产品战略:低价的战争:阿里、京东、拼多多的终局推演
  • ssm党务政务服务热线平台源码和论文答辩PPT
  • L0、Linux常用命令
  • Linux学习笔记2
  • 什么是 AOP,AOP 的作用是什么?
  • numpy实现神经网络
  • 软件工程之UML建模
  • RocketMq环境搭建
  • AC840. 模拟散列表
  • 软件开发测试系统的建立