2

2 つのセットが異なるかどうかを確認する最速の方法は何ですか? を使用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();
}
4

1 に答える 1

9

std::setを持っていoperator!=ます。

bool areSetsDifferent(const std::set<MyClass> &myClassSet1, const std::set<MyClass> &myClassSet2) {
    return myClassSet1 != myClassSet2;
}
于 2013-04-03T16:02:18.527 に答える