如果查看输出,您可以看到 listOrder 的内容,这些是正确的内容。但是,一旦我将它传递到我的图形构造函数并输出相同的列表,我就会出现乱码。我怀疑这与我的 Vertex* 内容的图形 adjacencyList 有关,但我不明白我的指针是如何困惑的。请帮助我将正确的节点放入图形 vector 中!
for (vector<char>::iterator it=listOrder.begin(); it!=listOrder.end(); ++it)
{
cout << "ListNode: " << *it << endl;
}
Graph graph(listOrder, adjacencyList);
for (vector<char>::iterator it=graph.getOrder().begin(); it!=graph.getOrder().end(); ++it)
{
cout << "Node: " << *it << endl;
}
构造函数
Graph::Graph(vector<char> newVertices, map<char, Vertex*> newAL)
{
vertices = newVertices;
adjacencyList = newAL;
}
获取订单函数
vector<char> Graph::getOrder()
{
return vertices;
}
输出
ListNode: A
ListNode: B
ListNode: C
ListNode: D
ListNode: E
ListNode: F
ListNode: G
Node: ░
Node: ↨
Node: >
Node:
Node: ─
Node:
Node: >
最佳答案
每次调用 getOrder
时,您都会返回 vector 的拷贝,因此迭代器不是来自同一个容器。
要么通过引用从 getOrder
返回 vector ,要么只调用一次 getOrder
来获取 vector 的拷贝,然后遍历它。
类似于:
vector<char> v(graph.getOrder());
for (vector<char>::iterator it=v.begin(); it!=v.end(); ++it)
{
cout << "Node: " << *it << endl;
}
关于c++ - 我的 vector 在通过构造函数传递后怎么会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20672363/