unique()函數是一個去重函數,STL中unique的函數 unique的功能是去除相鄰的重複元素(只保留一個),還有一個容易忽視的特性是它並不真正把重複的元素刪除。他是c++中的函數,因此頭文件要加#include<iostream>,#include<algoritjm>,具體用法以下:ios
int num[100];c++
unique(num,mun+n)返回的是num去重後的尾地址,之因此說比不真正把重複的元素刪除,實際上是,該函數把重複的元素移到後面去了,而後依然保存到了原數組中,而後返回去重後最後一個元素的地址,由於unique去除的是相鄰的重複元素,因此通常用以前都會要排一下序。數組
unique函數的功能是:去除相鄰的重複元素(只保留一個)。[函數參數:unique(first,last,compare);first爲容器的首迭代器,last爲容器的末迭代器,compare爲比較函數(可略寫)]
注意:unique函數也並不是是真正的刪除了元素,通常要與erase成員函數 或 resize成員函數互相配合使用。函數
看一個例題:給你一個字符串,刪除字符串中相鄰的重複元素,並打印字符串。spa
#include <iostream> #include <algorithm> #include <string>
using namespace std; int main() { string str; cin>>str; str.erase(unique(str.begin(),str.end()),str.end()); //str.resize(unique(str.begin(),str.end())-str.begin());
cout<<str<<endl; return 0; }
輸入:code
abbbccbbablog
輸出:ci
abcba字符串
若只想知道輸出字符串的長度string
#include <iostream> #include <algorithm> #include <string> #include <cstring> using namespace std; int main() { string str; cin>>str; int len = unique(str.begin(), str.end()) - str.begin(); //str.erase(unique(str.begin(),str.end()),str.end()); //str.resize(unique(str.begin(),str.end())-str.begin()); //cout<<str<<endl; cout << len << endl; return 0; }