错误:从'int'分配给'_List_iterator<unsigned int,unsigned int &,unsigned int *>'
Error: assignment to '_List_iterator<unsigned int,unsigned int &,unsigned int *>' from 'int'
我正在尝试实现一个存储相关索引的列表。然而,我在标题中提到的for (index_itr = (list_size - numberOfEvents - 1)
中遇到了一个错误。我犯了什么错误,如何改正?
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);
}
}
}
index_itr
是迭代器,list_size - numberOfEvents - 1
是整数。这些不兼容。
使用std::advance
设置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)
{
...
}
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 定义 uint= "unsigned int" 没有像我在 Visual Studio 中使用 nvcc 时预期的那样应用
- 对 '(const Y) (int&, std::mersenne_twister_engine<long unsigned int,
- 错误:'class std::unique_ptr<std::set<long unsigned int> >'没有名为 'size' 的成员
- 正确语法,用于统一初始化名称中带有空格的类型的临时,如unsigned int
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 按值对 std::unordered_map<std:::string, std::atomic<unsigned int>> 进行排序
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- memcpy unsigned char to int
- 没有匹配函数来调用"std::basic_ofstream<char>::write(std::string*, long long unsigned int)"
- 初始化unsigned int至0
- 为什么"unsigned int" + "unsigned int"返回"unsigned int"?
- C++模板比 int->unsigned 转换更好?
- 错误:从'int'分配给'_List_iterator<unsigned int,unsigned int &,unsigned int *>'
- 请求在"num"中请求成员"push_back",其非类类型为"int[((unsigned int)((int)n))]"