VSCode Debug在尝试进入函数进行调试时打开stl_map.h



我正在尝试调试一个图函数,该函数从一个顶点开始,通过FS(首次搜索(算法找到它后,在目标顶点结束。在调试模式下调用函数时,调试器会打开stl_map.h(我认为它这样做是因为图(顶点和边(已经在映射中实现。

该函数的参数为(map、startPerson、endPerson(。我传递了一张地图,两个人的参数如下(函数名为bfsFacebook(:

for (;;) {
cout << endl << "Enter the name of the starting person:n";
getline(cin, startingPerson);
if (IS_QUIT(startingPerson))
break;
if (everyone.count(startingPerson) == 0) {
cout << "Invalid starting name.";
continue;
}
cout << endl << "Enter the name of the ending person:n";
getline(cin, endingPerson);
if (IS_QUIT(endingPerson))
break;
if (everyone.count(endingPerson) == 0) {
cout << "Invalid ending name.";
continue;
}
//Breath-First search from starting node to end node (starting vertext to end vertex)
if (bfsFacebook(everyone, everyone[startingPerson], everyone[endingPerson]) == true) {
cout << "Path found between " << startingPerson << " and " << endingPerson << endl;
} else {
cout << "Path Not Found between " << startingPerson << " and " << endingPerson << endl;
}

}
cout << "Exiting..." << endl;

以下是实际功能:

bool bfsFacebook(map<string, Person> everyone, Person &startingPerson, Person &endingPerson) {

startingPerson.visited = true;
if (startingPerson.name == endingPerson.name && startingPerson.visited == true)
return true;
for (string somePerson : startingPerson.friends) {
if (everyone[somePerson].visited == false && bfsFacebook(everyone, everyone[somePerson], endingPerson)) {
return true;
}

}
return false;
}

为什么在调试过程中进入函数并不能将我发送到实际函数,有什么特殊的原因吗?

如果我的问题不够详细,请告诉我

呼叫线路:

bfsFacebook(everyone, everyone[startingPerson], everyone[endingPerson])

首先解析参数,然后用它们调用bfsFacebook

您有两个对map<string, Person>::operator[](const string&)的调用,这两个调用将用于解析everyone[startingPerson]everyone[endingPerson],因此程序中执行的下一行是在std::map


map<Key, Value>::operator[](const Key&)可能会根据构建进行优化,但在调试中,它更有可能出现在代码中。

由于std::map已经由您自己的代码为<string, Person>实例化,调试器没有理由不介入一个由您负责存在的函数。

相关内容

  • 没有找到相关文章

最新更新