std::remove_if和std::remove用法总结
函数原型:
- remove(first, last, val) 删除first到last之间所有值为val的元素
- remove_if(first, last, pred) 从first到last中将满足条件pred的元素删除
remove本身时std::list的成员函数可以直接使用,对于std::vector它不是成员函数需要借助erase来使用。
std::vector<char> str_ {'P', 'A', 'J', 'D', 'F'};//简单来说就是把'P'移到最后然后通过erase删除 str_.erase(remove(str_.begin(), str_.end(), 'P'), str_.end()); str_.erase(remove_if(str_.begin(), str_.end(), [](char c) {return c == 'A'; }), str_.end()); for (auto &i : str_) { std::cout << i << std::endl; }
【输出】J D F