[英]How to insert a pointer list into a pointer-pointer list?
假設我有這兩個帶指針的列表。
list<Node **> open;
list<Node *> new_children;
我想用指向list<Node *> new_children
元素的指針填充list<Node **> open
:
for (Node * n : new_children)
{
open.emplace_front(&n);
}
在此之后,如果我寫出 open 的元素:
for (auto o : open)
{
(**o).dump();
}
我一次又一次地得到相同的元素。 這是為什么?
這段代碼是錯誤的:
for (Node * n : new_children)
{
open.emplace_front(&n);
}
您需要使用 push_front:
for (Node * n : new_children)
{
open.push_front(&n);
}
去做你想做的事。
我想我解決了。 當我遍歷new_children
,每個Node * n
都是一個副本,這在指針的情況下並不幸運。 所以正確的做法是通過引用遍歷,根據內存地址創建Node **
指針。 就我而言,另一個問題是我在函數中創建了Node **
,所以當我離開本地范圍時,我得到了懸空指針。 為此,解決方案是使用new
創建新的Node **
。 emplace_front()
實際上工作正常。
for (auto & n : new_children)
{
Node ** new_open = new Node *(n);
open.emplace_front(new_open);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.