初識STL中的unique函式

2021-07-31 09:47:14 字數 1955 閱讀 9977

該演算法刪除相鄰的重複元素,然後重新排列輸入範圍內的元素,並且返回乙個迭代器(容器的長度沒變,只是元素順序改變了),表示無重複的值範圍的結束。在stl中unique函式是乙個去重函式, unique的功能是去除相鄰的重複元素(只保留乙個),其實它並不真正把重複的元素刪除,是把重複的元素移到後面去了,然後依然儲存到了原陣列中,然後 返回去重後最後乙個元素的位址,因為unique去除的是相鄰的重複元素,所以一般用之前都會要排一下序。呼叫unique「刪除」了相鄰的重複值。給「刪除」加上引號是因為unique實際上並沒有刪除任何元素,而是將無重複的元素複製到序列的前段,從而覆蓋相鄰的重複元素。unique返回的迭代器指向超出無重複的元素範圍末端的下乙個位置。注意:演算法不直接修改容器的大小。如果需要新增或刪除元素,則必須使用容器操作。

example:
#include 

#include

#include

#include

#include

#include

using

namespace

std;

int main()

; vector

vector1;

for (int i=0;ivector

::iterator new_end;

new_end=unique(vector1.begin(),vector1.end()); //"刪除"相鄰的重複元素

assert(vector1.size()==n);

vector1.erase(new_end,vector1.end()); //刪除(真正的刪除)重複的元素

演算法標準庫定義了乙個名為unique_copy的函式,其操作類似於unique。唯一的區別在於:前者接受第三個迭代器實參,用於指定複製不重複元素的目標序列。unique_copy根據字面意思就是去除重複元素再執行copy運算。編寫程式使用unique_copy將乙個list物件中不重複的元素賦值到乙個空的vector物件中。

//使用unique_copy演算法

//將乙個list物件中不重複的元素賦值到乙個空的vector物件中

#include

#include

#include

#include

using

namespace

std;

int main()

; list

ilst(ia , ia + 7);

vector

ivec;//將list物件ilst中不重複的元素複製到空的vector物件ivec中

//sort(ilst.begin() , ilst.end()); //不能用此種排序,

ilst.sort(); //在進行複製之前要先排序

unique_copy(ilst.begin() , ilst.end() , back_inserter(ivec));

//輸出vector容器

STL中unique函式的用法

在stl中unique函式是乙個去重函式,unique的功能是去除相鄰的重複元素 只保留乙個 其實它並不真正把重複的元素刪除,是把重複的元素移到後面去了,然後依然儲存到了原陣列中,然後 返回去重後最後乙個元素的位址,因為unique去除的是相鄰的重複元素,所以一般用之前都會要排一下序。注意,word...

STL中unique函式的用法

unique是用來去掉容器中重複的元素 iterator unique iterator it 1,iterator it 2 但是他去掉的原理是把不重複的元素移到前面來,而最後的元素不改變值 如 原始 1 1 2 2 3 3 結果 1 2 3 2 3 3注意 使用unique前要先排序 sort ...

unique函式的使用方法(STL庫函式)

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