我想要刪除元素,如果它的值與字符串「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