C++ 错误:分配给'_列表迭代器<;无符号整数,无符号整数&;,无符号整数*>';从';int';
我正在尝试实现一个存储相关索引的列表。 但是,我在标题中提到的(index\u itr=(list\u size-numberOfEvents-1)中得到了一个错误。我犯了什么错误,以及如何纠正它C++ 错误:分配给'_列表迭代器<;无符号整数,无符号整数&;,无符号整数*>';从';int';,c++,list,logging,stl,iterator,C++,List,Logging,Stl,Iterator,我正在尝试实现一个存储相关索引的列表。 但是,我在标题中提到的(index\u itr=(list\u size-numberOfEvents-1)中得到了一个错误。我犯了什么错误,以及如何纠正它 void logPrintEntry(UINT32 index, UINT32 portID, UINT16 numberOfEvents) { LOG_ENTRY log; list <UINT32> list_telnet_indices; log = (pLO
void logPrintEntry(UINT32 index, UINT32 portID, UINT16 numberOfEvents)
{
LOG_ENTRY log;
list <UINT32> list_telnet_indices;
log = (pLOG_ENTRY) &(Data.Log.log[index]);
list <UINT32> ::iterator index_itr;
UINT16 list_size = list_telnet_indices.size();
if( list_size <= numberOfEvents )
{
// print all logs
for ( index_itr = list_telnet_indices.begin();
index_itr != list_telnet_indices.end(); ++index_itr )
{
printDataOnly(log, *index_itr, portID);
}
}
else
{
// print only the last relevant entries
for (index_itr = (list_size - numberOfEvents - 1); //error: assignment to '_List_iterator<unsigned int,unsigned int &,unsigned int *>' from 'int'
index_itr != list_telnet_indices.end(); ++index_itr)
{
printDataOnly(log, *index_itr, portID);
}
}
}
void logPrintEntry(UINT32索引、UINT32端口、UINT16 numberOfEvents)
{
日志输入日志;
列出telnet索引;
log=(pLOG_条目)和(Data.log.log[index]);
列表::迭代器索引\u itr;
UINT16 list_size=list_telnet_index.size();
如果(list_sizeindex_itr
是一个迭代器,list_size-numberOfEvents-1
是一个整数。这些是不兼容的
用于设置std::list
#include <iterator> // std::advance
index_itr = list_telnet_indices.begin();
std::advance(index_itr, list_size - numberOfEvents - 1);
for (; index_itr != list_telnet_indices.end(); ++index_itr)
{
...
}
#包括//std::advance
index_itr=list_telnet_index.begin();
std::advance(索引itr,列表大小-事件数-1);
对于(;index_itr!=list_telnet_index.end();++index_itr)
{
...
}
我已经自由地合并了我们的两个答案。你给出了一个合适的解决方案,我解释了错误。我认为这个答案会得到更多的关注。