구조체가 내 클래스의 한 기능에만 있습니다. 디버깅을하고 생각할 수있는 모든 것을 시도했습니다. 이것은 그래프 용이며 함수는 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;
}
모든 도움을 주시면 감사하겠습니다. 유사한 게시물을 살펴본 결과 내 벡터가 직접 적용하려고해도 왜 내 벡터가 입력을받지 않는지에 대한 확실하지 않은 제안을 시도했습니다 (위의 주석 코드 참조). 당신이 하나를 제공하지 않는 경우 기본 복사 생성자의 형태이다
node(const node& other);
:
관련 없음 :'startNode = node();'는 쓸모가 없습니다. 그것의 이미 건설 된'노드'. – WhozCraig
벡터에서 볼 수없는 데이터는 무엇입니까? 벡터 열기가 로컬이고 함수를 종료 한 직후에 할당이 해제된다는 것을 알고 있습니까? –
C++ 11 이전에는 함수 내에서 로컬로 정의 된 구조체 벡터를 사용하는 것이 적절하지 않았습니다. 'struct node'를 파일 범위로 옮겨보고 차이가 있는지 봅니다. –