C++ c++;如果网格中的每一个布尔都是真的,那么

C++ c++;如果网格中的每一个布尔都是真的,那么,c++,grid,loops,C++,Grid,Loops,我试图把注意力集中在这个问题上,但我的程序不断崩溃(所以我只是从头开始做我的循环) 我需要做的是:如果网格中的每个坐标都设置为true,那么做些什么。否则,请执行其他操作,直到每个坐标都为真 伪代码: Grid<bool> g(25, 25); while (1) { if (every coordinate is true) {break;} //do stuff } 网格g(25,25); 而(1){ 如果(每个坐标都为真){break;} //做事 } 你们能帮帮我吗

我试图把注意力集中在这个问题上,但我的程序不断崩溃(所以我只是从头开始做我的循环)

我需要做的是:如果网格中的每个坐标都设置为true,那么做些什么。否则,请执行其他操作,直到每个坐标都为真

伪代码:

Grid<bool> g(25, 25);

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

//do stuff

}
网格g(25,25);
而(1){
如果(每个坐标都为真){break;}
//做事
}
你们能帮帮我吗?特别是“如果(每个坐标都是真的)”公式?

我会这样做:

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;
}
bool每个坐标为真(网格g)
{
布尔b=真;
foreach(来自网格的x)b&=x;
//这里b是真的,如果所有元素都是真的
返回b;
}

当然,这完全取决于如何定义网格…

你用C++标记了你的问题,但是没有一个代码看起来像C++。对于这个问题,您具体使用什么语言

如果网格支持迭代器,则可以使用:

网格g(25,25);
//如果网格中的每个坐标都设置为true,请执行某些操作
bool all_true=std::all_of(g.begin(),g.end(),[](常量坐标和c)->bool
{返回c.is_true();});
如果(全部为真)
做某事;
其他的
做点别的事吧;

现在,将其包装在一个循环中,在all_true上,您就可以设置了。

while(!(每个坐标都是true))-然后取决于网格,这可能取决于网格的外观。很高兴您这么问。我正要问同样的问题,我也要坐在这里等待答案。除了Rob的以外,我会选择
std::none_of
。如果你的
网格
可以被迭代,也就是说,
而(!g)
我会在网格中使用
操作符bool()
。谢谢Burkhard,我也一直在尝试使用foreach。给我一点时间解决这个问题,我会给你回复的。谢谢,如果它是一个二维网格(25*25),那么你也可以在网格上做一个双重网格。我会把它作为网格本身的一种方法。
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();