在网上找资料的时候看到一种删除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方法删除新的结尾位置和旧的结尾位置之间的元素。