为什么我得到"矢量迭代器+偏移超出范围"错误?

Sva*_*ana 3 c++ vector visual-c++

以下代码导致此错误:

if (bestLine.size() > searchDepth - depth)
    bestLine.erase(bestLine.begin(), bestLine.end() - searchDepth - depth);
Run Code Online (Sandbox Code Playgroud)

当我检查searchDepth - depth错误时的值时,它是0.

基本上,

if (bestLine.size() > 0)
    bestLine.erase(bestLine.begin(), bestLine.end());
Run Code Online (Sandbox Code Playgroud)

导致此错误.(或者不是.请参阅下面的评论.)

据我所知,上面的代码应该擦除整个向量,这是在这种情况下的期望行为.

我究竟做错了什么?

Bla*_*ace 5

尝试在表达式中添加括号:bestLine.end() - (searchDepth - depth).如果简单地从左到右进行评估,结果就会大不相同.