找到关于对的向量的条件

时间:2010-12-10 04:58:00

标签: c++ vector find std-pair

假设我有一个std :: vector对。如何有效地使用std :: find方法来查看向量的至少一个元素是否不等于(false,false)?

由于

1 个答案:

答案 0 :(得分: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();