2016-08-12 5 views
1

私はいつも配列を使用してアイテムをトップにプッシュするためのアルゴリズムを書くことができますが、スタックはおそらく後で使用する方が効率的で簡単です。私はこの機能を探していて見つけられませんでした。C++スタックの一番下に追加する機能はありますか?

+6

'std :: deque'の使用はどうですか? – 6502

+6

そのデータ構造体の定義によってスタックの一番下にプッシュすることはできません。代わりにダブルエンドキューを使用してください。 –

答えて

0

std::stackは、コンテナアダプタであり、コンテナ自体ではありません。これは、単に定義されたスタックインターフェイスを強制的に押して、push_back(),pop_back()、およびback()の機能を提供するユーザー指定の下位コンテナの上に、スタックの上端にプッシュとポップを提供するだけです。デフォルトではstd::stackstd::dequeを基本コンテナとして使用しますが、std::vectorstd::listは要件を満たす標準コンテナです(ほとんどの場合はおそらくstd::vector)。

スタックのもう一方の端にプッシュできるようにするには、効率的にサポートするコンテナを直接使用してください。std::dequeが最適です。

+0

'std :: deque'はこの' std :: stack'の前に聞いたことがなかったものでした。 'std :: deque'はおそらく私が使っているものです。スタックを必要としています。 – Derconug

0

std::stackは、完全なストップのFILOデータコンテナです。あなたは背中に追加することができますし、背中から削除することができます。何か他のことが必要な場合は、std::stackでない容器を使用する必要があります。

0

あなたは達成したいものに間違った容器を使用しているようです。デュークはよりフィット感があるようです。

関連する問題