std::transform在指定的范围内应用于给定的操作,并将结果存储在指定的另一个范围内。

以下是std::transform的两个声明,一个是对应于一元操作,一个是对应于二元操作

template <class InputIterator, class OutputIterator, class UnaryOperation>OutputIterator transform (InputIterator first1, InputIterator last1,OutputIterator result, UnaryOperation op);template <class InputIterator1, class InputIterator2,class OutputIterator, class BinaryOperation>OutputIterator transform (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, OutputIterator result,BinaryOperation binary_op);

举例

// transform algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::transform
#include <vector>       // std::vector
#include <functional>   // std::plusint op_increase (int i) { return ++i; }int main () {std::vector<int> foo;std::vector<int> bar;// set some values:for (int i=1; i<6; i++) {foo.push_back (i*10);                         // foo: 10 20 30 40 50}bar.resize(foo.size());                         // allocate spacestd::transform (foo.begin(), foo.end(), bar.begin(), op_increase); // bar: 11 21 31 41 51// std::plus adds together its two arguments:std::transform (foo.begin(), foo.end(), bar.begin(), foo.begin(), std::plus<int>());  // foo: 21 41 61 81 101std::cout << "foo contains:";for (std::vector<int>::iterator it=foo.begin(); it!=foo.end(); ++it) {std::cout << ' ' << *it;}std::cout << '\n';return 0;
}

参考文献

transform - C++ Reference

C++/C++11中std::transform的使用_网络资源是无限的-CSDN博客_std transform

std::transform使用相关推荐

  1. C++/C++11中std::transform的使用

    std::transform函数是将某操作应用于指定范围的每个元素.要使用std::transform函数需要包含<algorithm>头文件. 以下是对std::transform的解释 ...

  2. 【c++】映射表std::map

    文章内容为网络搜集内容 std::map 映射表(Map)容器是一个按特定顺序存储以键值对组合而成的元素的关联容器 // <map> template < class Key,cla ...

  3. 13.transform确保目标空间足够大

    以一个例子开始讨论: int transmogrify(int x); // 该函数更具x生成一个新的值 std::vector<int> values; ... std::list< ...

  4. lambda 和 std::function

    1. Lambda函数的用处 lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式. C++11 的 l ...

  5. C++ 标准程序库std::string 详解

    现在一般不再使用传统的char*而选用C++标准程序库中的string类,是因为string标准程序和char*比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,集成的操作函数足以完 ...

  6. std::string的用法 .

    本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员.事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和delete取代了malloc和free,且C+ ...

  7. 用std::string取代char*

    用std::string取代char* 本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员.事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和dele ...

  8. std::back_inserter()的解释和使用

    std::back_inserter()的解释和使用 back-inserter是一种用于为容器添加元素的迭代器,其设计目的是避免容器中的原元素被覆盖,在容器的末尾自动插入新元素. // transf ...

  9. std::string详解

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至 ...

最新文章

  1. 桌面倒计时2.0 涉及知识点详解及源码分享
  2. redis 发布订阅实际案例_Redis源码分析之发布订阅+慢查询+排序以及监视器
  3. python opencv 如何检测模糊图像?自动判断模糊程度 cv2.Laplacian().var()
  4. 对传统视觉惯性的颠覆
  5. ubuntu入门知识
  6. 2022中国供应链物流创新科技报告
  7. CVE-2012-1876漏洞分析
  8. iOS弹窗UIAlertController的使用
  9. qt creator纯C或C++项目在windows下的命令行中文乱码解决
  10. 洛谷P3871 [TJOI2010]中位数(splay)
  11. 腾讯新出了一款音乐app,它能代替QQ音乐吗?
  12. html上自动显示汉字拼音,原来html上用这个标签显示拼音
  13. 在Win10中安装Openfoam
  14. 计算机基础技能都有点什么,计算机基础技能学习材料.ppt
  15. keyboard ios 虚拟键盘 删除键的响应
  16. Emacs 显示左侧行号
  17. 六西格玛奠基人之张驰染阳杂记
  18. 实时操作系统和非实时操作系统的区别
  19. 多线程生产者消费者模型
  20. matlab norm函数使用_MATLAB 中NORM运用

热门文章

  1. UCloud与NTT达成合作,提供可靠跨地域混合云服务
  2. 智慧城市搞圈地卖设备的思路该结束了
  3. 《CCNA无线640-722认证考试指南》——导读
  4. 第3课:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错...
  5. 第一次作业,针对软件工程这门课程提出五个疑问。
  6. Linux分区的认识
  7. matlab正态分布
  8. DWZ基于ajax重复请求的修复
  9. 2012 ARM嵌入式开发应用研讨会杂谈
  10. Citrix Receiver For Linux 预览版