检查STL中的空交叉点

yo'*_*yo' 8 c++ stl set

如何检查两个空的交叉点std::set?我可以使用set_intersection,但这是不必要的慢,我只需要bool回答.

备注:std::set表示有序集,它们属于同一类型等.

joh*_*ohn 9

只是自己编码有什么问题吗?

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;
}
Run Code Online (Sandbox Code Playgroud)

无论如何都是这样的.完全未经测试的代码.

  • 你可以做一个微妙的改变来删除`operator ==`:`if(*i <*j)++ i; 否则if(*j <*i)++ j; 否则返回false;` (3认同)