【翻译】std::list::remove – C++ Reference

公有成员函数

std::list::remove


void remove(const value_type& val);

删除与给定值相等的元素

从容器中删除所有与 val 值相等的元素。list::remove 函数删除给定元素时,会调用被删除对象的析构函数,并且缩小相应大小的容器 size 。

list::remove 与另一个成员函数 list::erase 不同,后者使用迭代器来确定需要被删除的元素;前者通过数值的方式来确定被删除元素。

有一个与 list::remove 相似的函数—— list::remove_if ——它允许使用一个“仿函数”来确定被删除元素。

参数

val

被删除元素的值。

成员类型 value_type 是容器中元素的类型,作为一个模板参数 T 的别名,被定义在 list 中。

返回值

没有返回值

用例

// remove from list
#include <iostream>
#include <list>

int main ()
{
  int myints[]= {17,89,7,14};
  std::list<int> mylist (myints,myints+4);

  mylist.remove(89);

  std::cout << "mylist contains:";
  for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

输出 :

mylist contains: 17 7 14

复杂度

线性复杂度,取决于容器 size 。 O(n)

迭代器的有效性

指向已被函数移除的元素的迭代器、指针和引用是非法的。不影响指向其他元素的指针、迭代器和引用。

数据种类

容器是经过改进的

被删除的元素会被修改。尽管遍历容器是不安全的,但并发访问或者修改其他元素是安全的。

异常安全

如果比较两个元素不会抛出异常,那么 list::remove 将不会抛出异常。(可以确保不会抛出异常)

否则,如果一个异常被抛出,容器会留下一个有效状态。(基本能够保证)

参阅

list::remove_if 移除满足条件的元素
list::erase 擦除元素
list::unique 移除重复元素
list::pop_back 删除最靠后的元素
list::pop_front 删除最靠前的元素

感谢

Mengmeng Zhang

原文地址:http://www.cplusplus.com/reference/list/list/remove/
原文链接: https://www.cnblogs.com/fengyubo/p/5052400.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/225956

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午1:00
下一篇 2023年2月13日 下午1:00

相关推荐