найти условия о векторах пар - PullRequest
3 голосов
/ 10 декабря 2010

предположим, у меня есть пара std :: vector. Как я могу эффективно использовать метод std :: find, чтобы увидеть, не равен ли хотя бы один элемент вектора (false, false)?

Спасибо

1 Ответ

4 голосов
/ 10 декабря 2010

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...