将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;
}