Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以下结合了erase和remove的语法是什么意思?_C++_Containers_Erase - Fatal编程技术网

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对块擦除的优化更好的选择,因为它不会为列表买任何东西。