在未排序的数组中配对给定的总和

时间:2019-07-03 17:24:27

标签: c++ data-structures

这里它使用unordered_map作为哈希表的概念,但是我不确定在没有将项目插入undered_map的键值对中的情况下如何实现。

这是用于在未排序数组中查找对的代码。 这里它对其他所有元素都使用哈希表概念。

void findPair(int arr[],int n,int x)
{
    unordered_map<int,int> umap;
    for(int i=0;i<n;i++)
    {
        int temp=x-arr[i];
        if(umap.find(temp)!=umap.end())
        {
            int count=umap[temp];
            for(int j=0;j<count;j++)
                cout<<arr[i]<<" "<<temp<<"\n";
        }
        umap[arr[i]]++;
    }
}

能否请您给我一些见解,它是如何插入的以及为什么它会增加该值的计数?

1 个答案:

答案 0 :(得分:1)

该映射计数未排序数组中每个元素出现的次数。默认情况下,如果您写

umap[key]

并且key不在umap中,它将key插入默认值umap的{​​{1}}中。然后,它返回对密钥在地图中存储位置的引用。

这意味着对于0给定的新键,当您调用arr[i]时,该键将插入到映射中,然后该值递增,以便映射记录{ 1}}。