21xrx.com
2024-12-22 23:26:22 Sunday
登录
文章检索 我的文章 写文章
C++的unique函数详解
2023-07-02 02:16:00 深夜i     --     --
C++ unique函数 去重 排序 前后删除

C++中的STL(Standard Template Library)库提供了许多有用的函数,其中一个函数就是unique函数。unique函数是对指定范围内的元素进行去重操作的函数,它常用于删除重复的元素,使容器中只保留唯一的元素。本文将对C++中的unique函数进行详细介绍。

1. 函数定义

unique函数的定义如下所示:


template<typename ForwardIt>

ForwardIt unique(ForwardIt first, ForwardIt last);

其中,ForwardIt是指向迭代器的类型,first和last分别表示要处理的范围。

2. 函数实现

unique函数的主要操作就是去重,即将重复的元素删除。具体实现方法如下:

a. 对原有序列进行修改

将第一个元素作为标准值,从第二个元素开始,如果和上一个元素相同,就删除当前元素;否则将当前元素作为新的标准值,并从下一个元素开始重复上述操作,直到处理完所有元素。

b. 将去重后的元素移至起始位置

在对原有序列进行修改前,先将要留下的元素顺序移至起始位置。具体方法是,从第一个元素开始,如果和上一个元素不同,就将该元素移动至新序列的最后。如果和上一个元素相同,则将其删除,这样会有一些无效元素,需要使用erase函数进行删除。

3. 函数返回值

unique函数的返回值是一个迭代器,指向去重后的序列的尾部。也就是说,unique函数将原序列中所有重复的元素删除,将非重复的元素移到前面,并返回最后一个非重复元素的下一个位置。

4. 代码示例

下面是一个使用unique函数实现去重的例子:


#include <iostream>

#include <vector>

#include <algorithm>

int main()

{

  std::vector<int> vec = 2;

  //去重

  auto end = std::unique(vec.begin(), vec.end());

  //输出去重后的序列

  for (auto it = vec.begin(); it != end; ++it)

  {

    std::cout << *it << " ";

  }

  std::cout << std::endl;

  return 0;

}

运行结果:


1 2 3 4 5 6 7 8 9 10 11

该程序使用unique函数对std::vector中的元素进行去重操作。由于原序列中有重复元素,去重后留下的只有唯一的元素。

总之,unique函数是C++中一个十分实用的函数,能帮助我们方便地删除容器中的重复元素,同时提高代码效率。熟记unique函数的用法和实现方法,能让我们在日常编程中更加得心应手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复