如何消除一個陣列里面重復的元素?
var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4]
輸出:1,2,3,4,5,6,9,25
uj5u.com熱心網友回復:
很笨的辦法,從第2個數開始,與前面的所有數進行比較,如果有相同,將這個數改為一個特殊值(比如0、-1、極大值或極小值)第n個數,與前面的n-1個數比較;直到最后一個數
輸出陣列中不是特殊值的所有數
STL應該有方便的方法
uj5u.com熱心網友回復:
可以先用qsort函式來排序,之后用回圈找出不同的數即可。qsort的使用方法如下。int comp( const void * p, const void * q)
{
return ( * ( int * ) p - * ( int * ) q) ;
}
int i;
int array[ ] = { 6, 8, 2, 8, 1, 0} ;
qsort ( array, 6, sizeof ( int ) , comp) ;
排序后array內部資料如下,
0 1 2 6 8 8
uj5u.com熱心網友回復:
int arr[]={1,2,3,3,4,4,5,5,6,1,9,3,25,4}
vector< int > iVec(arr, arr + 14);
sort(iVec.begin(), iVec.end());
iVec.erase(unique(iVec.begin(), iVec.end()), iVec.end());
uj5u.com熱心網友回復:
牛唐抄代碼不給人抄完整了http://www.cnblogs.com/oomusou/archive/2007/05/27/761532.html
uj5u.com熱心網友回復:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int arr[] = { 1,2,3,3,4,4,5,5,6,1,9,3,25,4 };
vector < int > iVec(arr, arr + 14);
vector<int>::iterator iter;
sort(iVec.begin(), iVec.end());
iVec.erase(unique(iVec.begin(), iVec.end()), iVec.end());
for (iter = iVec.begin(); iter != iVec.end(); ++iter)
cout << " " << *iter;
cout << endl;
system("pause");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74389.html
標籤:基礎類
上一篇:CB2010使用OLE向word的表格里面插入圖片,位置錯位,怎么回事?
下一篇:inFile>>問題
