共找到4條詞條名為unique的結果 展開
- 英語單詞
- STL標準模板庫的函數
- Headhunterz演唱歌曲
- Lenka演唱歌曲
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; } |