私はC++で初心者のHackerRankの問題をやっていますが、私はこの問題を解決する方法がいくつかあるようですが、どの方法が最も広く使われているか、最も効率的であるか疑問に思っています。問題は、stack
とqueue
の両方の変数と、stack_push
/stack_pop
とqueue_push
/queue_pop
の関数を含むクラスを作成する必要があります。C++の基本的なスタックとキューにはどのデータ構造が最適ですか?
から私は私がstd::vector
、std::stack
とstd::queue
、またはstd::deque
、そしておそらく他の人を使用することができますどちらかと思われるGoogleで検索した内容。
どちらを使用するのが最適かを判断する方法がわかりません。助言がありますか?
EDIT: 私は両方のためstd::vector
を用いて実装した後、std::queue
と共にstd::stack
を使用して、私は小風テストケースの両方と全く同じ性能を見ました。 EDIT2: 非常に大きなテストケースの場合、のように、std:stack
/std:queue
のように見えます。私はこれがベクトルキューで効率的でないFIFOキューのためだと推測していますが、これをさらにテストする必要があります。
必ず 'std :: vector'を使用してください。 –
いつも?何故ですか? – Austin
'std :: stack'と' std :: queue'はコンテナ自体ではなく、通常は 'std :: vector'という基底のコンテナを取ります。 – 101010