C++ Vector.erase()导致分段错误

Fra*_*cis 3 c++ vector segmentation-fault

我有一个C++向量,它有一些空白元素.我想从向量中删除任何空字符串元素.我试过这段代码:

for (i = 0; i < myvector.size();i++) {
  if (myvector[i] == "") {
    myvector.erase(myvector.begin()+i);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到一个分段错误.它有什么问题吗?或者此代码适用于任何人?

Ker*_* SB 8

看来你想要通常的删除 - 删除习语:

#include <algorithm>
#include <functional>

myvector.erase(std::remove_if(myvector.begin(), myvector.end(),
                              std::mem_fn(&std::string::empty)),
               myvector.end());
Run Code Online (Sandbox Code Playgroud)