2016-09-08 7 views
0

私はSTLのリストを使用してキューをシミュレートしようとしていたコードは、あるクラスは、ここでC++のイテレータ

template <class T> 
class myqueue{ 
    list<T> m; 
public: 
    void enqueue(T item); 
    T dequeue(); 
    void display(); 
}; 

である私には、表示する表示機能を実装したものですリストmの内容は、イテレータを使用しています。

template <class T> 
void myqueue<T>::display() { 
    // list<T>::iterator it; 
    for (list<T>::iterator it = m.begin(); it < m.end(); it++) 
    std::cout << *it; 
} 

template <class T> 
void myqueue<T>::display(){ 
    // list<T>::iterator it; 
    for (auto it = m.begin(); it < m.end(); it++) 
    std::cout << *it; 
} 

と私は継続的にエラーがこれに助けが必要になっていますが、これは私がForループ

EDITに!=代わりの<を使用している必要があります解決されましたエラーが発生しています

"31:13: error: need 'typename' before 'std::list<T>::iterator' because 'std::list<T>' is a dependent scope" 

キーワードautoを使用すると問題なく動作します。その背後にある理由は何ですか?

+0

何のエラーを得るのですか? – Hayt

+0

これはすべきです!= m.end() – Danh

+0

あなたのキューの 'list'の代わりに' deque'を考えてみてください。 – NathanOliver

答えて

0
for(auto it = m.begin();it<m.end();it++) 

for (auto it = m.begin(); it != m.end(); it++) 

または単にする必要があります:あなたは

for (const auto& e : m) 
+0

エラーは "エラー: '演算子<'に一致しません(オペランドの型は 'std :: _ List_iterator'と 'std :: list > :: iterator {aka std :: _ List_iterator } ') 31:31メモ:候補者は以下のとおりです: "問題を理解しました。ご協力ありがとうございます。 –

+0

@KapilBhandari:コメントにはなく、質問に直接挿入してください。そして、あなたがコメントで答えるとき、質問が尋ねられたスレッドでそれを行います。質問に対するスレッドコメントと回答ごとのコメントがあります。 – Jarod42

+0

あなたの提案をお寄せいただきありがとうございます。 –

関連する問題