(原)使用vectot的.end()报错:iterators incompatible

转载请注明出处:

http://www.cnblogs.com/darkknightzh/p/5070672.html

参考网址:

http://blog.csdn.net/yxnyxnyxnyxnyxn/article/details/17610899

之前用vector一直没有问题,前几天遍历时,

for (auto it = var.sta.begin(); it != var.sta.end();)

运行时直接报:iterators incompatible

网上搜了一下,很多是说使用erase之类的时候的问题,但是自己的程序还没有跑到那里去。。。后来在上面参考网址里面看到那哥们检查到的原因,在程序初始化时,用了ZeroMemory,回想自己是类似的。在程序中有如下简化的代码:

 1 struct a
 2 {
 3     int a1;
 4     char a2[64];
 5 };
 6 struct example
 7 {
 8     int ina;
 9     vector<a> sta;
10 };
11
12 void temp()
13 {
14     example var;
15     memset(&var, 0, sizeof(example));
16
17     // ... some code
18
19     for (auto it = var.sta.begin(); it != var.sta.end();)
20     {
21         // ... other code
22     }
23 }

崩溃的位置是:

for (auto it = var.sta.begin(); it != var.sta.end();)

这行。主要原因就是

memset(&var, 0, sizeof(example));

这句。去掉这句之后,程序就没有崩溃了。

参考网页中说的很详细,使用memset将_Myproxy清零了。去掉memset后就可以了。

当然,可能该问题还有其他多种原因,这里只是我目前碰到的原因。

时间: 2024-10-17 18:45:42

(原)使用vectot的.end()报错:iterators incompatible的相关文章

【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决

现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig 解决: 把tomcat目录下的lib/servlet-api.jar文件拷贝到$JAVA_HOME/jre/lib/ext目录下,再启动tomcat问题解决

is incompatible with i386:x86-64 output报错

在[一个操作系统的实现]书中,第五章,开始编译elf文件格式的操作系统内核. 将hello.asm编译为hello.o,再编译为可执行文件 编译hello.o时,nasm报错is incompatible with i386:x86-64 output. 原因是原实验是在32位操作系统下做的,使用的库也是32位的,而现在使用的64位操作系统. 解决方法: 修改上述两步编译的写法: nasm -f elf64 -g -F stabs sandbox.asm -o sandbox.o ld -o s

xcode上编译c语言程序报错:ld: x duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

在网上查了一下: duplicate symbol的大概意思是,编译器认为你重复定义了一些东西. linker command failed with exit code 1,则可能是项目引入了多个相同的文件. 结合本人开发中发现此类的问题,解决办法如下: 方法1:查看有问题的文件是否有重复引用.或头文件是否加载了.m 方法2:将有问题的文件删除,重新加载进去.然后:clean->build. 在开发中解决RegexKitlLite的类似问题办法: _rkl_NSExceptionForRege

【原】iOS 同时重写setter和getter时候报错:Use of undeclared identifier &#39;_name&#39;;did you mean &#39;name&#39;

写了那么多的代码了,平时也没有怎么注意会报这个错误,因为平时都很少同时重写setter和getter方法,一般的话,我们大概都是使用懒加载方法,然后重写getter方法,做一个非空判断.然后有时候根据需求,要同时重写属性的setter和getter方法.系统就会报错误::Use of undeclared identifier '_name';did you mean 'name' MARK:如果不想了解太多,直接的解决方法: 在@implementation 实现中添加一行代码就OK了 @sy

关于list iterators incompatible/vector iterators incompatible 报错总结

STL有三大核心部分:容器(Container).算法(Algorithms).迭代器(Iterator),容器适配器(container adaptor),函数对象(functor),除此之外还有STL其他标准组件,如果你使用容器不当,就会发生list  iterators  incompatible/vector iterators  incompatible 的错误,报错如图: 如果你trace代码,你可以看到如下代码: bool operator==(const _Myiter& _Ri

Maven打包项目的时候报找不到符号异常,打包之前是好的,打包报错之后原项目编译也出问题。

近开发一个和oracle spatial相关的一个项目,中间添加了三个本地依赖. 在pom中添加三个依赖 <!-- oracle --> <dependency> <groupId>oracle</groupId> <artifactId>sdoapi</artifactId> <version>1.0</version> <scope>system</scope> <system

使用相同原系统名新建DDC加入原有站点报错

首先,还是老规矩沐浴更衣,接到的错误是个关于数据库的,看似稳如老狗,实则慌得一笔,不废话了,直接进入主题.故障描述使用相同原系统名新建DDC加入原有站点报错,故障分析报错提示,无法更新数据库,数据库已经存在[Domain][Server]$,原因可能是使用的新ddc服务器使用了原来的计算名,数据库已经存在该记录.故障解决 进入数据库服务器,完整备份站点数据库. 查询数据库中关于该计算机名的记录,新建查询 select SID from sys.database_principals where

原!tomcat启动超时(打印了几行日志,后面没了。也不报错,处于启动状态,直到超时)

项目框架:spring+struts2+mybatis 今天优化代码,改了一堆mybatis dao和xml文件,启动项目时,就出现如标题描述的状况:打印了几行日志,后面就不打印了,也不报错,处于启动状态,直到超时. 首先检查是不是tomcat有问题,发现tomcat没有问题,后来感觉应该是项目代码问题,百度了一圈,发现也有碰到这种问题的  在mybatis的Mapper配置文件里配置了两个同名的ID,但是它们参数不同,结果就出现了部署时tomcat启动不了,改了启动时间也不行. 后来看了dao

Spring AOP schema找不到报错 原

转自:https://my.oschina.net/zetaplusae/blog/144821 使用jersey+spring构建RESTful服务,并将应用部署在不能连接外网的服务器上.部署时,报错信息如下, WARNING: Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springfra