如何使用C++的unique

unique 是 C++自带的一个函数,可以或许帮我们实现部门去重功能,共同适当可以完全去重

那么我们该如何利用它呢?

工具/原料

  • 电脑
  • C++编译器

unique部门去重

  1. 1

    unique,翻译当作中文是“并世无双的”

    这和它所实现的功能十分相似:去重,让每个元素变得“并世无双”

    可是它有一个错误谬误,只能删除相邻的不异元素(只保留一个)

    该图片来自于收集

  2. 2

    如何利用 unique 函数?

    unique (首迭代器(或指针),从头至尾迭代器(或指针));

    注重点:unique 时的区间是左闭右开的,即 [首指针,从头至尾指针),取不到从头至尾指针

    如图,"a","a+10" 都是指针

    unique(a,a+10) 为将 [a,a+10) 的相邻且不异元素删除(只保留一个)

  3. 3

    若是待去重的是一个STL容器(例如vector)

    刚好 vector 也是左闭右开的,所以我们可以这么写:

    unique(v.begin(),v.end());

    如图,"v.begin()","v.end()" 都是迭代器

  4. 4

    可是,我们并不是每次都能知道去重后的元素个数,这个在进行其它操作时会不太便利

    不消担忧,unique会主动返归去重后的从头至尾迭代器(仍为左闭右开),共同指针(或迭代器)解法即可求出去重后的元素个数

unique完全去重

  1. 1

    既然 unique 只能删除相邻两个不异的元素,那有没有什么法子将这个区间完全去重呢?

    有,但要牺牲必然的时候

  2. 2

    我们可以先把这个区间排序一下,凡是是直接用 sort,时候快又便利

    然后再用 unique,就可以完全去重了,因为从小到大排序,不异的数必然是持续的

    0如何利用C++的sort和stable_sort

注重事项

  • 若是这篇经验帮到了您,就请投票+保藏吧,感谢!
  • 发表于 2019-07-20 23:46
  • 阅读 ( 174 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论