簡體   English   中英

遍歷2d向量

[英]Iterate through 2d vector

我嘗試創建一個Graph類,並希望將所有Edges打印到屏幕上。 但是我在迭代2d向量時遇到問題。

class Graph
{
public:
    Graph(void);
    ~Graph(void);
    vector<Node*> nodes;
    void addNode(Node node);
    void addDirectedEdge(Node &head,Node* tail,int cost);
    void toSrceen();
};

class Node
{
public:
    Node(char* name);
    ~Node(void);
    char* name;
    vector<Node*> children;
    vector<int> costs;

};

void Graph::toSrceen()
{
    for (vector<vector<Node*>>::iterator i = nodes.begin(); i != nodes.end();++i) 
    {
         for (vector<Node*>::iterator j = i->begin(); j != i->end();++i)
         {
             cout << j->name;
         }
     }
}

在第一個for循環中有問題,但是我找不到錯誤...

看起來內部循環會增加錯誤的迭代器。 可能需要是:

 for (vector<Node*>::iterator j = i->begin(); j != i->end();++j)

您要在第二個循環的每次迭代中遞增“ i”,而不是j。

vector<vector<Node*>>::iterator i = nodes.begin()

如果您查看Graph :: nodes的聲明,它是一個vector<Node*> ,而不是vector<vector<Node*>>

循環可能應該是這樣的:

void Graph::toSrceen()
{
    for (vector<Node*>::iterator i = nodes.begin(); i != nodes.end();++i) 
    {
         Node* currNode = *i;
         for (vector<Node*>::iterator j = currNode->children.begin(); j != currNode->children.end();++j)
         {
             cout << j->name;
         }
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM