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若何利用的和
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!