将数据从结构加载到该结构的向量中

时间:2014-04-06 07:22:53

标签: c++ vector struct

结构只在我班级的一个功能中。我一直在调试并尝试我能想到的一切。这是一个图表,功能是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;
}

非常感谢任何帮助。我查看了类似的帖子并尝试了他们的建议,不确定为什么我的矢量不会输入,即使我尝试直接应用它(参见上面的评论代码)。

1 个答案:

答案 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 }