【发布时间】:2012-10-08 01:51:10
【问题描述】:
如何检查两个std::sets 的空交集?我可以使用set_intersection,但这太慢了,我只需要bool 回答。
备注:std::set 表示有序集合,它们属于同一类型等。
【问题讨论】:
-
stackoverflow.com/questions/1964150/… 的重复,除非问题是“我们在 STL 中有适当的算法吗?”
如何检查两个std::sets 的空交集?我可以使用set_intersection,但这太慢了,我只需要bool 回答。
备注:std::set 表示有序集合,它们属于同一类型等。
【问题讨论】:
自己编码有什么问题吗?
bool empty_intersection(const set<int>& x, const set<int>& y)
{
std<int>::const_iterator i = x.begin();
std<int>::const_iterator j = y.begin();
while (i != x.end() && j != y.end())
{
if (*i == *j)
return false;
else if (*i < *j)
++i;
else
++j;
}
return true;
}
反正就是这样。完全未经测试的代码。
【讨论】:
operator== 的要求:if(*i<*j) ++i; else if(*j<*i) ++j; else return false;