ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

我不太懂的STL(学到老活到老)

2022-06-07 11:33:05  阅读:134  来源: 互联网

标签:活到老 学到老 STL transform int last1 result first1 op


STL 的一些用法

在工程实践中,总是能看到新的未曾了解过的STL函数或用法。每次都得重新查阅,比较麻烦。将一些不懂的内容记录下来,以备时时翻阅

std::transform

参考链接:https://blog.csdn.net/fengbingchun/article/details/63252470

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);

对于一元操作,将op应用于[first1, last1)范围内的每个元素,并将每个操作返回的值存储在以result开头的范围内。给定的op将被连续调用last1-first1次。op可以是函数指针或函数对象或lambda表达式。

对于二元操作,使用[first1, last1)范围内的每个元素作为第一个参数调用binary_op,并以first2开头的范围内的每个元素作为第二个参数调用binary_op,每次调用返回的值都存储在以result开头的范围内。给定的binary_op将被连续调用last1-first1次。binary_op可以是函数指针或函数对象或lambda表达式。

实例:

//一元: 将[first1, last1)范围内的每个元素加5,然后依次存储到result中
int op_increase(int i) {return (i + 5)};
std::transform(first1, last1, result, op_increase);

//二元:将first1和first2开头的范围内的每个元素相加,然后依次存储到result中。
int op_add(int, a, int b) {return (a + b)};
std::transform(first1, last1, first2, result, op_add);

 

标签:活到老,学到老,STL,transform,int,last1,result,first1,op
来源: https://www.cnblogs.com/wiesslibrary/p/16351137.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有