2014-06-10 86 views
3

保證一旦std::liststd::forward_list項目被分配,它將保持在相同的內存位置(地址)直到被銷燬?當然,除了列表本身被複制之外。std :: list保證項目永遠不會移動到不同的內存位置?

+0

如果它可以移動,是不是會使所有指針無效?這聽起來不像是可能發生的。 –

+0

@TrippKinetics:我的觀點正是如此。我想知道將直接指針存儲到節點是否安全,而不是始終通過'std :: list'接口訪問這些項。 –

+0

[這個問題]的接受答案(http://stackoverflow.com/q/16027044/3549027)確認'insert'和'remove'不會使迭代器失效,但這並不完全是對問題的完全回答, IMO ... – dlf

回答

6

如果你看的文檔,不破壞元素時,所有功能(insertemplacepush_back,等...),你會看到他們有一張紙條,上面「沒有引用無效」,這相當於你所要求的(對象留在同一個內存位置)。所以,是的。

相關問題