假设我有一个std :: vector对。如何有效地使用std :: find方法来查看向量的至少一个元素是否不等于(false,false)?
由于
答案 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();