你看这样能不能满足你的需求:
#include
#include
#include
using namespace std;
#define N 1000 //定义数组最大为1000;
class MyARR{
public:
int a[N];
int len;
MyARR(int b[],int len){
this->len=len;
for(int i=0;i{
a[i]=b[i];
}
}
void deletesame()
{
sort(a,a+len);
int l=len;
for(int i=0;i{
if(a[i]==a[i+1])
{
int st=a[len-1];
a[len-1]=a[i+1];
a[i+1]=st;
sort(a,a+len-1);
i=-1;
len-=1;
l-=1;
}
}
}
void show()
{
for(int i=0;icout< cout< }
};
int main(){
int c[]={3,2,1,1,2,3,1,2,3};
MyARR m(c,9);//初始化传入数组名和长度
m.deletesame();
m.show();
return 0;
}
如有疑问可以追问!
数组名 是干嘛的?
template
class CMyArray
{
public:
CMyArray(){
size = 0;
comp = 10;
data = new T[comp];
}
CMyArray(T* temp,int sizeTemp){
size = 0;
comp = sizeTemp;
data = new T[comp];
for(int i = 0;i < sizeTemp;++i)
{
data[i] = temp[i];
size++;
}
}
~CMyArray(){ delete []data;}
bool deleteit(int pos)//删除某一位置
{
if(pos >= size)
return false;
for(int i = pos;i < size - 1;++i)
{
data[i] = data[i+1];
}
size--;
return true;
}
void deletesame()
{
for(int i = 1; i< size;)//遍历数组。
{
bool del = true;
for(int j = 0;j < i;++j)//查找前面是否有相同值
{
if(data[j] == data[i])//如果有
{
bool re = deleteit(i);//删除这个位置值
if(re)//如果成功删除,修改标记
del = false;
}
}
if(del)//标记没有变化,说明没找到,继续往后找,++i; 有变化,不用++i;
++i;
}
}
void show()
{
for(int i = 0;i < size;++i)
cout<}
private:
int size; //当前长度
int comp;//容量
T* data;
};
int main()
{
int b[16] = {1,2,2,2,3,4,5,5,5,6,6,6,7,8,9,10 };
CMyArray
arr.show();
arr.deletesame();
arr.show();
system("pause");
}
看下 是这意思吗?