英语对于记忆的删除怎么写? clear?remove?delete?erase?或者其他的?

如题所述

先写一个循环来迭代容器中的元素,如果迭代元素是要删除的元素,则删除之。代码如下所示: vector intContainer; for(vector::iterator is = intContainer.begin(); it != intContainer.end(); ++it) { if ( *it == 25) intContainer.erase(it); }。借助remove算法来达到删除元素的目的。 vector intContainer; size_t before_size = intContainer.size(); remove(intContainer.begin(), intContainer.end(), 25); size_t after_size = intContainer.size(); 运行程序以后发现before_size和after_size是一样的,说明元素并没有被真正删除。写出以上程序,是处于对remove算法的不了解而致。STL中remove算法会将不该删除的元素前移,然后返回一个迭代器,该迭代器指向的是那个应该删除的元素,仅此而已。所以如果要真正删除这一元素,在调用remove之后还必须调用erase,这就是STL容器元素删除的"erase_remove"的惯用法。 vector intContainer; intContainer.erase( remove(intContainer.begin(), intContainer.end(), 25), intContainer.end()); erase-remove的惯用法适用于连续内存容器,比如vector,deque和string,它也同样适用于list,但是并不是推荐的方法,因为使用list成员函数remove会更高效,代码如下: list list_int; .... list_int.remove(25); 标准关联容器没有remove成员函数,使用STL算法的remove函数时编译同不过。所以上述remove形式对于标准关联容器并不适用。在这种情况下,解决办法就是调用erase: map mapContainer; ... mapContainer.erase(25); 对于标准关联容器,这样的元素删除方式是简单有效的,时间复杂度为O(logn). 当需要删除的不是某一个元素,而是具备某一条件的元素的时候,只需要将remove替换成remove_if即可 bool Is2BeRemove(int value) { return value < 25; } vector nVec; list nList; .... nVec.erase(remove_if(nVec.begin(), nVec.end(), Is2BeRemove), nVec.end()); nList.remove_if(Is2BeRemove); 删除容器中具有特定值的元素:如果容器是ector、string或者deque,使用erase-remove的惯用法。如果容器是list,使用list::remove。如果容器是标准关联容器,使用它的erase成员函数。删除容器中满足某些条件的元素:如果容器是ector、string或者deque,使用erase-remove_if的惯用法。如果容器是list,使用list::remove_if。如果容器是标准关联容器,使用remove_copy_if & swap 组合算法。追问

哇,大哥,好端端的英语问题你怎么扯到vector来了?

虽然的确与vector类相关

而且写法能不能严谨一点
vector Container

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-19
为您解答
电脑方面通常用clear表示清空,比如clear ram memory,
移除储存用remove,还可以用于实体物质比如memory card
Delete属于不要了,删除
看你具体想做什么了

泛指记忆通常用erase追问

Remove的基本含义不就是移除么

但是C++里还有删除的意思?

比如,在技术可以实现的情况,某个人下看到了什么不得了的东西,然后清除它的记忆

相似回答