我有一个 C++ vector ,其中有一些空白元素。我想从 vector 中删除任何空字符串元素。我试过这个代码:

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

当我运行此代码时,出现段错误。有什么问题吗?或者这段代码对你们中的任何人都有效?

最佳答案

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

#include <algorithm>
#include <functional>

myvector.erase(std::remove_if(myvector.begin(), myvector.end(),
                              std::mem_fn(&std::string::empty)),
               myvector.end());

关于C++ Vector.erase() 导致段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24600301/

10-11 23:18