簡體   English   中英

如何將指針列表插入指針指針列表?

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

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