C++ 算法 replace_if()

2024年8月30日 | 阅读4分钟

C++ 算法 replace_if() 函数用于将新值分配给范围 [first, last) 中所有满足 pred 谓词的元素。

此函数检查范围中的每个元素,如果它满足指定的谓词,则将其替换。

语法

参数

first:指向要替换元素的范围起始位置的前向迭代器。

last:指向要替换元素的范围最终位置的前向迭代器。

pred:如果元素的值要被替换,必须满足的一元谓词函数。

new_value:分配给旧值满足谓词的元素的新值。

返回值

复杂度

复杂性与 first 和 last 之间的距离呈线性关系。对每个元素应用 pred,并分配给匹配的元素。

数据竞争

范围 [first1, last1) 中的对象被访问并可能被修改。

异常安全

如果 pred、元素赋值或迭代器上的任何操作抛出异常,此函数将抛出异常。

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

示例 1

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

输出

10,10,2,10,2,

上面的示例确定向量 v 中的奇数,并将所有找到的元素替换为 10。

示例 2

让我们看另一个简单示例

输出

The original vector v1 is:
 ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ).
The vector v1 with a value 70 replacing those
 elements satisfying the greater6 predicate is:
 ( 4 70 70 70 0 5 70 1 6 70 3 70 70 2 ).

在上面的示例中,向量 v1 的值为 70,替换了那些满足大于 6 谓词的元素。

示例 3

让我们看另一个简单示例

输出

Here are the values in the vector:
1 2 2 3 4 5 2 6 
Now we replace all values divisible by 3 with 123.
Here are the revised contents of the vector:
1 2 2 123 4 5 2 123  

示例 4

让我们看另一个简单示例

输出

myvector contains: 0 2 0 4 0 6 0 8 0

下一主题C++ 算法