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");
我發現這個例子:
但是否有任何更簡單的方法?例如使用boost框架?
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");
我發現這個例子:
但是否有任何更簡單的方法?例如使用boost框架?
有一個完美的罰款Erase-remove idiom:
#include <algorithm>
strs.erase(std::remove(strs.begin(), strs.end(), std::string("3")), strs.end());
我想你想要'3'附近的引號,如果它是一個字符串... –
@MatsPetersson謝謝,我以爲我看到了在某處的插入矢量... – jrok
謝謝,我的錯誤是我用remove_if而不是刪除。通常預定義的「刪除」功能/方法意味着刪除一個具體的範圍,而不是一個具體的值 – user2083364
斯科特邁爾斯有關Erase-remove idiom會談,他有效STL: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());
我確定有一些現有[算法](http://en.cppreference.com/w/cpp/algorithm)[刪除](http:// en.cppreference.com/w/cpp/algorithm/remove)集合中的值。 –
['std :: remove'](http://en.cppreference.com/w/cpp/algorithm/remove)。具體來說,請看例子。 – BoBTFish