std::queue::pop() が値を返さないのはなぜですか?
std には戻り値がないためです。 :queue::pop() は、例外に直面した場合の安全性の必要性から生まれました。
オリジナル質問は、 std::queue::front() から要素を検査する場合でも要素のコピーが必要であることを強調しています。ただし、決定的な違いは、コピー プロセス中に例外が発生する可能性があることです。
ポップされた要素を返す std::queue::pop() の実装を考えてみましょう:
template<class T> class queue { T pop() { auto x = elements[top_position]; --top_position; // alter queue state return x; // calls T(const T&) which may throw } };
T のコピー コンストラクターが戻り時にスローされる場合、キューの状態はすでに変更されていますが、要素は返されません。これにより、データ損失が発生する可能性があります。
さらに、ポップされた値が必要ない場合、そのような実装は不必要なコピーを作成するため非効率的です。
したがって、安全性と効率性を確保するために、std ::queue::pop() は void 関数として設計されており、クライアントは std::queue::front() を使用して、コピーします。
以上が`std::queue::pop()` がポップされた要素を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。