想象一下,您有一堆unique_ptr
东西(要简化的 int),例如:
std::stack< std::unique_ptr<int> > numbers;
numbers.push( std::unique_ptr<int>( new int(42)) );
但是如果你尝试使用顶部元素,而不是从堆栈中获取它,你会得到一个编译错误:
if( not numbers.empty() ){
auto lastone = numbers.top();
std::cout << "last " << *lastone << std::endl;
}
您应该移出元素,使用它,然后再次放入堆栈:
if( not numbers.empty() ){
auto lastone = std::move(numbers.top());
numbers.pop();
std::cout << "last " << *lastone << std::endl;
numbers.push( std::move(lastone) );
}
有一个更好的方法吗?