簡體   English   中英

附加到具有非動態分配堆棧的向量

[英]Appending to vector with non-dynamically allocated stack

我正在研究一個編碼問題,為了解決這個問題,我正在創建自己的數據結構(類)“ SetOfStacks”,該結構具有一個向量堆棧作為成員。 在SetOfStacks的成員函數之一中,我需要使用push_back()函數擴展向量。 為此,我在成員函數中聲明了一個棧變量(非動態地),然后將該變量傳遞給push_back()。
該代碼工作正常,但我不明白為什么。 我想知道,在成員函數執行完之后,堆棧變量將超出范圍(因為它不是動態分配的),因此向量將包含垃圾。 我認為解決方案將是使用動態分配的內存。 為什么這樣做? 我最好的假設是push_back()通過值而不是通過引用接收新堆棧,從而有效地為其制作了一個新副本。 任何幫助表示贊賞!

當您將stack元素push_back()傳遞給向量時,該元素將按值傳遞給向量,而不是作為引用,因此即使在函數定義之后,堆棧元素被破壞,向量也已具有該值。

這可以與從函數到調用者的返回值相關。 即使返回值在函數堆棧本地(即,函數執行后將被銷毀),返回值也將在銷毀之前被復制到調用方函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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