unique() 去重函數

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;
}
相關文章
相關標籤/搜索