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