在这里,它使用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]]++;
    }
}


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

最佳答案

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

umap[key]


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

这意味着对于arr[i]给定的新密钥,当您调用umap[arr[i]]时,该密钥将插入映射中,然后该值递增,以便映射为该密钥注册1计数。

关于c++ - 在未排序的数组中配对给定的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56875253/

10-10 22:15