读书人

list里面有list的有关问题

发布时间: 2012-02-22 19:36:55 作者: rapoo

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),你对照着改吧

读书人网 >C++

热点推荐