21xrx.com
2024-11-05 19:00:26 Tuesday
登录
文章检索 我的文章 写文章
C++中unique函数的用法
2023-07-03 04:28:58 深夜i     --     --
C++ unique函数 用法

C++是一门强大的编程语言,拥有许多实用的函数,其中unique函数是在操作容器时经常使用的函数之一。unique函数可以帮助我们在容器中检测并删除相邻重复元素,从而使容器中的元素保持唯一性。

unique函数的具体用法如下:


template <class ForwardIterator>

ForwardIterator unique (ForwardIterator first, ForwardIterator last);

这里,`first`和`last`是容器的起始和末尾位置的迭代器。函数将返回一个指向新的末尾位置的迭代器。

例如,假设我们有一个整型数组`arr`,其中有一些连续的重复元素。我们可以使用unique函数来删除这些重复元素,并返回新的末尾位置:


int arr[] = 4;

int* end = std::unique(arr, arr + 7);

// 现在arr的值为 3,新的末尾位置为end-2

在上面的例子中,我们将数组的起始位置和末尾位置作为参数传递给unique函数,并将返回值保存在指针`end`中。通过查看`end`的值,我们可以看到新的容器末尾位置现在指向数字5的下标位置。

另外,unique函数还有一个额外的参数,可以传递一个二元谓词函数来进行运算。这个谓词函数用于自定义检测或比较两个相邻元素的规则。例如,如果我们想将字符串容器中的重复元素删除,并且我们自定义函数将两个字符串视为相等,只需按以下方式使用unique函数:


std::vector<std::string> vec = "orange";

vec.erase(std::unique(vec.begin(), vec.end(),

            [](const std::string& str1, const std::string& str2)

             return str1 == str2;

            ), vec.end());

// 现在,vec的值为 "banana"

在上面的示例中,我们使用了一个匿名的lambda函数,将两个字符串进行比较,如果相等则被视为重复元素,并使用vector类的erase函数删除重复元素。

综上所述,unique函数是C++中的一个强大实用的函数,它可以帮助我们检测和删除容器中的相邻重复元素。如果您正在编写一个需要保证容器中元素唯一性的代码,那么unique函数应该是您必须掌握的工具之一。

  
  

评论区

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