为什么当我将变量压入向量时却没有压入我期望的值呢?

时间:2019-04-23 15:39:23

标签: c++

我正在编写一个函数,该函数将能够找到两个位置之间的路径。我相信该函数可以找到路径,因为它在找到目标位置时将返回true,我的问题是,当我将目标位置推到矢量上并将其打印到我的外文件时,它并没有推动我需要的位置,尽管当我将其打印到控制台时,它会打印出我希望打印的内容。

我尝试编写多行代码以将同一变量压入向量,并且每次将不同的位置压入向量时,尽管每当我将其打印到控制台时,它仍会打印出我期望的图像。我也尝试过简单地将所需的确切数据推送到向量上,但仍然无法将其打印到我期望的文件外。

bool findShortestPath(vector<int> & visitedNodes, vector<int> & shortestPath, int & startNode, int & endNode, string mode)
{

    visitedNodes.push_back(startNode);
    shortestPath.push_back(startNode);

    vector<int> neighbours;
    Link thisLink(0, 0, "");
    neighbours = findNeighbours(startNode);



    if (startNode == endNode)
    {
        cout << startNode << endl;
        shortestPath.push_back(startNode);
        cout << "hello" << endl << endl;
        return true;
    }


    else
    {


        for (int neighbour : neighbours)
        {
            for (Link link : links)
            {
                if (link.getRef1() == startNode && link.getRef2() == neighbour)
                {
                    thisLink = link;
                    break;
                }
                else if (link.getRef2() == startNode && link.getRef1() == neighbour)
                {
                    thisLink = link;
                    break;
                }
            }
            if (std::find(visitedNodes.begin(), visitedNodes.end(), neighbour) == visitedNodes.end() || visitedNodes.empty())
            {
                if (thisLink.checkMode(mode))
                {
                    findShortestPath(visitedNodes, shortestPath, neighbour, endNode, mode);
                }
            }           

        }
        shortestPath.pop_back();
        cout << "Bye" << endl;
        return false;
    }




}

该函数称为...


        else if (command == "FindRoute")
        {
            vector<int> path;
            stringstream stream(commandString);
            string splitString; 
            string output;
            string mode;
            int startNode;
            int endNode;
            int i = 0;

            while (getline(stream, splitString, ' '))
            {
                if (i == 1)
                {
                    mode = splitString;
                }
                else if (i == 2)
                {
                    stringstream startNodeString(splitString);
                    startNodeString >> startNode;
                }
                else if (i == 3)
                {
                    stringstream endNodeString(splitString);
                    endNodeString >> endNode;
                }
                i++;
            }
            vector<int> visitedNodes;


                findShortestPath(visitedNodes, path, startNode, endNode, mode);

                for (int node : path)
                {
                    _outFile << node << endl;
                }


            return true;
        }

我已经逐步完成了代码,并且将startNode推送到shortestPath时,它正是我所期望的。 因此输入为“ FindRoute Rail 9081958 15832241”,因此它正在寻找位置9081958和15832241之间的路线。当我使用cout << node << endl;它带有90819589361783。与写入文件相同。

0 个答案:

没有答案