使用C ++中的哈希表在数组中复制元素

时间:2017-05-22 10:11:03

标签: c++ hash

有人可以举例说明使用哈希表和函数查找数组重复项。

我在C ++中寻找一些例子。 我得到的代码都是Java。

1 个答案:

答案 0 :(得分:1)

一种解决方案是将哈希表放入数组的元素(作为键)及其出现次数(作为值)。 然后复制哈希表的关键值大于1的键。

#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>

int main(int argc, char* argv[]) {
    std::vector<int> vec{1,1,2,3,1,4,5};
    std::map<int, int> m;
    // We copy the element of the vector into the hash table
    std::for_each(vec.begin(), vec.end(), [&m](auto & elt){ m[elt] += 1; });
    std::vector<int> res;
    // We select the key where the value is > 1
    std::for_each(m.begin(), m.end(), [&res](auto & elt) { if(elt.second > 1) res.push_back(elt.first); });
}