C++ 算法 remove()

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

C++ 算法 remove() 函数用于从给定范围 [first, last) 中删除所有等于 val 的元素,同时不打乱其余元素的顺序。

  • 此函数无法更改容器的大小。
  • 它返回一个指向新范围末尾的迭代器。
  • remove 是稳定的,这意味着不等于 val 的元素的相对顺序保持不变。
  • 此函数使用 operator== 来比较单个元素和 val。

语法

参数

first:一个前向迭代器,指向要从中移除元素的范围中第一个元素的位置。

last:一个前向迭代器,指向要从中移除元素的范围中最后一个元素之后的位置。

val:要从范围中删除的值。

返回值

一个前向迭代器,指向修改后范围的新结束位置 (last),如果 first 和 last 相等,则指向第一个元素。

复杂度

复杂性与范围 [first, last) 成线性关系,并可能对其中一些执行赋值操作。

数据竞争

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

异常安全

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

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

示例 1

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

输出

range contains: 10 30 50 40 100

示例 2

让我们看另一个简单的例子来说明 erase() 和 remove() 的区别。

输出

  Initial data set:	10 5 -8 5 1 4 

 Data set after remove: 10 -8 1 4 1 4 

 Data set after erase:  10 -8 1 4  

示例 3

让我们看另一个简单示例

输出

Original vector :  10 20 30 30 20 10 10 20
After remove :  10 30 30 10 10

示例 4

让我们看另一个简单示例

输出

Vector v1 is ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ).
Vector v1 with value 7 removed is ( 4 0 5 1 6 9 3 8 2 9 3 7 8 2 ).
Vector v1 resized with value 7 removed is ( 4 0 5 1 6 9 3 8 2 ).

下一主题C++ 算法