1. 程式人生 > >【C++】 刪除vector中重複元素

【C++】 刪除vector中重複元素

程式碼:

vector<int> v={1,2,4,3,5.2};
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());

解釋:

unique函式是一個去重函式,去除相鄰中的重複元素(只留一個)。其中,最關鍵的是:unique並不是真正地把重複的元素刪除,而是全部放在陣列的後面(只留一個)。因此,為了去除重複的元素,應該,首先對陣列/Vector進行排序,這樣保證重複元素在相鄰的位置。 另外,unique函式返回的是去重後的尾地址。因此對於一個內容為{2, 2, 5, 5, 6}的vector,執行unique函式以後,vector大小並沒有改變,只不過順序變成了{2, 5, 6, 2, 5},並且函式的返回值為:3。

參考