找到两套是否不同的最快方法?

时间:2013-04-03 15:59:58

标签: c++ c++11 set

找出两套是否不同的最快方法是什么? 使用std::set_difference可以解决所有差异,但我只需要知道第一个差异。

目前,我正在做以下事情:

bool areSetsDifferent(const std::set<MyClass> &myClassSet1, const std::set<MyClass> &myClassSet2) {
    if (myClassSet1.size() != myClassSet2.size()) {
        return true;
    }
    std::vector<MyClass> diffs(myClassSet1.size());
    auto iter = std::set_difference(myClassSet1.begin(), myClassSet1.end(), myClassSet2.begin(), myClassSet2.end(),
            diffs.begin());
    return iter != diffs.begin();
}

1 个答案:

答案 0 :(得分:8)

std::setoperator!=

bool areSetsDifferent(const std::set<MyClass> &myClassSet1, const std::set<MyClass> &myClassSet2) {
    return myClassSet1 != myClassSet2;
}