1

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) );
}

これを行うより良い方法はありますか?

4

1 に答える 1

4

要素を実際にポップするつもりはなく、その場で使用したい場合は、参照を使用してください。

auto& lastone = numbers.top();
std::cout << "last " << *lastone << std::endl;
于 2013-09-29T16:18:51.520 に答える