c++ - 捕捉向量.erase()
问题描述
当我尝试从向量中删除元素并捕获它时,程序以 code 停止-1073741819
。这是我的代码:
try {
vec.erase(it); //it is invalid iterator
} catch (...) {
cout << "caught"
}
我没有看到被控制台捕获。有什么方法可以捕获异常vector.erase()
以及为什么我的代码不起作用?
解决方案
试图从 a 中擦除无效迭代器的行为std::vector
是未定义的。
假设在这种情况下抛出异常(因此可以捕获)是一种常见的误解。
推荐阅读
- python - Python 类,为什么要在 getter 中返回 obj 的副本?
- mongodb - 为一本书选择不同的作者
- javascript - React 组件库:意外的标识符“模板”。期望 '}' 结束一个对象字面量
- sql - ORA-00933: SQL 命令未正确结束 - 我到底做错了什么?
- python-3.x - 谁能解决这个python问题?
- android - Firebase 实时数据库是否保证请求的顺序?
- python - 通过猫鼬提取数据
- image - 有没有办法在后台运行虚拟机,而应用程序在 VM 中运行,需要光标?
- javascript - 运行一堆承诺,但等待下一个被执行,直到先例解决
- c# - c#: 使用 bool = !bool 出现奇怪的模式