C 使用hashmap从数组中删除重复项

C 使用hashmap从数组中删除重复项,c,c++-cli,C,C++ Cli,仍然在新阵列a中,我正在获取旧数据…不确定此处缺少哪些数据 任何帮助都将不胜感激 提前感谢。逻辑错误 最终的数组要到大小时才会出现 a的索引错误 只需使用一个循环即可实现此目的,请分析以下内容: int main(array<System::String ^> ^args) { int arr[]={1,2,3,2,9,8,1,2,3,9}; int a[9]; int size = sizeof(arr)/sizeof(arr[0]); int

仍然在新阵列a中,我正在获取旧数据…不确定此处缺少哪些数据

任何帮助都将不胜感激

提前感谢。

逻辑错误

最终的数组要到大小时才会出现 a的索引错误 只需使用一个循环即可实现此目的,请分析以下内容:

int main(array<System::String ^> ^args)

{

    int arr[]={1,2,3,2,9,8,1,2,3,9};
    int a[9];
    int size = sizeof(arr)/sizeof(arr[0]);
    int str[256]= {'\0'};
    int i = 0;
    for(i ; i < size ; i++)
    {
        if(str[arr[i]] == 0 )
        str[arr[i]]= 1;
    }
    for( i = 0 ; i < size ; i++)
    {
        if( str[arr[i]] == 1)
        {
            a[i] = arr[i];
        }
    }
    for(i=0 ; i < size ; i++)
    {
        printf("%d->",a[i]);

    }


    return 0;
}

现在在最后一个数组a上迭代到j

我已经看到了这个问题的可能副本,但不确定我的代码是否有问题……您没有初始化a。而且,这不是C。看起来像C++-CLI。如果你想用C语言编程,请确保使用C编译器。我在visual studio中运行…即使在初始化之后,我也会得到相同的结果。谢谢…我确实可以在单个for循环中执行相同的操作。谢谢
int i = 0,j=0;

for( ; i < size ; i++)
{
    if(str[arr[i]] == 0 )
    { 
        str[arr[i]]= 1;
        a[j++] = arr[i];
    }
}