ペアの std::vector があるとします。メソッド std::find を効率的に使用して、ベクトルの少なくとも 1 つの要素が (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();
2 番目のものは、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();