我该如何检查两个
备注:
std::set
的空交集?我可以使用set_intersection
,但那样会很慢,我只需要一个bool
答案。备注:
std::set
表示有序集合,它们是相同类型等。自己编写代码有什么问题吗?
bool empty_intersection(const set<int>& x, const set<int>& y)
{
set<int>::const_iterator i = x.begin();
set<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;
- Mark Ransom