C++ 访问c+中列表中的列表+;

C++ 访问c+中列表中的列表+;,c++,C++,我试图在列表中创建一个列表,现在我在尝试访问数据包列表中的数据包元素时遇到了问题,而数据包列表中也包含了数据包元素。(数据包是一个类btw) 列表>poemContainer;(大名单) 列表包列表;(包含在较大的列表中) 我想做一些类似于poemContainer->packetList->elementOfListContained(访问第一个数据包,然后从数据包类中获取所需的数据) 试图执行下面的操作,但编译器说列表中没有成员it2 for (list<list<packet&

我试图在列表中创建一个列表,现在我在尝试访问数据包列表中的数据包元素时遇到了问题,而数据包列表中也包含了数据包元素。(数据包是一个类btw)

列表>poemContainer;(大名单) 列表包列表;(包含在较大的列表中)

我想做一些类似于poemContainer->packetList->elementOfListContained(访问第一个数据包,然后从数据包类中获取所需的数据)

试图执行下面的操作,但编译器说列表中没有成员it2

for (list<list<packet>>::iterator it = poemContainer.begin(); it != poemContainer.end(); ++it) {
        for(list<packet>::iterator it2 = packetList.begin(); it2 != packetList.end(); ++it2) {
                if (!(strcmp(it.it2.sourceAddress, packetDetails->sourceAddress))) {// unnecessary loop just
                    it2.push_back(packetDetails); //compare directly to the begin
                    break;
                }
                else {
                    list<packet> newPoemFound;
                    newPoemFound.push_back(packetDetails);
                    poemContainer.push_back(newPoemFound);
                    break;
                }
        }
}

第一个错误在这一行

it.it2.sourceAddress
基本上迭代器类型(
it
)没有名为it2的成员

我猜应该是这样

另一个错误在这一行:

it2.push_back(packetDetails);
为了使其再次工作,您需要首先取消引用迭代器:

要么:

应该有用

话虽如此,但很难看出你想做什么。此外,您还可以使用基于范围的for循环简化很多操作:

for (auto& poem : poemContainer) {
        for(auto& packet : packetList) {
                //bla bla bla

你能告诉我们
poemContainer
packetList
变量所包含的内容吗?正如你所知,不需要()循环,如果您每次都要在第一次迭代时中断。
it
显然没有
it2
属性,因为它们被您单独声明为不同列表的迭代器。如果您使用的是
C++1x
,循环范围应该会大大简化此代码。@MD.TabishMahfuz抱歉,我只是刚刚起步,所以根据我的理解,我不太确定。我试图在第一个循环中访问包含数据包列表的poemContainer中的内容,现在我试图访问第一个数据包,以便从中获取一些内容进行比较。“我知道获得一个新循环是没有意义的,但我不太确定如何访问外部列表中的列表仍然不适合我,”他说,该列表没有名为sourceAddress的成员。就像我说的,我有一个在列表中的列表。首先,我知道我有一个名为poem容器的列表,我需要访问poem容器中的数据包列表,然后访问数据包列表中数据包的类成员。谢谢
it2.push_back(packetDetails);
it2->push_back(packetDetails);
(*it2).push_back(packetDetails);
for (auto& poem : poemContainer) {
        for(auto& packet : packetList) {
                //bla bla bla