gpt4 book ai didi

c++:嵌套列表:如何将项目添加到列表列表

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:02 26 4
gpt4 key购买 nike

我是董事会的新成员。我正在使用 MS VS2008。我正在学习列表列表。我正在尝试将元素添加到作为列表列表一部分的列表中。

我已经在我的程序中指出了我遇到问题的地方。当我调试它时,“beth”被添加到第二个列表(division2),但是当循环退出时,“beth”不在第二个列表中,即使我已经在嵌套循环之外声明了我的所有列表。

如有任何帮助,我们将不胜感激。

代码如下:

struct item
{
string name;
int age;
};
int main()
{
list<item> division1;
list<item> division2;

list< list<item> >WholeCompany;

item s;
s.name="sandra"; s.age=43; division1.push_back(s);
s.name="Marc"; s.age=19; division2.push_back(s);
s.name="betty"; s.age=34;division2.push_back(s);

WholeCompany.push_back(division1);
WholeCompany.push_back(division2);

list< list<item> >::iterator WholCompIter;
list<item>::iterator itemIter;

for ( WholCompIter = WholeCompany.begin(); WholCompIter != WholeCompany.end(); WholCompIter++ )
{
//incorrect
//list<item> listEntry = *WholCompIter;
//instead use:
list<item> listEntry = *WholCompIter;

for ( itemIter = listEntry.begin(); itemIter != listEntry.end(); itemIter++ )
{
//MY ISSUE IS RIGHT HERE! How can I add the value to the list, but the list forgets it when it exit loop
if(itemIter->name =="betty")
{
item s; s.name="beth"; s.age=65;
listEntry.insert(itemIter,s);//problem is here.
//I have also tried
//listEntry.push_back(s) but the output doesn't show it

}
}
}
//incorrect.
//for(list<item>::iterator i=division2.begin(); i!=division2.end();++i)
// cout<<i->name<<" "<<i->age<<endl;
//instead use:
for ( WholCompIter = WholeCompany.begin(); WholCompIter != WholeCompany.end(); WholCompIter++ )
{
list<item>listEntry = *WholCompIter;

for ( itemIter = listEntry.begin(); itemIter != listEntry.end(); itemIter++ )
{
cout<<itemIter->name<<" "<<itemIter->age<<endl;

}
cout<<endl; cout<<endl;
}
return 0;
}

最佳答案

您只是在此处创建一个拷贝:

list<item> listEntry = *WholCompIter;

相反,您需要一个引用:

list<item>& listEntry = *WholCompIter;

此外,您在底部的循环中从 division2 打印。请记住,WholeCompany 在初始化时只是 division2 的拷贝。由于您已经通过上面的引用修改了 WholeCompany,因此您需要在底部的输出循环中访问 WholeCompany

关于c++:嵌套列表:如何将项目添加到列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com