切記,沒有排序前只是去掉相鄰的重複元素,如果要真正去重就要排序
現在總結一下unique,unique的作用是「去掉」容器中相鄰元素的重複元素(不一定要求陣列有序),它會把重複的元素新增到容器末尾(所以陣列大小並沒有改變),而返回值是去重之後的尾位址,下面舉個例子。
由於返回的是容器末尾,所以如果想得到去重後的size,需要減去初始位址,lower_bound是得到位址,稍微不同。
sz = unique(b + 1,b + n + 1)-(b + 1);
sz = unique(a,a + n) - a;
或許你會說可以直接模擬。通過再開乙個陣列,數字與前乙個相同的相同的不加入新陣列,僅僅多開了乙個陣列而已,不久搞定了嗎。那麼unique到底有什麼優勢呢?比如,假如要得到相鄰不同的字串組,用unique就方便些(好像模擬也不麻煩,就當為了「美」而用unique吧)。
sort
(words.
begin()
, words.
end())
; vector
::iterator end_unique =
unique
(words.
begin()
, words.
end())
; words.
erase
(end_unique, words.
end())
;
如果要刪去重複元素,可以把尾巴刪去即可(或者直接定義新的長度!)。 C 中unique函式的作用
個人感覺,unique是stl中很實用的函式之一,需要 include,下面來簡單介紹一下它的作用。unique的作用是 去掉 容器中相鄰元素的重複元素,這裡去掉要加乙個引號,為什麼呢,是因為它實質上是乙個偽去除,它會把重複的元素新增到容器末尾,而返回值是去重之後的尾位址 是位址!舉個例子 int ...
C 中unique函式的作用
個人感覺,unique是stl中很實用的函式之一,需要 include,下面來簡單介紹一下它的作用。unique的作用是 去掉 容器中相鄰元素的重複元素,這裡去掉要加乙個引號,為什麼呢,是因為它實質上是乙個偽去除,它會把重複的元素新增到容器末尾,而返回值是去重之後的尾位址 是位址!舉個例子 int ...
C 中unique函式的用法總結
個人感覺,unique是stl中很實用的函式之一,需要 include,下面來簡單介紹一下它的作用。unique的作用是 去掉 容器中相鄰元素的重複元素,這裡去掉要加乙個引號,為什麼呢,是因為它實質上是乙個偽去除,它會把重複的元素新增到容器末尾,而返回值是去重之後的尾位址 是位址!舉個例子 int ...