在我正在编写的程序中,某个代码块只有在我cout << endl
在它的开头有一个语句时才能正常工作。如果不存在,则程序不会出现段错误,而只是在 100% 的情况下给出可验证的错误答案。有了这个cout << endl
声明,它每次都有效。我实际上不知道是什么原因造成的,因为我尝试使用刷新 cout 缓冲区cout.flush()
但没有效果。cout
此外,没有 endl也无法使用。我还仔细检查了,该结构的所有成员变量Node
都已在该结构的初始化列表中初始化。如果有人可以帮助我,我将不胜感激!这是有问题的代码:
` bool Board::CheckDistinct(Node* node, int* rec) {
cout << endl; // if I comment this line out, it doesn't work correctly
if(node->incoming.size() > 1) {
Node* rec_node = node->incoming[rand() % node->incoming.size()];
*rec = rec_node->row * num_cols() + rec_node->col;
return false;
}
else if(node->incoming.size() == 0) return true;
else {
node->visited = true;
if(!node->incoming[0]->visited) CheckDistinct(node->incoming[0], rec);
}
}
这是Node
结构的代码(如果有帮助):
struct Node {
int val, row, col, dist;
bool visited, is_white_hole, is_black_hole;
Node* outgoing[4];
std::vector<Node*> incoming;
Node(int val_, int row_, int col_) :
val(val_), row(row_), col(col_), dist(-1),
visited(false),
is_white_hole(true), is_black_hole(true) { }
};