96.STL-遍历算法 transform
目录
transform 语法:
功能描述:
函数原型:
代码示例:
transform
是 C++ 标准模板库(STL)中的一个算法,用于对一个范围内的元素进行转换并将结果存储到另一个范围。以下是简要解释和一个示例:
transform
语法:
template <class InputIterator, class OutputIterator, class UnaryOperation>
OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op);
参数:
first
、last
: 表示范围的输入迭代器。result
: 表示输出范围的迭代器。op
: 一元操作,用于对范围内的每个元素进行转换。返回值:
result
(输出迭代器)。
功能描述:
- 搬运容器到另一个容器中
函数原型:
- transform(iterator beg1, iterator end1, iterator beg2, _func);
//beg1 源容器开始迭代器
//end1 源容器结束迭代器
//beg2 目标容器开始迭代器
//_func 函数或者函数对象
搬运的目标容器必须要提前开辟空间,否则无法正常搬运
代码示例:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 一元仿函数,用于将元素值不变地搬运到目标容器
class TransForm
{
public:
int operator()(int val)
{
return val;
}
};
// 仿函数,用于输出元素值
class MyPrint
{
public:
void operator()(int val)
{
cout << val << " ";
}
};
void test01()
{
vector<int> v;
for (int i = 0; i < 10; i++)
{
v.push_back(i);
}
for_each(v.begin(), v.end(), MyPrint());
cout << endl;
vector<int> vTarget; // 目标容器
vTarget.resize(v.size()); // 目标容器需要提前开辟空间
// 使用 transform 算法搬运元素值
transform(v.begin(), v.end(), vTarget.begin(), TransForm());
// 使用 for_each 输出目标容器中的元素值
for_each(vTarget.begin(), vTarget.end(), MyPrint());
}
int main()
{
test01();
system("pause");
return 0;
}
写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~