頭文件:#include <iostream>
參數:和sort一樣。兩個參數——開始地址和結束地址(左閉右開)。
返回值:去重之后的尾地址!!!
作用:unique的作用是“去掉”容器中相鄰元素的重復元素。
解析:unique實質上是一個偽去除,它並不是真正把重復的元素刪除,而是用不重復的元素把重復的元素覆蓋了,所以總長度其實是不變的。
(注意,網上有人說是把重復元素移動到末尾,其實並不是,因為如果只是移動的話每種元素的數量應該是不變的。)
用法:因為在去重之前要排序,所以一般與sort搭配。
int board[MAXN]; int N; cin>>N; for(int _=0 ; _<N ; _++)cin>>board[_]; sort(board,board+N); int len = unique(board,board+N) - board;
如圖:(這里可以發現7和8都比開始輸入的多一個。)
因為unique返回的是去重之后的尾地址所以可以通過減去開始地址來得到去重后的長度。
int len = unique(board,board+N) - board;
還可以搭配vector來刪除不要的數據。
int board[MAXN]; int N; cin>>N; for(int _=0 ; _<N ; _++)cin>>board[_]; sort(board,board+N); vector<int>v (board, board + N); vector<int>::iterator it = unique (v.begin(), v.end() ); v.erase (it, v.end() );//這里就是把后面藏起來的重復元素刪除了
另外如果是對結構體去重需要重載“==”。