首页 > 解决方案 > 捕捉向量.erase()

问题描述

当我尝试从向量中删除元素并捕获它时,程序以 code 停止-1073741819。这是我的代码:

try {
    vec.erase(it); //it is invalid iterator 
} catch (...) {
    cout << "caught"
}

我没有看到控制台捕获。有什么方法可以捕获异常vector.erase()以及为什么我的代码不起作用?

标签: c++vectoriterator

解决方案


试图从 a 中擦除无效迭代器的行为std::vector未定义的。

假设在这种情况下抛出异常(因此可以捕获)是一种常见的误解。


推荐阅读