c++遍历算法的transform算法

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

template 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 函数可以用于任何支持迭代器的容器(如向量、链表、数组等)。
  • 需要包含  头文件。

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

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
using namespace std;
//transform容器不会提前给目标容器分配内存,要提前分配
struct myadd
{
	int operator()(int val)
	{
		return val + 100;
	}
};
void test01()
{
	vectorv;
	v.push_back(23);
	v.push_back(22);
	v.push_back(11);
	vectorv2;
	//手动分配内存
	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()
{
	vectorv;
	v.push_back(23);
	v.push_back(22);
	v.push_back(11);
	vectorv2;
	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());
	vectorv3;
	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;
}

你可能感兴趣的:(c++,算法,开发语言)