2017-06-28 22 views
0

私はセットのリストを印刷しようとしていますが、私は構文と混同しています。私は各セットを新しい行にしたい。私のコードは次のとおりです。セットのリストを印刷するC++

set<int> set1 = { 2, 4, 5 }; 
set<int> set2 = { 4, 5 }; 

list<set<int>> list1; 
list<set<int>>::iterator it = list1.begin(); 

list1.insert(it, set1); 
list1.insert(it, set2); 

cout << "List contents:" << endl; 
for (it = list1.begin(); it != list1.end(); ++it) 
{ 
    cout << *it; //error is here 
} 

イテレータへのポインタを印刷しようとするとエラーが発生します。私はリストの中でセットを使用しているので、かなり確かですが、このリストを出力するための適切な構文はわかりません。

+0

何がエラーで、どのようにセットを印刷しますか? ? – Ryan

+0

@ Ryan演算子はこれらのオペランドにマッチしますstd :: set 、std :: allocator >私はそれぞれのセットを新しい行に出力したいと言っていました。スペース – Daoud

答えて

3

次のように印刷しますか?

for (it = list1.begin(); it != list1.end(); ++it) 
    { 
     for (set<int>::iterator s = it->begin(); s != it->end(); s++) {               
      cout << *s << ' '; 
     } 
     cout << endl; 
    } 

出力:

List contents: 
2 4 5 
4 5 
+0

完璧、ありがとう! – Daoud

1

std::setためoperator <<の過負荷はありませんが、あなたはループを自分で書かなければならない(そしておそらくそのための関数を作成する)

範囲のためで、あなた単に行うことがあります:

for (const auto& s : list1) { 
    for (int i : s) { 
     std::cout << i << ' '; 
    } 
    std::cout << std::endl; 
}