C++ 算法 replace_copy()

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

C++ 算法 replace_copy() 函数用于复制范围 [first, last) 并将所有 old_value 替换为 new_value。它使用 operator= 进行复制,并使用 operator== 比较元素。

此函数检查源范围中的每个元素,如果它与指定值匹配,则替换它,同时将结果复制到新的目标范围。

语法

参数

first:一个输入迭代器,指向要替换元素的范围的起始位置。

last:一个输入迭代器,指向要替换元素的范围的最终位置。

result:一个输出迭代器,指向存储结果序列的范围的第一个元素。

old_value:被替换元素的旧值。

new_value:赋给具有旧值的元素的新值。

返回值

replace_copy() 函数返回一个输出迭代器,指向结果序列中写入的最后一个元素的位置。

复杂度

复杂性与 first 和 last 之间的距离呈线性关系,并对每个元素执行一次比较和一次赋值。

数据竞争

访问范围 [first1, last1) 中的对象。

修改 result 和返回值之间的范围中的对象。

异常安全

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

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

示例 1

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

输出

3,10,2,10,2,

示例 2

让我们看另一个简单示例

输出

myvector contains: 10 99 30 15 99 10 10 99

示例 3

让我们看另一个简单示例

输出

The original vector v1 is:
 ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ).
The vector v1 with a value 70 replacing that of 7 is:
 ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 1 4 70 70 70 0 5 70 1 6 9 3 70 8 2 1 ).
The list copy L1 of v1 with the value 0 replacing that of 7 is:
 ( 4 1 1 1 0 5 1 1 6 9 3 1 8 2 0 ).

示例 4

让我们看另一个简单示例

输出

Before replace_copy : A B C D E F G 
After replace_copy : Z B C D E F G

在上面的示例中,replace_copy() 函数用于将 v.begin() 处的“A”替换为“Z”并将其复制到 v.begin() 位置。


下一主题C++ 算法