3

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

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