unique 是 C++自带的一个函数,可以或许帮我们实现部门去重功能,共同适当可以完全去重
那么我们该如何利用它呢?
unique,翻译当作中文是“并世无双的”
这和它所实现的功能十分相似:去重,让每个元素变得“并世无双”
可是它有一个错误谬误,只能删除相邻的不异元素(只保留一个)
该图片来自于收集
如何利用 unique 函数?
unique (首迭代器(或指针),从头至尾迭代器(或指针));
注重点:unique 时的区间是左闭右开的,即 [首指针,从头至尾指针),取不到从头至尾指针
如图,"a","a+10" 都是指针
unique(a,a+10) 为将 [a,a+10) 的相邻且不异元素删除(只保留一个)
若是待去重的是一个STL容器(例如vector)
刚好 vector 也是左闭右开的,所以我们可以这么写:
unique(v.begin(),v.end());
如图,"v.begin()","v.end()" 都是迭代器
可是,我们并不是每次都能知道去重后的元素个数,这个在进行其它操作时会不太便利
不消担忧,unique会主动返归去重后的从头至尾迭代器(仍为左闭右开),共同指针(或迭代器)解法即可求出去重后的元素个数
既然 unique 只能删除相邻两个不异的元素,那有没有什么法子将这个区间完全去重呢?
有,但要牺牲必然的时候
我们可以先把这个区间排序一下,凡是是直接用 sort,时候快又便利
然后再用 unique,就可以完全去重了,因为从小到大排序,不异的数必然是持续的
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!