#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1];//放置索引越界,数组大一些
int tmp[n+1];// 定义一个和a相同大小的数组,存放去重后的数
for(int i=0;i<n;++i)
cin>>a[i];//依次输入数组a
int m = 0; // 记录当前tmp到底存了多少个元素
for (int k = 0; k < n; ++k)
{
int j = 0;//放外面的作用是下面if要用
for (; j < m; j++)//可以省略j=0
{
if (a[k] == tmp[j])//拿a[i]依次与tmp里的元素对比
break; // 找到相同的了就break
}
if (j == m)//这个意思是数组b内的数据与当前位置的a数组里面的数据不一样
{ // 没有找到一个相同的,把a中此元素放入tmp里
tmp[m] = a[k];
m++;
}
}
for (int ii = 0; ii < m; ii++)
{
cout << tmp[ii] << " ";//输出
}
return 0;
}
数组去重,temp数组负责保存去重后的数据,外循环k用来移动未去重前的a[]数组下标,内循环j用来遍历temp数组,与a数组进行对比。j的限制就是temp当前有的元素。break是跳过当前的j循环,如果没有相同的就把a元素放入temp中
还有一种
#include<iostream>
#include <algorithm>//算法头文件,sort包含在内
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=0;i<n;++i)
cin>>a[i];
sort( a, a + n); // 排序
int m=unique(a, a +n) - a;//去重复
for (int i = 0; i < m; i++)
cout << a[i] << " ";//输出
return 0;
}
利用C++自带的排序和取重函数sort和unique,#include <algorithm>//算法头文件
unique是STL中的函数,需要#include<algorithm>
unique的作用是“去掉”容器中相邻元素的重复元素,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址
int num[10]={1,1,2,2,2,3,4,5,5,5};
int ans=unique(num,num+10)-num;
这时,返回的ans是5,而num中前5项就是1,2,3,4,5,一般使用前需要对容器进行排序。