首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

list里面有list的有关问题

2012-02-22 
list里面有list的问题三个结构typedefstruct{chara[32]}Atypedefstruct{charb[32]list Ala}Btypede

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

热点排行
Bad Request.