2011-02-19 16 views
0

複数のデータセットを管理するために使用できるキューのキューを作成しようとしていますが、その方法はわかりません。単純に動作しませんqueue<queue>をdelaringし、次のエラーが返されます。それは、データ構造のこの種を実装するために、そしてもしそうなら、私はそれについてどのように行くべきことも可能STLを使用せずにキューのキューを作成する

error: type/value mismatch at argument 1 in template parameter list for ‘template<class Type> class queue’ 
main.cpp:18: error: expected a type, got ‘queue’ 
main.cpp:18: error: invalid type in declaration before ‘;’ token 
make: *** [main.o] Error 1 

ですが?

注::標準テンプレートライブラリを使用するのではなく、自分でキューをコーディングする必要があるクラス割り当てです。

答えて

5

キューにはタイプが必要です。キューのキューを作成していますが、何もありません。だから、<>のトークンqueueをタイプではなくエラーとして読み込んでいます。 queueは技術的にはタイプではありません。 queue<int>はタイプです。

独自のキュークラスまたは独自のキュークラスを作成しますか?私がお勧めするのは、独自のテンプレートベースのキュークラスを作成することです。次に、そのテンプレートを値タイプとしてインスタンス化します。

キューのキューはintです。 queue< queue<int> >。それがSTLキューか独自のキューかどうか。

注:別のテンプレートのパラメータとしてテンプレートタイプを使用する場合は、そのテンプレートの周りにスペースを入れる必要があります。これは、queue<queue<int>>>>が、解析時に "Maxunch"ルールのために>>演算子として解釈されるためです。何度もあなたの目で混乱する単語キューを作成してください...

+0

+1。 「待ち行列の待ち行列」を作成しないでください。その待ち行列を、あなたがテンプレートを使用したいと思っているものにしましょう。キューは行く方法です。 – vdsf

0

queue<queue<int> >のように、2番目のキューのタイプを定義して、キューのキューを持つ必要があります。

+0

パーサーで "Maxunch"は、最後の '>> 'が' >>'演算子として解釈されることを意味します。 C++パーサー/コンパイラに対する2つのトークンとして解釈されるように、2つの '>の間にスペースが必要です。 –

+0

@Sion:Visual Studio 2010では使用できません。;)すべてのコンパイラで動作するように編集します。 – Xeo

+0

本当ですか?ああ、私は2010年を使い続けていましたが、それを試していなかったばかりです。甘い。 –

1

エラーは、そのキューがテンプレートクラスであるため、使用するあらゆる場所で引数を指定する必要があります。内部キューは何も上paramterizedされていないため、このよう

queue<queue> 

を書くことは違法です。

キューの独自のキューを作成することは間違いありません。実際には、STLコンテナクラスのいずれかを作成することは可能ですが、キューを使用して開始することは正しい方法ではありません。キューのキューを作成する場合は、単純なキューを作成する方法を考えて始めてください。どのような実装を使用しますか?どのように要素の数を追跡しますか?動的配列を使用するのは効果がありますか?リンクリスト、ハッシュテーブル、またはバイナリ検索ツリーはどうですか?それぞれの構造には賛否両論がありますので、始める前に考えてください。

優れたキューインプリメンテーションを取得したら、それをパラメータ化してキューをテンプレートにすることができます。このテンプレートから、キューのキューを簡単に作成できるようにする必要があります。

これが役立ち、幸運を祈ります!

関連する問題