std::transform在指定的范围内应用于给定的操作,并将结果存储在指定的另一个范围内。要使用std::transform函数需要包含头文件。 std::transform有两个重载方法,一个是对应于一元操作,一个是对应于二元操作。
std::transform(first1, last1, first2, result, func);
对于二元操作,使用[first1, last1)范围内的每个元素作为第一个参数调用func, 并以first2开头的范围内的每个元素作为第二个参数调用func, 每次调用返回的值都存储在以result开头的范围内。给定的func将被连续调用last1-first1次。func可以是函数指针或函数对象或lambda表达式。
std::transform 一元操作std::transform(first1, last1, result, func);
对于一元操作,将func应用于[first1,last1)范围内的每个元素,并将每个操作返回的值存储在以result开头的范围内。给定的op将被连续调用last1-first1次。func可以是函数指针或函数对象或lambda表达式。
示例代码/*
std::transform用法
*/
#include
#include
#include
using namespace std;
int value_increase(int i){ return i + 5; }
/*
std::transform 二元操作
std::transform(first1, last1, first2, result, func);
对于二元操作,使用[first1, last1)范围内的每个元素作为第一个参数调用func,
并以first2开头的范围内的每个元素作为第二个参数调用func,
每次调用返回的值都存储在以result开头的范围内。
给定的func将被连续调用last1-first1次。func可以是函数指针或函数对象或lambda表达式。
*/
int main() {
vector vec1{1, 4, 2, 3, 5};
vector vec2{1, 2, 3, 4, 5};
// 将vec1和vec2的每个元素相加,并保存到vec2
std::transform(vec1.begin(), vec1.end(), vec2.begin(), vec2.begin(),
[](int v1, int v2) -> int { return v1 + v2; });
for (auto ele : vec2) {
cout
关注
打赏