繁体   English   中英

在运行时C ++中将元素插入向量。抛出运行时错误

Insert an element to a vector at run time C++.Throwing Runtime Error

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想在运行时将一些元素插入向量中。 我来啦。

目的是打印"Hello Hi I am Rasmi"

int main()
{
vector<string>vect;
vect.push_back("Hello");
vect.push_back("Hi");
vect.push_back("Rasmi");
for(vect<string>::iterator it = vect.begin(); it != vect.end(); ++it)
{
 if(*it == "Rasmi") // If it encounters "Rasmi"
    { it--;
         vect.insert(vect.begin()+2, "I am");
    }
   cout << *it;
}
}

但是它抛出运行时错误。

3 个回复
vect.insert(vect.begin()+2, "I am");
 }
cout << *it;

更改拥有的容器后,迭代器将失效-即itinsertpush_back后不能使用it

添加元素后,可能需要自动调整向量的大小并重新分配,如果发生这种情况,则迭代器将不再有效。

尽管我真的不知道为什么需要这样做,但是有一个安全的解决方法。 您可以存储迭代器的当前索引,将新元素插入向量中,然后重新分配迭代器以引用潜在的新内存地址。 我已经在此处包含执行此操作的代码。

if(*it == "Rasmi") // If it encounters "Rasmi"
{
    it--;
    int index = it - vect.begin (); // store index of where we are
    vect.insert(vect.begin()+2, "I am");
    it = vect.begin () + index; // vect.begin () now refers to "new" begin
    // we set it to be equal to where we would want it to be
}
cout << *it;

一旦std :: vector :: insert()的重载之一具有签名的迭代器插入(迭代器位置,const T&x),您可以按以下方式重写代码

for(vect<string>::iterator it = vect.begin(); it != vect.end();)
{

    if(*it == "Rasmi") // If it encounters "Rasmi"
    { 
        it = vect.insert(it, "I am");          
        cout << *it; 
        ++it;
    }
    cout << *it;

    ++it;
}
1 抛出运行时错误

我是编程新手,我开始编程:使用C ++的原理和实践。 在其中一章中,它讨论了错误以及如何处理错误。 我正在尝试实现的代码段。 在这本书中,它指出error()将以系统错误消息以及我们作为参数传递的字符串终止程序。 我收到的消息是“在测试project.exe中,在0x7699c ...

2 C++ 自定义排序一个 2d 向量抛出运行时错误。 我该如何解决?

我试图根据特定字符的字符数与其余字符的字符数之间的差异对 2D 向量进行排序。 它适用于大多数测试用例,但对于这个特定的测试用例似乎失败了。 经过一些调试,我发现以下测试用例的 ch='d' 和 ch='e' 时出现运行时错误。 我无法弄清楚这里到底发生了什么。 问题链接:- https:// ...

3 C ++将元素插入向量

我正在尝试使用存储每个元素的向量来构建优先级队列。 首先,我想将元素以优先级插入向量中。 我不确定是否可以,如果不能,有人可以给我另一种解决方案。 这是我的代码: ...

4 Microsoft Visual C ++运行时库:运行时错误

运行python程序时遇到问题,错误提示粘贴在下面。 我在代码中使用了matplotlib.pyplot库来实现实时拓扑图。 该程序可以成功运行,但是每当我拖动绘图窗口时,错误就会跳出。 我不知道该如何解决。 请给我一些提示,谢谢和问候! 错误说: 代码: ...

5 如果嵌入式文档的插入中存在元素,则抛出错误

我想更新嵌入式文档,如果具有相同参数的元素已经存在且查询次数尽可能少,则会引发错误。 我尝试了以下。 : 文献: 但是,我宁愿以.NE断言的行的样式执行某项操作,或者使用该元素断言该元素不存在并发出某种错误/警告 。 不知道如何在不首先尝试找到该元素并抛出错误(如果存在 ...

7 为什么程序不引发运行时错误?

该程序将填充一个向量,使其超出最后一个索引(第二行)。 我本来希望抛出运行时错误。 但是我得到的结果是1, 1, 1, 8, 7, 7, 7, 有人可以解释为什么会这样吗? 我尝试使用-Wall , -Wextra和-Wpedantic等不同的标志,但结果保持不变。 ...

8 将元素插入2D向量C ++

我正在尝试将元素插入此2D向量变量中,但是我不确定如何使用这种奇怪的向量类型来完成此操作 我要插入的位置带有注释。 我希望i值进入对的整数部分,而phi值进入双精度部分 ...

10 gulp任务在第二次运行时引发错误

我有两个文件夹,两个文件夹都包含一些html模板文件。 我需要将这些文件缩小到单独的文件夹。 文件夹结构 所需的目标文件夹 以下是我的gulpfile,其中我已为 当我运行gulp命令时,它第一次可以正常运行,但是在其他运行中会引发错误。 第一次运行gulp命令 ...

2019-02-05 08:09:34 1 26   gulp
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM