Я только что реализовал широкий поиск в C++ и вместо объявления вектора как bool
, я объявил его как int
. Это приводит к очень странному наблюдению. Когда я int
код печатается следующее:Непоследовательность между int и bool
1
32763
-524268732
на протяжении всего кода, я не обеспечивают такого значения для переменной, как второй и третий узел приема, поэтому я предполагаю, что они просто ценности мусора , но почему значения мусора даже появляются, когда я инициализирую вектор, чтобы он был заполнен нулями ??? Вы можете проверить код, чтобы быть, что ниже:
#include <iostream>
#include <queue>
using namespace std;
queue<int> neigh;
vector< vector<int> > graph(3);
vector<int> flag(3, 0);
int main(void)
{
graph[0].push_back(1); graph[0].push_back(2);
graph[1].push_back(0); graph[1].push_back(2);
graph[2].push_back(0); graph[3].push_back(1);
neigh.push(0);
while(!neigh.empty())
{
int cur = neigh.front();
neigh.pop();
flag[cur] = 1;
for(int i = 0, l = graph[cur].size();i < l;i++)
{
if(!flag[graph[cur][i]])
neigh.push(graph[cur][i]);
}
}
for(int i = 0;i < 3;i++)
{
cout << flag[i] << endl;
}
}
Хорошо, тогда я изменил только одну строку кода, номер строки 7, тот, где я заявляю и инициализацию flag
вектор.
До:
vector<int> flag(3, 0);
После:
vector<bool> flag(3, false);
И вуаля! Код начал работать:
1 //The new output
1
1
Итак, вопрос в том, в чем проблема с кодом в первую очередь? Я верю, что это может быть какая-то ошибка, которую я сделал, или, возможно, что она только случайно, что моя реализация bfs работает вообще ... Итак, что такое правда, ТАК? Какая моя (возможная) ошибка?
Ну, это действительная ошибка, не так ли? Вы, парни с огромными репозиториями, думаете, что можете продолжать голосование по каждому вопросу, заданному новичком? –
Обычно принято оставлять комментарий, объясняющий нижний предел. Я не вижу проблемы с этим вопросом, поэтому, в свою очередь, я поддержу его, чтобы вы отказались от необъяснимого нисходящего потока. :-) –
Кроме того, могу ли я предложить ответ маркировки @ juanchopanza как принятый, если он решил вашу проблему? –