通过二维矢量进行迭代
Iterate through 2d vector
我试图创建一个Graph类,并希望将所有边打印到屏幕上。但我在迭代二维向量时遇到了一个问题。
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;
}
}
}
相关文章:
- 我可以在没有堆栈的情况下在二叉搜索树中实现迭代器吗?
- 迭代二维矢量时发生运行时错误
- 无法打印完整的二叉搜索树,因为我从最低节点向后迭代的逻辑有缺陷
- 编译时二叉搜索树错误的反向迭代器表示"no matching function call for operator=()"
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 使用迭代器的二叉搜索
- n 维 4 阶龙格-库塔求解器大迭代中的误差
- 在C 中的n维矩阵上迭代
- 二维向量的迭代器
- 从预序遍历迭代(不是递归)构造二叉搜索树
- 通过多维阵列迭代问题
- 将值推送到二维向量中,然后对其进行迭代
- 通过二维矢量进行迭代
- 那么,是否可以像使用指针一样使用迭代器访问二维向量中的所有元素呢?
- 用1个循环解释二维数组迭代
- 用c++迭代二维向量
- 迭代二维std::unordered_map
- 有没有一种方法可以在不使用递归的情况下迭代n维数组(其中n是变量)
- C++中的一个迭代二叉树遍历