list里面有list的问题
三个结构
typedef struct
{
char a[32];
}A;
typedef struct
{
char b[32];
list <A> la;
}B;
typedef struct
{
char c[32];
list <B> lb;
}C;
main()
{
A a;
B b;
C c;
list <C> lc;
strcpy(a.a, "a ");
b.la.push_back(a);
strcpy(b.b, "b ");
c.lb.push_back(b);
strcpy(c.c, "c ");
lc.push_back(c);
list <C> ::iterator ic;
for(ic = c.begin(); ic != c.end(); ++ic)
{
cout < < ((C)(*ic)).c < < endl;
list <B> ::iterator ib;
cout < < ((b)*((a)*ia).lb.begin()).b < < endl; //这行可以输出b
//这样也出错
ib = ((C)(*ia)).lb.begin();
cout < < ((B)(*ib)).b < < endl;
for(ib = ((C)(*ic)).lb.begin(); ib != ((C)(*ic)).lb.end(); ++ib)
{
cout < < ((B)(*ib)).b < < endl; //这行出错,得到的ib不对
//......下面的A就不写了
}
}
}
为什么会这样呢?还是我用错了?
[解决办法]
帮你改了下:
list <C> ::iterator ic;
for(ic = lc.begin(); ic != lc.end(); ++ic)
{
cout < < ((*ic)).c < < endl;
list <B> ::iterator ib;
list <A> ::iterator ia;
cout < < (*(c.lb.begin())).b < < endl; //这行可以输出b
//这样也出错
ib = ((*ic)).lb.begin();
cout < < ((*ib)).b < < endl;
for(ib = ((*ic)).lb.begin(); ib != ((*ic)).lb.end(); ++ib)
{
cout < < ((*ib)).b < < endl; //这行出错,得到的ib不对
//......下面的A就不写了
}
}
system( "pause ");
return 0;
}
主要问题是不要在iterator前加上(type),你对照着改吧