【发布时间】:2014-12-22 09:26:20
【问题描述】:
在我正在编写的程序中,某个代码块只有在我的开头有 cout << endl 语句时才能正常工作。如果它不存在,则程序不会出现段错误,而只是在 100% 的情况下给出可验证的错误答案。使用cout << endl 语句,它每次都有效。我实际上不知道是什么原因造成的,因为我尝试使用 cout.flush() 刷新 cout 缓冲区,但没有效果。此外,没有 endl 使用 cout 是行不通的。我还仔细检查了,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) { }
};
【问题讨论】:
-
你在使用图书馆吗?
-
您的预期输出是什么,实际输出是什么?你在哪里以及如何产生所说的输出? “它给出了一个错误的答案”没有帮助。
-
你能给出上下文,函数被调用的地方吗?
-
预期的输出是是否存在到该节点的明显最短路径,如果我将 endl 注释掉,那么它总是发现它不是不同的。