C++ for循环中的索引向量
这是一个后续行动,只是现在有更多的进展和更少的错误 就像上次一样,这是一门大学课程,所以复制粘贴对我来说并不是最有益的,即使它确实有效 我现在遇到的问题与LeastDistance函数中向量的索引有关,因为在调试器内外运行代码时会生成运行时异常,并显示向量下标超出范围的消息。如果有人比我更熟悉向量库,那么相关的行是1804。在同一函数中访问for循环时会触发此操作C++ for循环中的索引向量,c++,vector,indexing,dijkstra,C++,Vector,Indexing,Dijkstra,这是一个后续行动,只是现在有更多的进展和更少的错误 就像上次一样,这是一门大学课程,所以复制粘贴对我来说并不是最有益的,即使它确实有效 我现在遇到的问题与LeastDistance函数中向量的索引有关,因为在调试器内外运行代码时会生成运行时异常,并显示向量下标超出范围的消息。如果有人比我更熟悉向量库,那么相关的行是1804。在同一函数中访问for循环时会触发此操作 for (int j = 0; j < hnode[i].nodes.size(); j++) for(int j=0;j
for (int j = 0; j < hnode[i].nodes.size(); j++)
for(int j=0;j
到目前为止,我已经编写了一个小的助手函数GetIndex,但是我不确定它的代码是否正确,以及如何在LeastDistance函数本身中实现它。下面是完整的代码(为粗制滥造的格式道歉,这里的编辑让我有些难过)
#包括“stdafx.h”
#包括
#包括
#定义INF=9999;
使用名称空间std;
结构体类型
{
char nodeLink;//相邻链路
int cost;//链接的成本
}; //在Dijkstra算法中使用
类头节点
{
公众:
字符名;
布尔访问;
向量节点;
头节点(char x){Name=x;visted=false;}
};
类图
{
char Start='A';
char StartNode;
字符当前节点;
目的地;
整数总成本=0;
向量hnode;
向量路径;
向量权重;
公众:
图();
void createHeadNode(char X);
void createAdjMatrix();
char-LeastDistance(char节点);
无效矩阵();
void Dijkstra(char StartNode,char Destination);
void DestinationChangeCaller();
char GetStartNode();
int GetIndex(charcurrentnode);
};
int main()
{
图形;
graph.createHeadNode('A');
graph.createHeadNode('B');
graph.createHeadNode('C');
graph.createHeadNode('D');
graph.createHeadNode('E');
graph.createAdjMatrix();
graph.GetStartNode();
graph.DestinationChangeCaller();
系统(“暂停”);
返回0;
}
void图形::DestinationChangeCaller()
{
for(Destination='A';Destination-get;
cout可能还有其他问题,但这里有一个:
char Graph::GetStartNode() // elementary get function with no error correction.
{
char got;
cout << "Please enter a node from A-E to start from: ";
cin >> got;
cout << endl;
return got;
}
因此,这里:
void Graph::DestinationChangeCaller()
{
for (Destination = 'A'; Destination <= 'E'; Destination++)
{
Dijkstra(StartNode, Destination);
^^^^^^^^^
}
}
void图::DestinationChangeCaller()
{
对于(Destination='A';Destination,您有多个以开头的循环(int j=0;j
。它是哪一个?请阅读有关
graph.createAdjMatrix();
graph.GetStartNode(); // <----- The return value isn't used
graph.DestinationChangeCaller();
void Graph::DestinationChangeCaller()
{
for (Destination = 'A'; Destination <= 'E'; Destination++)
{
Dijkstra(StartNode, Destination);
^^^^^^^^^
}
}