算法remove和remove_if与成员函数erase之间的区别是什么? 它们都会导致调用已删除的对象析构函数吗?
答案 0 :(得分:7)
不,remove
和remove_if
仅在序列中移动对象。您需要调用erase来使序列实际上更短。 remove和remove_if的返回值是您可以在erase
调用中使用的迭代器,以缩短序列:
sequence.erase(remove(...),sequence.end());
答案 1 :(得分:6)
答案 2 :(得分:0)
很简单,std :: remove使用一个值来确定元素是否被删除"而std :: remove_if使用谓词函数。
答案 3 :(得分:-1)
无论您使用何种方法/功能,都会在删除项目时始终调用析构函数。