[英]vectors of pointers adding and accessing
問題是我在這里沒有得到預期的輸出。 我有一個 Node 類,它有一個名為 neigbours 的指針向量。 我想將對象 neigbour 放入向量中。
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);
然后我想訪問它以打印出來。
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;
但是我得到了一些隨機數,而不是鄰居坐標。 我是否以錯誤的方式訪問它們?
預期輸出是
1 1
- street
ends 2 2
編輯:節點是節點對象的向量。
將元素添加到nodes
向量后,可以重新分配其內存。 這意味着它的元素被移動到內存中的不同位置,並且指向它們的指針無效。
特別是,你用&nodes.at(0)
取的地址在執行nodes.push_back(current);
后不再有效nodes.push_back(current);
有多種方法可以修復它,但最簡單的方法是使nodes
成為deque
而不是vector
。 Deque 不會重新分配內存,因此您的代碼可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.