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