结构只在我班级的一个功能中。我一直在调试并尝试我能想到的一切。这是一个图表,功能是Dijkstra公式。我得到的主要问题是我的数据永远不会进入我的向量(向量打开)。
不确定是否需要所有代码,因为此函数中发生了所有问题。当前未使用的代码(尝试首先将数据导入向量)已被注释掉。
void Graph::Dijkstra(string start, string end, vector<string> &path)
{
struct node
{
string name;
vector<string> connection;
int costSoFar;
node() {name = " "; costSoFar = 0;}
node(node& other)
{
name = other.name;
connection = other.connection;
costSoFar = other.costSoFar;
}
};
vector<string> adjacent;
node startNode;
node current;
node endNode;
vector<node> open;
node closed[MAX_VERTICES];
int small, temp;
bool found = false;
bool inClosed = false;
bool inOpen = false;
string tempVertex;
// starting node is added open list
// startNode = node();
startNode.name = start;
startNode.costSoFar = 0;
//adjacent.push_back(startNode.name);
open.push_back(startNode);
temp = 0; // used a place holder for debugging
//open[0].name = startNode.name;
//open[0].costSoFar = startNode.costSoFar;
}
非常感谢任何帮助。我查看了类似的帖子并尝试了他们的建议,不确定为什么我的矢量不会输入,即使我尝试直接应用它(参见上面的评论代码)。
答案 0 :(得分:0)
好的,我找到了自己的解决方案。如果结构是在函数内创建的,它就无法以所需的方式访问变量。我所做的就是将节点结构移动到函数外部。
struct node
{
string name;
vector<string> connection;
int costSoFar;
node() {name = " "; costSoFar = 0;}
node(const node& other)
{
name = other.name;
connection = other.connection;
costSoFar = other.costSoFar;
}
};
void Graph::Dijkstra(string start, string end, vector<string> &path)
{ // the other code needed }