c++-一个简单的C++练习,运行时显示“vector iteration incompatible"。

问题描述

一个简单的C++练习,运行时显示“vector iteration incompatible"。
array ar = { 0 1 1 2 3 5 8 13 21 55 89 };
vector vec(ar.begin() ar.end());
auto it = vec.begin();
while (it != vec.end())
{
if (*it % 2)
vec.erase(it);
else
it++;
}
for (auto i : vec)
cout << i;

解决方案

你每次执行完vec.erase后都要让it指向新的vec
把 vec.erase(it);
改为 it = vec.erase(it);

解决方案二:
你的答案是正确的。《C++ Primer》》这本书上说v.erase(it)会返回被删除元素下一个元素的迭代器,看来是说错了。谢谢。

解决方案三:
你每次执行完vec.erase后都要让it指向新的vec
把 vec.erase(it);
改为 it = vec.erase(it);

解决方案四:
容器在erase以后,迭代器就会失效,所以iter = vec.erase(iter)就可以啦

解决方案五:
书没错,它确实会返回下一个迭代器,同时原来的迭代器会失效。所以你的方法有问题,因为循环会用老的迭代器,而改法就是自己保存新的迭代器。

时间: 2024-09-30 14:48:34

c++-一个简单的C++练习,运行时显示“vector iteration incompatible&amp;quot;。的相关文章

adodc-用ADO控件编的一个简易学生成绩管理器,运行时显示找不到可安装的ISAM,求解决

问题描述 用ADO控件编的一个简易学生成绩管理器,运行时显示找不到可安装的ISAM,求解决 Private Sub Command1_Click() On Err GoTo MyErr If Command1.Caption = "添加" Then Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = &qu

mvc-ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表

问题描述 ASP.NET MVC4在部署IIS后,运行时显示的是整个Web的目录列表 预览网站,只能看到目录是怎么回事? 是我IIS部署有问题,Web组件缺少还是什么问题呢? 急急急,求解答,谢谢了! 好像都不是目录浏览的问题 解决方案 我用的版本是2013 解决方案二: 是因为你开启了目录浏览,在IIS中关掉就可以了!选择你的站点,右侧会出现如图所示的界面

c#和ae问题-c#和AE 查询窗口运行时显示每用户订阅者的SID不存在

问题描述 c#和AE 查询窗口运行时显示每用户订阅者的SID不存在 帮忙解决问题必有重谢,会的请留下联系方式 解决方案 http://blog.csdn.net/u014384926/article/details/46619231 解决方案二: 解决不了,你会吗,这文章我看过没什么用 ,留下联系方式,我给你看下源码

helloworld-编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )

问题描述 编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld ) 编写的java(HelloWorld )程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )4401149_109648.png) 解决方案 你的类名是HelloWorld吗?!不是的话是找不到的哦 解决方案二: 类名是HelloWorld 解决方案三: 应该是 public class HelloWorld{ ... } 解决方案四: 你的命令行输入的是什么?

响应事件-android studio编译无错误,运行时显示,但点击button不响应按键事件

问题描述 android studio编译无错误,运行时显示,但点击button不响应按键事件 原因:自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变.这会导致activity重新加载方法:在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设 置""orientation"",你

mfc-MFC自定义的ICON,添加到对话框不能正常显示,但是运行时显示正常

问题描述 MFC自定义的ICON,添加到对话框不能正常显示,但是运行时显示正常 解决方案 你设置图片的代码可能放在运行时才设置 解决方案二: http://blog.csdn.net/abidepan/article/details/7922402 解决方案三: 这个可能和vs缓存有关,不用管他 另外有可能是你在运行时动态设置的图标

痛哭!!!!为什么一个简单的程序要运行7分钟呢?

问题描述 我想取两个表的交集用宏写了个程序,但运行特别慢.两个表都只有300行.请大家帮忙了!只是两个循环的嵌套没理由这么慢的啊!下面是我的程序.DimxlappAsExcel.ApplicationDimxlbookAsExcel.WorkbookDimxlSheetAsWorksheetsheetname=Sheet1.Names=ActiveWorkbook.PathName=ActiveWorkbook.Namestrlen=Len(Name)p=Right(Name,4)Sheet1.

软件中引用了com组件Acrobat.dll,在本地机调试没有问题,在客户电脑运行时显示错误码0x80040154,说是未注册,怎么解决?

问题描述 错误提示在网上查询的时候,有些回答是软件使用的控件(*.ocx或*.dll)未注册造成的,但是客户的电脑上的确已经安装可Acrobat并且可以用,难道还存在未注册的可能吗?一.如果确实存在这种可能,有什么方法能确定一下他是不是注册了,比如一些cmd或dos命令,还是需要看注册表编辑器里有没有Acrobat?二.如果确定是客户机未注册Acrobat的dll文件造成的问题,怎么注册?我在网上搜的是:regsvr32c:winntsystem32mscomctl.ocx7.0以下:Comct

一个简单的ajax上传进度显示示例

本例用了jquery.form.js请到演示页面查看   CSS Code 复制代码 代码如下: <style> form { display: block; margin: 20px auto; background: #eee; border-radius: 10px; padding: 15px } #progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius