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

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);
  • 参数:

    • firstlast: 表示范围的输入迭代器。
    • 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;
}

  写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~  


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

相关文章:

  • 【力扣热题100】[Java版] 刷题笔记-169. 多数元素
  • Java面向对象高级2
  • 编写红绿起爆线指标(附带源码下载)
  • kafka面试题解答(四)
  • [前端]NodeJS常见面试题目
  • 知识图谱6:neo4j查询语句
  • 文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳排放分摊的综合能源服务商交易策略》
  • HttpRunner原来还能这么用,大开眼界!!!
  • WPF创建进度条
  • 「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用
  • YOLOv5算法进阶改进(5)— 主干网络中引入SCConv | 即插即用的空间和通道维度重构卷积
  • android项目之调用webview
  • TypeScript学习记录
  • LeetCode51. N-Queens
  • java后端实现登录退出功能,并用过滤器验证
  • android trace文件的抓取与查看方法
  • 【Lidar】基于Python的点云数据下采样+体素显示
  • tauri中使用rust调用动态链接库例子(使用libloading库和libc库)
  • ubuntu22.04 arrch64版在线安装java环境
  • C语言-指针讲解(3)
  • 用通俗的方式讲解Transformer:从Word2Vec、Seq2Seq逐步理解到GPT、BERT
  • 人机交互3——多主题多轮对话
  • TOD和PPS精确时间同步技术
  • C#面向对象
  • 2023网络安全产业图谱
  • 02-Java集合之双列集合,如HashMap,Hashtable,Properties,TreeMap的底层结构