2017-10-09 20 views
-2

私は内部リストを格納するトップリストを持っています。私は標準テンプレートライブラリリストテンプレートを使用しています。リストのリストを印刷するC++ STLリスト

内側のリストの値を印刷しようとしています。 上部のリストは「L」、内部のリストは「I」です。

void ListofLists::dump() 
{ 
    list<list<IntObj>>::iterator itr; 
    for (itr = L.begin(); itr != L.end(); itr++) 
    { 
     list<IntObj>::iterator it; 
     for (it = I.begin(); it != I.end(); it++) 
     { 
      cout << *it << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

リスト内のデータを印刷している、私のIDEは、ラインcout << *it << " ";を好きではないと私はプログラムを持つことは、私はそれがやりたいしながら、それを変更するかどうかは本当にわかりません。 それの赤は「< <「演算子を下線と「何の演算子「< <は言う、 『これらのオペランドと一致しません。』

誰かが理由として私を助けることができますか?私は見てきて、私が探しているものを見つけることができません。私は何かを正しく理解していない。私は私のIDEが私の地元の人々を見ることができるので、それがデータ構造にデータを正しく追加していることを知っています。

助けてくれてありがとうございます!大丈夫です。

list<IntObj>::const_iterator i; 

が代わりに使用している1がエラーをコンパイルを避けるために:

+4

のようになります。あなたはこれを行うには、コードに追加しましたか? –

+1

あなたは、リストを格納するリストを持っていると言いますが、それはあなたが持っているものではありません。何らかの理由でネストループを使用して出力しようとする、無関係な2つのリストがあります。また、「My IDE does not like」を明確にして、[mcve]ありがとうございます。 – Rakete1111

+0

私はほうれん草が好きではありません、あなたのIDEコードの行が好きではありません。そういうわけで、私たちはすべて奇妙なことをしています。 –

答えて

0

は、使用してみてください。

0

内部ループは意味をなさない。

あなたはイテレータを使用したい場合は、forループ範囲ベースを使用する方が簡単になりますが、この関数は

void ListofLists::dump() /* const */ 
{ 
    for (list<list<IntObj>>::iterator itr = L.begin(); itr != L.end(); itr++) 
    { 
     for (list<IntObj>::iterator it = itr->begin(); it != itr->end(); it++) 
     { 
      cout << *it << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

のように定義することができます。例えば

void ListofLists::dump() /* const */ 
{ 
    for (const auto &inner_list : L) 
    { 
     for (const auto &item : inner_list) 
     { 
      cout << item << " "; 
     } 
     cout << endl << "End" << endl; 
    } 
} 

は、クラスIntObjためoperator <<を定義する必要が考慮してください。 その宣言は、 `IntObj`を印刷しようとしている

std::ostream & operator <<(std::ostream &, const IntObj &); 
+0

IntObjクラス以外のIntObjのostream演算子を定義できますか? IntObjファイルを編集できません。ありがとうvlad。 –

+0

@ AliciaSabatinoクラス内で定義することができます。この場合、ADLルックアップが使用されます。オペレータがクラスのプライベートデータメンバに直接アクセスする場合、オペレータはフレンドとして宣言されなければならない。 –

+0

よろしくお願いします。だから、値がIntObjのm_dataに格納されていると言う...私はちょうどcout << m_dataをオーバーロードされた関数で書くだろうか? –

関連する問題