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