共找到4條詞條名為unique的結果 展開

unique

STL標準模板庫的函數

這是c++模板的一個函數,在algorithm頭文件中,有兩個版本的函數聲明template inline

_FwdIt unique(_FwdIt _First, _FwdIt _Last)

templateclass _Pr> inline

_FwdIt _Unique(_FwdIt _First, _FwdIt _Last, _Pr _Pred)

前一個是當序列的相鄰的數據相同時,刪除相鄰相同的數字,第二個使用仿函數來替代數列的數字相同這一概念。

"unique"是C++語言中的STL函數,包含於頭文件中。功能是將數組中相鄰的重複元素去除。然而其本質是將重複的元素移動到數組的末尾,最後再將迭代器末尾指向最後不重複的下標。

基本介紹


該函數的精確實現可以搜索編程範本這本書,這裡給出大概的實現
template
Iter _unique(Iter F1,Iter L1)
{
queue Q;
Iter T=_find_adjacent_mismatch1(F1,L1);
while(T!=L1)
{
Q.push(T);
T=_find_adjacent_mismatch1(T,L1);
}
Q.push(L1);
Iter CD=Q.front();
Iter CR=Q.front();
Q.pop();
while(CR!=L1)
{
while(++CR!=Q.front())
*CD=*CR,++CD;
Q.pop();
}
return CD;
}

功能


unique函數可以去除數組中相鄰重複項。例如:
輸入數組 a[]={1,2,3,4,4,5,6,6,6,7,8,6,7,8}。
輸出數組 a[]={1,2,3,4,5,6,7,8,6,6,7,8}。

去重實例


這段C++代碼可以對一個數組去重並輸出。
注意:想要實現完全去重功能,需要在執行unique函數之前先對數組進行排序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include
#include
#include
using namespace std;
const int N = 100000;
int a[N+5];
int main()
{
int n;
while (cin>>n)
{
for (int i = 0;i < n;++i)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
n = unique(a,a+n) - a;
for (int i = 0;i < n;++i)
{
printf("%d ",a[i]);
}
puts("");
}
return 0;
}