queue 解答ページ | Programming Place Plus C++編【標準ライブラリ】 第11章

トップページC++編

C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。

問題①

問題① queue が内部で使用するコンテナとして、vector を選択できませんが、その理由を説明してください。また、選択できたとして、適切な選択となり得るでしょうか?


vector には、pop_frontメンバ関数がないことが理由です。実際のところ、queue の popメンバ関数を使わなければ、pop_front を呼び出そうとしないので、単に、

std::queue<int, std::vector<int> > iQueue;

このように、変数を定義するだけではエラーにはならないでしょう。とはいえ、pop できない queue に価値があるとも思えないので、事実上、選択できないと考えられます。

また、キューというデータ構造の特徴と、vector の実装を考えると、もし使えるとしても、非効率になってしまいます。これは、配列の先頭側から要素を取り出すので、後続の要素を手前にずらす必要があるためです。一般に、配列を使ってキューを実装する場合、リングバッファ構成にしますが(アルゴリズムとデータ構造編【データ構造】第6章)、vector はそうはなっていないので、不適格と言えます。


参考リンク


更新履歴

’2015/10/12 新規作成。



第11章のメインページへ

C++編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る