我有两个向量vc
和v2
,我想从vc
中删除所有包含在v2
中的元素。我试图通过两个嵌套循环来实现这一目标。然而,编译器报错:Debug Assertion Failed
。我想问一下,为什么会这样,我该如何解决这个问题?谢谢!
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector <string> vc;
vector <string> v2;
int main()
{
vc.push_back("ala");
vc.push_back("bala");
vc.push_back("test");
vc.push_back("sample");
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
v2.push_back("test");
v2.push_back("bala");
for (auto i = vc.begin(); i != vc.end(); i++) {
for (auto j = v2.begin(); j != v2.end(); j++) {
if (i == j) {
vc.erase(i);
}
}
}
//it should print only ala and sample after the removal process, but it gives
//debug assertion error
for (int i = 0; i < vc.size(); i++) {
cout << vc[i] << endl;
}
}
vc.erase(i)
使得该点之后的所有迭代器无效。 - Qubit