c ++,stl。从vector <string>?</string>中删除具体值

时间:2013-08-30 12:57:15

标签: c++ string vector stl std

例如:

vector<string> strs;
strs.push_back("1");
strs.push_back("2");
strs.push_back("3");
strs.push_back("4");
strs.push_back("3");

//strs.removeAllOccurencesOfValue("3");

我找到了这个例子:

link

但是有更简单的方法吗?例如使用boost框架?

2 个答案:

答案 0 :(得分:4)

有一个非常好的Erase-remove idiom

#include <algorithm>

strs.erase( std::remove(strs.begin(), strs.end(), std::string("3")), strs.end() );

答案 1 :(得分:1)

Scott Meyers 在他的有效STL中提到Erase-remove idiom:提高标准模板库使用的50种具体方法。这对你的案子来说似乎很完美:

#include <algorithm>    // for std::remove

vector<string> strs;
strs.push_back("1");
strs.push_back("2");
strs.push_back("3");
strs.push_back("4");
strs.push_back("3");

strs.erase( std::remove( strs.begin(), strs.end(), "3" ), strs.end() );