c ++如果网格中的每个bool都为真,那么

时间:2013-03-13 20:47:14

标签: c++ grid loops

试图绕过这个问题,但我的程序一直在崩溃(所以我只是从头开始重新进行循环)。

我需要做什么:如果我的网格中的每个坐标都设置为true,请执行某些操作。否则,在每个坐标都为真之前做其他事情。

伪代码:

Grid<bool> g(25, 25);

while (1) {
if (every coordinate is true) {break;}

//do stuff

}
你能帮助我吗?特别是“if(每个坐标都是真的)”公式?

3 个答案:

答案 0 :(得分:1)

我会做类似的事情:

bool every_coordinate_is_true(Grid<bool> g)
{
  bool b = true;
  foreach(x from grid) b &= x;
  //here b is true iif all elements are true
  return b;
}

当然这一切都取决于Grid的定义方式......

答案 1 :(得分:1)

如果你的网格支持迭代器,你可以使用std::all_of

Grid<bool> g(25, 25);
// If every coordinate in my grid is set to true, do something
bool all_true = std::all_of(g.begin(), g.end(), [](const coordinate& c) -> bool
    { return c.is_true(); });
if(all_true)
    do_something();
else
    do_something_else();

现在将它包装在all_true的循环中,然后进行设置。

答案 2 :(得分:0)

您使用C ++标记了您的问题,但没有发布的代码看起来像C ++。您使用什么语言来解决这个问题?