std::queue
またはのいずれかで実行できる実装がありますstd::list
。どちらを使うかで違いはありますか?std::queue
機能が少ないようですのでstd::list
?
2 に答える
どちらを使うかで違いはありますか?
はい-いくつかの方法で。主な考慮事項は読みやすさです。を使用するstd::deque
ことにより、コードの読者に、コンテナーの中央ではなく、最後にのみ挿入および削除する意図を伝えます。これは、他の人のコードを読むときに知っておくと非常に便利なことです。
2番目の考慮事項は、コンテナ自体の実装です。要素を個別に割り当てて格納するリストとは異なり、std::deque
スペースを節約するために要素をチャンクに格納します。これにより、コンテナのフットプリントが減少したり、コンテナがわずかに速くなったりする場合があります。反対に、キュー全体を反復処理する場合、非効率になる可能性があります。
ただし、効率の考慮事項は、最適化の問題であるため、初期設計の際の要素にはなりません。
最善のアプローチは、最高の可読性を追求することだと思います。コードの読者に意図を可能な限りクリーンな方法で伝えるコンテナーを使用します。
機能が少ないようですので軽いです…?
関数を増やしても、オブジェクトの重みは大きくなりません。私はあなたのシナリオで最も意味のあるコレクションを使用します。常に先入れ先出し方式でこれにアクセスする場合は、std::queue
適切です。二重リンクリスト機能が必要な場合は、を使用してstd::list
ください。