3

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

谢谢

4

1 回答 1

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();
于 2010-12-10T05:00:35.963 回答