如何在C ++中找到两个std :: hash_set的交集?

时间:2014-08-13 02:02:44

标签: c++ algorithm c++11 std hashset

STD库是否提供了允许我找到两个std :: hash_set交集的函数?

我尝试使用std::set_intersection但我在Expression: sequence not ordered时遇到断言错误,有没有解决此问题?

#include <hash_set>
#include <vector>
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
    std::hash_set<std::string> h1;
    h1.insert("NoMainDraw");
    h1.insert("NoLight");
    h1.insert("Random");

    std::hash_set<std::string> h2;
    h2.insert("NoLight");

    std::vector<std::string> groupDifference;
    std::set_intersection(h1.cbegin(), h1.cend(),
                          h2.cbegin(), h2.cend(),
                          std::back_inserter(groupDifference));

    for(const std::string& i : groupDifference)
    {
        std::cout << i << std::endl;
    }
}

1 个答案:

答案 0 :(得分:1)

您必须在另一个中迭代一个map进行查找。没有标准库算法。