std::transform使用
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使用相关推荐
- C++/C++11中std::transform的使用
std::transform函数是将某操作应用于指定范围的每个元素.要使用std::transform函数需要包含<algorithm>头文件. 以下是对std::transform的解释 ...
- 【c++】映射表std::map
文章内容为网络搜集内容 std::map 映射表(Map)容器是一个按特定顺序存储以键值对组合而成的元素的关联容器 // <map> template < class Key,cla ...
- 13.transform确保目标空间足够大
以一个例子开始讨论: int transmogrify(int x); // 该函数更具x生成一个新的值 std::vector<int> values; ... std::list< ...
- lambda 和 std::function
1. Lambda函数的用处 lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式. C++11 的 l ...
- C++ 标准程序库std::string 详解
现在一般不再使用传统的char*而选用C++标准程序库中的string类,是因为string标准程序和char*比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,集成的操作函数足以完 ...
- std::string的用法 .
本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员.事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和delete取代了malloc和free,且C+ ...
- 用std::string取代char*
用std::string取代char* 本文主要针对那些有C语言背景知识,而现在开始使用C++语言编程的程序员.事实上,C++继承了大多数C语言的功能,但有些方面还是不得不要留意的,如new和dele ...
- std::back_inserter()的解释和使用
std::back_inserter()的解释和使用 back-inserter是一种用于为容器添加元素的迭代器,其设计目的是避免容器中的原元素被覆盖,在容器的末尾自动插入新元素. // transf ...
- std::string详解
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至 ...
最新文章
- 桌面倒计时2.0 涉及知识点详解及源码分享
- redis 发布订阅实际案例_Redis源码分析之发布订阅+慢查询+排序以及监视器
- python opencv 如何检测模糊图像?自动判断模糊程度 cv2.Laplacian().var()
- 对传统视觉惯性的颠覆
- ubuntu入门知识
- 2022中国供应链物流创新科技报告
- CVE-2012-1876漏洞分析
- iOS弹窗UIAlertController的使用
- qt creator纯C或C++项目在windows下的命令行中文乱码解决
- 洛谷P3871 [TJOI2010]中位数(splay)
- 腾讯新出了一款音乐app,它能代替QQ音乐吗?
- html上自动显示汉字拼音,原来html上用这个标签显示拼音
- 在Win10中安装Openfoam
- 计算机基础技能都有点什么,计算机基础技能学习材料.ppt
- keyboard ios 虚拟键盘 删除键的响应
- Emacs 显示左侧行号
- 六西格玛奠基人之张驰染阳杂记
- 实时操作系统和非实时操作系统的区别
- 多线程生产者消费者模型
- matlab norm函数使用_MATLAB 中NORM运用