21xrx.com
2024-11-05 16:33:58 Tuesday
登录
文章检索 我的文章 写文章
深入理解C++中的unique函数
2023-07-04 01:36:59 深夜i     --     --
C++ unique函数 去重 迭代器 排序

C++中的unique函数主要用于在容器中删除相邻重复元素。该函数返回一个迭代器,指向容器中最后一个保留元素之后的位置。unique函数要求容器必须是可排序的。

unique函数的使用方式如下:


template <class ForwardIt>

ForwardIt unique( ForwardIt first, ForwardIt last );

其中,first和last是指向要操作的容器元素的迭代器。unique函数会将容器中连续重复的元素保留一个,返回一个指向最后一个保留元素之后位置的迭代器。

unique函数的实现很简单,就是利用了STL的排序算法,先将容器元素排序,然后遍历容器并删除相邻重复元素。

例如,对于以下数组:


int arr[] = 3;

我们可以使用unique函数来删除相邻重复元素:


auto last = std::unique(arr, arr + 9);

这里应该传递arr + 9而不是arr + 10,因为unique算法删除元素后,数组大小会缩小,最后一个非重复元素的索引不再是9。

使用该函数后,数组变为:


1, 2, 3, 4, 5, 3, 4, 4, 5

其中,重复的元素被删除,而保留的元素保持了原有顺序。unique函数可能会改变数组的大小,因此需要向该函数传递正确的迭代器。

  
  

评论区

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