簡體   English   中英

添加和訪問指針的向量

[英]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.

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