C STL unique去重函式

2021-10-03 06:23:10 字數 1014 閱讀 5430

現有乙個陣列(因為unique函式針對相鄰的重複元素進行操作,因此需要有序):

a[10] = ;

unique()有兩個引數,需要去重的陣列的首尾位址,例如上面的a陣列去重,只需unique(a,a+10)即可。

but,unique不是真正意義上的去重,例如上面給出的陣列,經過unique函式之後,會變成:

1 3 4 5 6 7 9 6 7 9

因為,unique函式的去重過程實際上就是不停的把後面不重複的元素移到前面來,也可以說是用不重複的元素占領重複元素的位置

unique()函式返回去重之後不重複序列的下乙個元素的位址,雖然有點繞,來看上面,去重之後不重複序列是1 3 4 5 6 7 9,那麼unique返回的就是上面第二個6的位址

所以去重之後容器長度並沒有發生變化,我們經常可以配合erase函式使用刪除多餘的元素,例如:

vector<

int> vec;

vec.

push_back(1

);vec.

push_back(1

);vec.

push_back(1

);vec.

push_back(3

);vec.

push_back(4

);vec.

push_back(5

);vec.

push_back(6

);vec.

push_back(6

);vec.

push_back(7

);vec.

push_back(9

);auto new_end =

unique

(vec.

begin()

, vec.

end())

; vec.

erase

(new_end, vec.

end())

;

這樣就能真正意義上去重併刪除多餘的元素

C STL unique函式總結

標頭檔案 include 作用 unique的作用是 去掉 容器中相鄰元素的重複元素。解析 unique實質上是乙個偽去除,它並不是真正把重複的元素刪除,而是用不重複的元素把重複的元素覆蓋了,所以總長度其實是不變的。注意,網上有人說是把重複元素移動到末尾,其實並不是,因為如果只是移動的話每種元素的數...

unique 去重函式

unique 函式是乙個去重函式,stl中unique的函式 unique的功能是去除相鄰的重複元素 只保留乙個 還有乙個容易忽視的特性是它並不真正把重複的元素刪除。他是c 中的函式,所以標頭檔案要加 include,具體用法如下 int num 100 unique num,mun n 返回的是n...

unique 去重函式

unique 是c 標準庫函式裡面的函式,位於標頭檔案 include中,其功能是去除相鄰的重複元素 只保留乙個 所以使用前需要對陣列進行排序 該函式的乙個使用方法,對於長度為n陣列arr,unique arr,arr n arr返回的是去重後的陣列長度 那它是怎麼實現去重的呢?刪除?不是,它並沒有...