求向量对的条件

发布于 2024-10-06 22:52:21 字数 93 浏览 5 评论 0原文

假设我有一个 std::vector 对。如何有效地使用 std::find 方法来查看向量中是否至少有一个元素不等于 (false, false)?

谢谢

suppose I have a std::vector of pair. How can I use, efficiently, method std::find to see whether at least one element of the vector is not equal to (false, false)?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

墨落成白 2024-10-13 22:52:21

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();

std::pair overloads operator==, so you can use std::find for the affirmative:

bool b = std::find(v.begin(), v.end(), std::make_pair(false, false)) == v.end();

and you can use std::find_if for the negative:

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();

The second one can be written much more cleanly in 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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文