C++ 以下结合了erase和remove的语法是什么意思?
可能重复:C++ 以下结合了erase和remove的语法是什么意思?,c++,containers,erase,C++,Containers,Erase,可能重复: 假设我有一个容器。。。。以下是什么意思 c.erase(remove(c.begin(),c.end(),99),c.end()); 擦除和删除不是相同的吗?在上述示例中,擦除和删除的具体功能是什么?它从容器c中删除所有等于99的元素 实际上不会删除任何元素。它将所有感兴趣的元素移动到容器的第二部分,并返回一个迭代器,指示第一个元素。然后,erase成员函数接受一个迭代器范围,以实际从容器中删除元素 请参阅。查找擦除-删除习惯用法。我知道它就在这里的某个地方。基本上,算法不知道他
假设我有一个容器。。。。以下是什么意思
c.erase(remove(c.begin(),c.end(),99),c.end());
擦除和删除不是相同的吗?在上述示例中,擦除和删除的具体功能是什么?它从容器
c
中删除所有等于99
的元素
实际上不会删除任何元素。它将所有感兴趣的元素移动到容器的第二部分,并返回一个迭代器,指示第一个元素。然后,erase
成员函数接受一个迭代器范围,以实际从容器中删除元素
请参阅。查找擦除-删除习惯用法。我知道它就在这里的某个地方。基本上,算法不知道他们正在使用的容器,所以实际上删除它们是不可能的。我不敢相信它不是重复的。我们可以这样编写代码吗?c、 擦除(c.开始(),c.结束(),99)@Saikiran没有,但一般来说,您必须查看每个容器的接口。您当然不能使用
std::vector
、std::deque
和std::list
。这些都需要一个或两个迭代器来指定要删除的元素范围。@juanchopanza事实上,你可以用std::list
来完成,只是不能用erase
,而是用list.remove(99)
,这可能是比erase-remove对块擦除的优化更好的选择,因为它不会为列表买任何东西。