提问人:Daniel 提问时间:1/8/2020 更新时间:1/8/2020 访问量:182
如何将指针列表插入到指针-指针列表中?
How to insert a pointer list into a pointer-pointer list?
问:
假设我有这两个带有指针的列表。
list<Node **> open;
list<Node *> new_children;
我想用指向 元素的指针填充:list<Node **> open
list<Node *> new_children
for (Node * n : new_children)
{
open.emplace_front(&n);
}
在此之后,如果我写出 open 的元素:
for (auto o : open)
{
(**o).dump();
}
我一次又一次地得到相同的元素。为什么?
答:
0赞
Zig Razor
1/8/2020
#1
这段代码是错误的:
for (Node * n : new_children)
{
open.emplace_front(&n);
}
您需要使用push_front:
for (Node * n : new_children)
{
open.push_front(&n);
}
做你想做的事。
0赞
Daniel
1/8/2020
#2
我想我解决了它。当我遍历时,每个都是一个副本,这在指针的情况下并不幸运。因此,正确的方法是通过引用遍历,并基于内存地址创建指针。就我而言,另一个问题是我在函数中创建,所以当我离开本地范围时,我得到了悬空的指针。为此,解决方案是使用 .实际上工作正常。new_children
Node * n
Node **
Node **
Node **
new
emplace_front()
for (auto & n : new_children)
{
Node ** new_open = new Node *(n);
open.emplace_front(new_open);
}
评论