如何在c+中访问列表中的列表+;? P>好的,所以我开始学习C语言,现在我正在学习C++,所以我对它有点陌生。 在C#中,当我想访问列表中的列表时,我只需使用嵌套for each循环 既然C++中不知道如何使用每个循环,我尝试访问带有循环的嵌套列表。

如何在c+中访问列表中的列表+;? P>好的,所以我开始学习C语言,现在我正在学习C++,所以我对它有点陌生。 在C#中,当我想访问列表中的列表时,我只需使用嵌套for each循环 既然C++中不知道如何使用每个循环,我尝试访问带有循环的嵌套列表。,c++,C++,这是我的密码: int main { list<list<char *> > moves; list<char *> pointers; list<list<char> > undoValues; list<char> undoValue; for(list<list<char *> >::iterator outer=moves.begi

这是我的密码:

int main

{      
    list<list<char *> > moves; 

    list<char *> pointers;

    list<list<char> > undoValues;
    list<char> undoValue;

    for(list<list<char *> >::iterator outer=moves.begin();outer!=moves.end();outer++)
    {
        for(list<char *>::iterator inner=outer.begin();inner!=outer.end();inner++)
        {

        }
    }
}
int main
{      
列出动作;
列表指针;
列出未记录的值;
列出价值;
for(list::iterator outer=moves.begin();outer!=moves.end();outer++)
{
for(list::iterator internal=outer.begin();internal!=outer.end();internal++)
{
}
}
}
我有两个错误:

error 'struct std::_List_iterator<std::list<char*>,std::allocator<char *> > >' has no member named begin

error 'struct std::_List_iterator<std::list<char*>,std::allocator<char *> > >' has no member named end
错误“struct std::_List_iterator>”没有名为begin的成员
错误“struct std::_List_iterator>”没有名为end的成员
如何访问嵌套列表?

您需要使用(*outer)来获取迭代器指向的内容:

list<char *> pointers;

list<list<char> > undoValues;
list<char> undoValue;
for(list<list<char *> >::iterator outer=moves.begin();outer!=moves.end();outer++)
{
    for(list<char *>::iterator inner=(*outer).begin();inner!=(*outer).end();inner++)
    {

    }
}
列表指针;
列出未记录的值;
列出价值;
for(list::iterator outer=moves.begin();outer!=moves.end();outer++)
{
对于(列表::迭代器内部=(*外部).begin();内部!=(*外部).end();内部++)
{
}
}
您需要使用(*outer)来获取迭代器指向的内容:

list<char *> pointers;

list<list<char> > undoValues;
list<char> undoValue;
for(list<list<char *> >::iterator outer=moves.begin();outer!=moves.end();outer++)
{
    for(list<char *>::iterator inner=(*outer).begin();inner!=(*outer).end();inner++)
    {

    }
}
列表指针;
列出未记录的值;
列出价值;
for(list::iterator outer=moves.begin();outer!=moves.end();outer++)
{
对于(列表::迭代器内部=(*外部).begin();内部!=(*外部).end();内部++)
{
}
}
for(list::iterator outer=moves.begin();outer!=moves.end();outer++)
对于(列表::迭代器内部=外部->开始();内部!=外部->结束();内部++)
for(list::iterator outer=moves.begin();outer!=moves.end();outer++)
对于(列表::迭代器内部=外部->开始();内部!=外部->结束();内部++)

您需要取消对迭代器的引用以访问元素。您可以使用
*
->

for(list<char *>::iterator inner=outer->begin();inner!=outer->end();inner++)
for(列表::迭代器内部=外部->开始();内部!=外部->结束();内部++)

for(list::iterator internal=(*outer).begin();internal!=(*outer.end();internal++)

您需要取消对迭代器的引用以访问元素。您可以使用
*
->

for(list<char *>::iterator inner=outer->begin();inner!=outer->end();inner++)
for(列表::迭代器内部=外部->开始();内部!=外部->结束();内部++)

for(list::iterator internal=(*outer).begin();internal!=(*outer.end();internal++)

要访问迭代器引用的对象的成员,需要间接寻址;因此
outer
列表的
begin()
成员是
outer->begin()
,而不是
outer.begin()
。同样地,对于
end()
要访问迭代器引用的对象的成员,您需要间接寻址;因此
outer
列表的
begin()
成员是
outer->begin()
,而不是
outer.begin()
。同样,对于
end()