我遇到了在 C++ 中按值删除元素的问题的答案:
C++ Erase vector element by value rather than by position?
基本上:
vec.erase(std::remove(vec.begin(), vec.end(), valueToRemove), vec.end());
这个答案有道理,但是这样不是很糟糕吗?逻辑由双重否定组成......有没有更干净的方法来做到这一点?
最佳答案
从集合中删除一个元素包括两个步骤:
- 向下移动所有后续元素以填充匹配产生的空洞
- 标记新的结束
对于 C++ 标准库,它们是两个独立的函数,分别是 remove
和 erase
。
当然可以想象 erase_if
类型的函数会更容易使用,但显然当前代码被认为已经足够好了。当然,您可以编写自己的 remove_if
。
关于c++ - 在 C++ 中按值删除元素 - 首选成语真的由双重否定组成吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310421/