在网上找资料的时候看到一种删除list中元素的方法,如下
std::list<Subscriber*> subscribers_;
subscribers_.erase(std::remove(subscribers_.begin(),subscribers_.end(), &subscriber),
subscribers_.end());
其实对于list,完全可以用list::remove函数直接移除元素,效果是一样的。
但是对于没有remove函数的STL容器来说,例如vector,就可以用该方法移除元素了。
要注意的是std::remove方法并不删除在数组最后的元素,而是返回一个新的数组的结尾位置,所以还要调用erase方法删除新的结尾位置和旧的结尾位置之间的元素。
本文介绍了一种使用 C++ STL 中 std::remove 和 erase 方法组合来删除容器中指定元素的有效方法。这种方法不仅适用于 list 容器,还可以用于如 vector 这样不提供直接 remove 方法的容器。通过具体示例展示了如何正确地删除元素,并解释了 std::remove 的作用机制。
3213

被折叠的 条评论
为什么被折叠?



