C++ 算法 transform()

17 Mar 2025 | 4 分钟阅读

C++ 算法 transform() 函数有两种不同的用法

1. 一元操作:- 此方法对范围 [first1, last1] 中的元素执行一元操作 op,并将结果存储在从 result 开始的范围中。

此 transform() 将函数应用于范围的每个元素

C++ Algorithm transform Function

2. 二元操作:- 此方法对范围 [first1, last1] 中的元素与从迭代器 first2 开始的范围中的元素执行二元操作 binary_op,并将结果存储在从 result 开始的范围中。

此 transform() 接受两个范围,并对来自输入范围的每对元素应用一个接受两个参数的函数

C++ Algorithm transform Function

语法

一元操作(1)

二元操作(2)

参数

first1:指向第一个操作范围的第一个元素位置的输入迭代器。

last1:指向第一个操作范围的最后一个元素之后一个位置的迭代器。

first2:指向第二个操作范围的第一个元素的输入迭代器。

result:指向存储操作结果的范围的初始位置的输出迭代器。

op:应用于范围中每个元素的一元函数。

binary_op:接受两个元素作为其参数的二元函数。

返回值

transform() 返回一个指向转换范围末尾的迭代器。

复杂度

复杂度与 first1 和 last1 之间的距离呈线性关系。

数据竞争

访问范围 [first1, last1) 中的对象,每个对象只访问一次。

修改从 result 开始的范围中的对象。

异常安全

如果任何函数调用、赋值或迭代器上的操作抛出异常,则抛出异常。

请注意,无效参数会导致未定义行为。

示例 1

让我们看一个简单的例子来演示 transform() 的用法

输出

6
2
8

示例 2

让我们看另一个简单示例

输出

aaa
b
cccc

示例 3

让我们看另一个简单示例

输出

Transform operation
b[i]   a[i]    c[i]
 1   ^   1   =   1
 2   ^   2   =   4
 3   ^   1   =   3
 1   ^   2   =   1
 2   ^   1   =   2
 3   ^   2   =   9
 1   ^   1   =   1
 2   ^   2   =   4
 3   ^   1   =   3
 1   ^   2   =   1

上述示例说明了 transform() 算法。该程序创建两个向量,并通过插入一个等于第一个向量中元素幂的第二个向量中元素的值来转换第三个向量。函数 power 作为谓词传递给 transform() 函数。

示例 4

让我们看另一个简单示例

输出

foo contains: 21 41 61 81 101

下一主题C++ 算法