将int类型的数组转化为bool类型可以解决段错误的原因是因为bool类型只占用字节的内存空间,而int类型占用四个字节的内存空间。当我们将int类型的数组转化为bool类型时,实际上是将每个元素的值转化为对应的bool值,非零的值会被转化为true,而零值会被转化为false。这样做可以减少内存的使用,从而避免了段错误的发生。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N = 105;
int a[N];
bool b[N];
// 此处的
int main()
{
int n;
scanf("%d",&n);
int c=0;
int j=0;
for(int i=0;i<n;i++)
{
scanf("%d",&c);
if(b[c]==false)
{
a[j]=c;
b[c]=true;
j++;
}
}
sort(a,a+j);
cout<<j<<endl;
for(int i=0;i<j;i++)
{
cout<<a[i]<<" ";
}
return 0;
}

京公网安备 11010502036488号