迭代时,C ++列表迭代器永远不会到达end

好的,我编写了一个程序,在使用Visual C ++编译器编译时运行得非常好。 现在我想将它移植到linux上,但是在linux中编译之后会发生一些奇怪的事情。

所以,我正在尝试使用迭代器遍历列表。 这里代码

for (list<IntermediateRepresentation>::iterator irIt = funcIt->second.prologue.begin(); irIt != funcIt->second.prologue.end(); ++irIt) { irIt->address = address; address += getopcodeSize(irIt->opcode); }

现在问题是上面的代码导致无限循环。 我试着在debugging器中看到它为什么这样做,我发现列表的最后一个元素(在'end()'之前)是指向'begin()'迭代器,而不是'end( )'迭代器,所以当我调用'++ irIt'时,它返回到'begin()'。 这是一个预期的行为? 而我发现的另一件事是,当我这样做:

size_t irsize = funcIt->second.prologue.size();

这也会导致无限循环,因为它使用类似于我的循环来计算大小。 那么,不能预期行为是对的吗?

如何使Windows安装程序更新registrystring值(不是多string)中的列表?

命令提示符:文件大小大于1024KB的dir文件

从dynamic数组中find唯一的整数和

用C ++recursion列表文件不会input所有的子目录

Linux查找文件和grep然后按date列出

任何人都可以给我一些提示,问题可能在哪里?

哦,我正在使用Ubuntu 12.10,g ++版本4.7.2,和eclipse IDE以及Linux GCC作为工具链。

谢谢!

在Linux上的Python文件和目录

在窗口大小6中find适合条件的4个值,然后添加到列表直到3不符合条件不包括最后3 – >重复下一个窗口。 python

Linux shell:如何迭代多个文件列表,并在文件中的每一行采取行动?

如何通过将它们与LINUX中的另一个数据文件进行比较来将相同的级别赋予一个ID列表?

问题存储孤立存储中的对象列表

你可能通过拼接创建了一个无效的std :: list 。

例如,使用拼接的第三种变体:

void splice(const_iterator pos,list& other,const_iterator first,const_iterator last);

3)将范围[first,last)的元素从other变成*this 。 这些元素插在pos指向的元素之前。 如果pos是范围[first,last)的迭代器,则行为是不确定的。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....