使用hashmap从数组中删除重复条目

时间:2014-12-20 09:42:49

标签: c c++-cli

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

仍然在新阵列中,我正在获取旧数据......不确定在这里丢失的是什么......

任何帮助都将受到高度赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:4)

逻辑错误

  • 最后一个阵列不会去size
  • a的索引错误

只需使用一个循环即可实现此目的,分析以下内容:

int i = 0,j=0;

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

现在迭代到最终数组j

上的a