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) );
}
これを行うより良い方法はありますか?