STL矢量迭代器给出核心转储
STL vector iterator giving core dump
#include<iostream.h>
#include<vector.h>
int main()
{
vector<int> v;
vector<int>::iterator itr=v.begin();
v.insert(itr,10,100);
v.insert(itr,10,100);
}
该程序在包含第二次插入后生成核心转储,无法理解原因,因为itr将在第一次插入时递增。
Insert的返回类型对您有利。要解决您的问题,您只需要使用返回的值重新对itr
进行签名:
vector<int> v;
vector<int>::iterator itr=v.begin();
itr = v.insert(itr,10,100); //new begin
itr = v.insert(itr,10,100); //new begin
另一种解决方案是为矢量保留空间:
vector<int> v;
v.reserve(1000);
vector<int>::iterator itr=v.begin();
v.insert(itr,10,100); //itr not invalidated
v.insert(itr,10,100);
因为向量开始时为空,所以第一个v.insert(itr,10,100);
会增加其大小,从而使任何迭代器无效,所以第二次插入失败,因为迭代器不再有效。
相关文章:
- 如何找出GDB的SIGTRAP核心转储的根本原因
- C++映射分割错误(核心转储)
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 浮点异常(核心转储)#694457
- 分段错误(核心转储)但无法弄清楚
- 链接到libkcapi时没有核心转储
- 分段错误(核心转储) - 使用 SavedModel 的 Tensorflow C++ API 进行推断
- 在基数排序中,我得到 munmap_chunk():无效指针和中止(核心转储).为什么?
- C++指针无法在函数外部传递值和分段错误(核心转储)错误
- 合并排序:分段错误核心转储
- C++:分段错误(核心转储)
- 从 pybind11 构建导入模块时出现"分段错误(核心转储)"
- 如何使用 lldb 在曼扎罗中调试 lz4 文件格式的核心转储?
- qt C++命令行代码中的分段错误(核心转储)
- 从文件中读取的数据,但发生核心转储错误
- googletest:测试基类具有纯虚拟方法的派生类时的核心转储
- C++ atof - 分段错误(核心转储)
- Linux C 只禁止我的程序使用核心转储
- 为什么我的代码包含错误分段错误(核心转储)?