C++ stl pop不会返回

use*_*330 2 c++ stl

我有经验,stl pop函数不会返回任何内容.

如何返回堆栈的顶部元素并将其删除?

top函数不是一个好的解决方案,因为它只返回顶部元素的引用...

Jac*_*ack 7

弹出它后,如果你不再需要这个元素

// use element with
container.top();
// remove it
container.pop();
Run Code Online (Sandbox Code Playgroud)

否则制作一个对象的副本:

Element e = container.top();
container.pop(); // remove it
// feel free to use e, you made a copy of it
Run Code Online (Sandbox Code Playgroud)

如果你真的delete需要手动,那么你没有使用任何类型的智能指针,这将问题转移到另一个主题.