【发布时间】:2018-06-10 22:21:10
【问题描述】:
我正在研究一个编码问题,为了解决这个问题,我正在创建自己的数据结构(类)“SetOfStacks”,它有一个堆栈向量作为成员。在 SetOfStacks 的成员函数之一中,我需要使用 push_back() 函数扩展向量。为此,我在成员函数中声明了一个堆栈变量(非动态),然后将该变量传递给 push_back()。
代码工作正常,但我不明白为什么。我想在成员函数完成执行后,堆栈变量将超出范围(因为它不是动态分配的),因此向量将包含垃圾。我认为解决方案是使用动态分配的内存。为什么这行得通?我最好的假设是 push_back() 通过值而不是通过引用接收新堆栈,有效地制作了它的新副本。任何帮助表示赞赏!
【问题讨论】:
-
push_back()复制一份。
标签: c++ vector data-structures dynamic-memory-allocation