问题是我在这里没有得到预期的输出。我有一个Node类,它有一个名为neigbours的指针向量。我想将对象neigbour放入向量中。
var filename = path.match(/[^\\/]*$/)[0];
然后我想访问它以打印出来。
Node current = Node(1, 1, street , 2, 2);
Node neighbour = Node(2, 2);
neighbour.instreets.push_back(Street(1, 1, street, 2, 2));
nodes.push_back(neighbour);
current.neighours.push_back(&nodes.at(0));
nodes.push_back(current);
但我得到一些随机数字而不是邻居coordinades。我是以错误的方式访问它们吗?
预期产出
cout << nodes[1].x << " " << nodes[1].y << endl;
cout << "- " << nodes[0].outstreets[0].name << endl;
cout << "ends " << nodes[1].neighours.at(0)->x << " " << nodes[1].neighours[0]->y << endl;
编辑: nodes是Node对象的向量。
答案 0 :(得分:1)
向nodes
向量添加元素后,可以重新分配其内存。这意味着它的元素被移动到内存中的不同位置,并且指向它们的指针无效。
特别是,&nodes.at(0)
后执行nodes.push_back(current);
nodes
的地址无效
有多种方法可以修复它,但最简单的方法是deque
vector
而不是not_one = filter(lambda x: x!=1, chked)
# or in python3
not_one = list(filter(lambda x: x!=1, chked))
。 Deque不会重新分配内存,因此您的代码可以正常工作。