2010-12-10 21 views
3

假設我有一個std ::向量對。如何有效地使用std :: find方法來查看vector中是否至少有一個元素不等於(false,false)?找到有關向量對的條件

感謝

回答

4

std::pair重載operator==,所以你可以使用std::find的肯定:

bool b = std::find(v.begin(), v.end(), std::make_pair(false, false)) == v.end(); 

,你可以使用std::find_if爲負:

bool b = std::find_if(v.begin(), v.end(), 
         std::bind2nd(std::not_equal_to<std::pair<bool, bool> >(), 
            std::make_pair(false, false))) 
      != v.end(); 

第二個可在C++中寫得更乾淨。0x:

bool b = std::find_if(v.begin(), v.end(), 
         [](const std::pair<bool, bool> p) { 
          return p != std::make_pair(false, false); 
         }) != v.end(); 
+0

對不起,我的意思是說我需要檢查是否所有元素都是(false,false) – Bob 2010-12-10 05:05:11