打印列表的列表C++ STL列表
我有一个存储内部列表的顶部列表。我正在使用标准模板库列表模板。打印列表的列表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;
,而不是你使用的是一个以避免编译错误。
内循环没有意义。
如果你想使用迭代器则函数可以像
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;
}
}
被定义然而,它会更简单,以使用基于范围的for循环。例如
void ListofLists::dump() /* const */
{
for (const auto &inner_list : L)
{
for (const auto &item : inner_list)
{
cout << item << " ";
}
cout << endl << "End" << endl;
}
}
考虑到,你必须定义operator <<
该类IntObj
帐户。 它的声明应该看起来像
std::ostream & operator <<(std::ostream &, const IntObj &);
我可以在IntObj类之外为IntObj定义ostream运算符吗?我无法编辑IntObj文件。谢谢弗拉德。 –
@AliciaSabatino你可以在类中定义它,在这种情况下,将使用ADL查找。如果运营商直接访问该类别的私人数据成员,则必须将该运营商声明为朋友。 –
好的。所以说这个值存储在IntObj中的m_data中......我会在重载函数中写入cout
它试图打印一个'IntObj'你有没有添加到代码来做到这一点? –
你说你有一个存储列表的列表,但这不是你所拥有的列表。您有两个不相关的列表,您出于某种原因尝试使用嵌套循环输出。另外,请澄清“我的IDE不喜欢”并创建[mcve]谢谢。 – Rakete1111
我不喜欢菠菜,你的IDE不喜欢你的代码行。这就是我们都有我们的怪癖。 –