如何在C ++中使用Hash函数找到两个数组的交集?

时间:2011-03-11 04:03:45

标签: c++ hash hashtable

我是哈希新手,不知道如何在C ++中这样做。在java中,我们为Hash提供了ContainsKey,put,get等函数。 C ++中有类似的东西吗? 感谢。

3 个答案:

答案 0 :(得分:2)

您可以从std::set<>开始,这是一个平衡的二叉树。最新的编译器还提供unordered_set<>,这是一个哈希表,但不是C ++ 03的一部分:它将成为C ++ 0x的一部分。 boost库还有一个哈希集实现。

对于std :: set&lt;&gt;,请参阅http://www.cplusplus.com/reference/stl/set/

e.g。

std::set<int> s;
for (int i = 0; i < first_vector.size(); ++i)
    s.insert(first_vector[i]);
for (int i = 0; i < second_vector.size(); ++i)
    if (s.find(second_vector[i]) != s.end())
        do_something();

答案 1 :(得分:1)

你可能想要unordered_set课程。它是TR1的一部分,在C ++ 0x中标准化,较旧的编译器可以在boost库中找到一个实现。

答案 2 :(得分:0)

使用std::map,您可以在java

中执行与HashMap类似的操作