有什么方法可以对两种不同类型的集合执行 std::set_intersection 吗?
我有两套:
std::set<X1> l_set1;
std::set<X2> l_set2;
我可以为它们定义一些比较器来检查 X1 和 X2 是否相等。
struct sample_comparer
{
bool operator()(const &X1 p_left, const &X2 p_right)
{
return p_left == p_right;
}
};
现在,我尝试在这两个集合上做一个集合交集:
std::set<X1> l_intersect;
std::set_intersection(l_set1.begin(), l_set1.end(), l_set2.begin(), l_set2.end(),
std::inserter(l_intersect, l_intersect.begin()), sample_comparer());
不幸的是,我不能强迫这段代码工作。我什至不确定这是否可能,但从 set_intersection 的描述中我知道我可以使用两个不同的迭代器。
我试图搜索一些我想要的代码示例,但没有找到?有人可以为我的问题提供一个工作代码示例吗?
更新:错误是:
错误:stl_function.h:227: '__x < __y' 中的 'operator<' 不匹配
提前致谢!