c unique函式詳解

2021-08-27 00:12:55 字數 951 閱讀 2157

unique是 c++標準模板庫stl中十分實用的函式之一,使用此函式需要#include 標頭檔案

該函式的作用是「去除」容器或者陣列中相鄰元素的重複出現的元素

(1) 這裡的去除並非真正意義的erase,而是將重複的元素放到容器的末尾,返回值是去重之後的尾位址。 

(2) unique針對的是相鄰元素,所以對於順序順序錯亂的陣列成員,或者容器成員,需要先進行排序,可以呼叫std::sort()函式

使用示例:

#include #include int main(void);

int c;

std::sort(a, a + 8); //對於無序的陣列需要先排序

c = (std::unique(a, a + 8) - a );

std::cout<< "c = " << c << std::endl;

//列印去重後的陣列成員

for (int i = 0; i < c; i++)

std::cout<< "a = [" << i << "] = " << a[i] << std::endl;

return 0;

}

執行結果: 

返回值c等於5,而a陣列的前5項為2、4、6、7、8。

對於容器的操作類似:

std::vectormodulearr;

//排序

std::sort(modulearr.begin(), modulearr.end());

//去重

modulearr.erase(unique(modulearr.begin(), modulearr.end()), modulearr.end());

C unique 函式和erase 函式

unique 是c 語言中的stl函式,包含於標頭檔案中。功能是將陣列中相鄰的重複元素去除。然而其本質是將重複的元素移動到陣列的末尾,最後再將迭代器末尾指向最後不重複的下標。返回的是乙個指向最後不重複元素的迭代器。因為是去除相鄰的重複元素,所以要用sort先對陣列進行排序才行。語法 erase方法在...

C unique函式應用舉例

明明想在學校中請一些同學一起做一項問卷調查。為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數,對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成 去重 與 排序 的工作。輸入...

C unique去重函式

c 中unique函式實現的只是相鄰相同元素的去重,因此實現方式跟我們想象的去重函式不完全一樣。因此,unique函式本身是不能實現對未排序的序列的去重的,去重時需要先排序。unique 去重 要先進行排序,保證重複元素相鄰 unique a.begin a.end 但是注意這裡並沒有刪除元素,只是...