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 但是注意這裡並沒有刪除元素,只是...