我想要删除元素,如果它的值与字符串“empty”匹配,那么迭代完整的循环,但它不以这种方式工作。从矢量范围中删除特定元素
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
std::vector<std::string> myvector;
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("value");
myvector.push_back("value");
myvector.push_back("empty");
myvector.push_back("empty");
int index = 0;
for(string input: myvector){
if(input == "empty")
myvector.erase(myvector.begin()+index,myvector.begin()+index);
index++;
}
for(string input: myvector){
cout << input << endl;
}
return 0;
}
但我们可以看到没有东西被删除?
输出继电器:
value
value
empty
value
value
empty
empty
寻找类似下面,但不存在
myvector.erase(myvector.begin(),myvector.end(),"empty");
所以如何实现在更复杂?
看[删除,删除成语(http://en.wikipedia.org/wiki/Erase-remove_idiom) – Jarod42 2014-11-05 10:45:50