std库学习①:transform
程序员文章站
2024-03-24 23:10:04
...
std::transform在指定的范围内应用于给定的操作,并将结果存储在指定的另一个范围内。要使用std::transform函数需要包含<algorithm>头文件。
以下是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);
-
一元操作
template <class InputIterator, class OutputIterator, class UnaryOperation>
OutputIterator transform (InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperation op);
该函数旨在将[first1,last1)【左闭右开】这一段内容复制写入result中,并且是在对迭代器遍历的每一个元素进行op的操作后才写入result中。
如op的一个实现 即将[first1, last1]范围内的每个元素加5,然后依次存储到result中。
int add_(int i){ return i + 5; }
实际使用如下:
std::transform(temp.begin(),temp.end(),result,add_);
亦可以使用lamda表达式:
std::transform(temp.begin(),temp.end(),result,[](int i){ return i + 5; });
-
二元操作
template <class InputIterator1, class InputIterator2,
class OutputIterator, class BinaryOperation>
OutputIterator transform (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, OutputIterator result,
BinaryOperation binary_op);
使用[first1, last1]范围内的每个元素作为第一个参数调用binary_op,并以first2开头的范围内的每个元素作为第二个参数调用binary_op,每次调用返回的值都存储在以result开头的范围内。给定的binary_op将被连续调用last1-first1+1次。binary_op可以是函数指针或函数对象或lambda表达式。
如binary_op的一个实现即将first1和first2开头的范围内的每个元素相加,然后依次存储到result中。
int add_(int, a, int b) { return a + b };
实际使用如下:
std::transform(temp.begin(),temp.end(),temp.begin(),result,add_);
同样可以使用lamda表达式,示例如一元操作。
-
参考
推荐阅读
-
std库学习①:transform
-
solr学习笔记--从数据库中创建索引dataimport 博客分类: 热门技术 solr
-
Android Binder 机制初步学习 笔记(三)—— Binder 进程通讯库简介
-
MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等) 博客分类: 数据库
-
SQLITE学习笔记一(打开、操作及关闭数据库,C程序实现)
-
SQLITE学习笔记一(打开、操作及关闭数据库,C程序实现)
-
SQLITE学习笔记二(数据库管理,命令行操作)
-
Hibernate学习总结(1)——快速上手hibernate操作数据库
-
【java】JETM--Java™的执行时间测量库简单学习(一) 博客分类: java知识总结 javajetm
-
H2嵌入式数据学习三步曲 博客分类: h2db嵌入式数据库 h2db嵌入式数据库