2013-04-03 23 views
1

找出两组是否不同的最快方法是什么? 使用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(); 
} 
+2

*“我只需要知道第一个差异”* **您需要了解什么**? –

+0

@DrewDormann,我的意思是,一旦我知道存在一个差异,我可以退出我的方法。 –

+0

然后亚历克斯有一个*优秀的答案。 –

回答

8

std::setoperator!=

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