【发布时间】:2014-11-05 10:23:32
【问题描述】:
如果元素的值与字符串“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");
那么如何以较低的复杂性实现它?
【问题讨论】: