我正在尝试打印出一组集合,但我对语法感到困惑。我希望每一套都在新的一条线上。这是我的代码:
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 :(得分: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
答案 1 :(得分:1)
operator <<
没有std::set
的重载,你必须自己编写循环(并可能为此创建一个函数)
对于范围,您可以这样做:
for (const auto& s : list1) {
for (int i : s) {
std::cout << i << ' ';
}
std::cout << std::endl;
}