添加和访问指针的矢量
vectors of pointers adding and accessing
问题是我在这里没有得到预期的输出。我有一个Node类,它有一个称为neigbours的指针向量。我想把物体的邻域放到向量中。
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是Node对象的向量。
将元素添加到nodes
向量后,可以重新分配其内存。这意味着它的元素被移到内存中的另一个位置,指向它们的指针被无效。
特别是,执行nodes.push_back(current);
后,您用&nodes.at(0)
获取的地址不再有效
有多种方法可以修复它,但最简单的方法是将nodes
设置为deque
,而不是vector
。Deque不会重新分配内存,因此您的代码可以正常工作。
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用指针访问数组中的对象数据成员
- 无法通过指针访问对象的成员
- decltype:使用指针访问类的静态成员
- 是否可以使用指针访问变量以避免直接编辑变量?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++继承从基类指针访问派生类中的非虚拟函数
- 如何使用指针访问成对向量的元素
- 为什么有些库提供无指针访问,而另一些库则不提供
- 如何通过引用或指针访问二维矢量
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 复制堆栈上的成员值或使用指针访问它?
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 从指针访问 Kaguya Lua 状态
- 说明通过指针访问非静态类成员函数
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?