C++ Algorithm unique()

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

C++ Algorithm unique() 函数用于转换序列,使得每个连续的重复元素都成为唯一的元素。

第一个版本使用 operator== 来比较元素,第二个版本使用给定的二元谓词 pred。

语法

参数

first:指向要扫描以删除重复项的范围内第一个元素位置的前向迭代器。

last:指向要扫描以删除重复项的范围内最后一个元素之后位置的前向迭代器。

pred:用户定义的谓词函数对象,定义了如果范围内两个元素被视为等效时应满足的条件。二元谓词接受两个参数,并在满足条件时返回 true,不满足时返回 false。0

返回值

一个前向迭代器,指向范围 [first, last) 的新末尾,该范围不包含连续的重复项。

复杂度

复杂度在范围 [first, last) 内呈线性关系:比较每对连续的元素,并对其中一些元素执行赋值操作。

数据竞争

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

异常安全

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

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

示例 1

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

输出

1 2 3 4 5 6 7

示例 2

让我们看另一个简单示例

输出

myvector contains: 10 20 30 20 10

示例 3

让我们看另一个简单示例

输出

unsorted unique : 2,5,3,1,2,4,2,1,4,3
sorted unique : 1,2,3,4,5

示例 4

让我们看另一个简单示例

输出

1 2 3 4 5 6 7 
wanna go to space?

示例 5

让我们看另一个例子

输出

Vector v1 is ( 5 -5 5 -5 5 -5 5 -5 4 4 4 4 7 ).
Removing adjacent duplicates from vector v1 gives
 ( 5 -5 5 -5 5 -5 5 -5 4 7 ).
Removing adjacent duplicates from vector v1 under the
  binary predicate mod_equal gives
 ( 5 4 7 ).
Removing adjacent elements satisfying the binary
  predicate mod_equal from vector v1 gives ( 5 7 ).

下一主题C++ 算法