【翻译】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[]= {,,,};
std::list<int> mylist (myints,myints+); mylist.remove(); std::cout << "mylist contains:";
for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n'; return ;
}
输出 :
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/
【翻译】std::list::remove - C++ Reference的更多相关文章
- Error response from daemon: conflict: unable to remove repository reference 解决方案
由于前一章演示用的镜像没什么用准备删除 docker image rm hello-world:latest Error response from daemon: conflict: unable ...
- 【翻译】std::remove - C++ Reference
函数模板 std::remove 头文件<algorithm> template <class ForwardIterator, class T> ForwardIterato ...
- docker删除镜像Error response from daemon: conflict: unable to remove repository reference
Docker无法删除images,由于是依赖container. 1.进入root权限 sudo su 2. 列出所有运行或没有运行的镜像 docker ps -a 3.停止containe ...
- LLVM 编码规范 - 中文翻译
LLVM 编码规范 导论 语言.库和标准 C++ 标准版本 C++ 标准库 Go 代码准则 机械的代码问题 代码格式化 注释 头文件 类概述 method information 注释格式化 使用Do ...
- (翻译)什么是Java的永久代(PermGen)内存泄漏
http://www.codelast.com/?p=7248 转载请注明出处:http://www.codelast.com/ 本文是我对这篇文章的翻译:What is a PermGen leak ...
- 深入理解JDK中的Reference原理和源码实现
前提 这篇文章主要基于JDK11的源码和最近翻看的<深入理解Java虚拟机-2nd>一书的部分内容,对JDK11中的Reference(引用)做一些总结.值得注意的是,通过笔者对比一下JD ...
- Java Reference 源码分析
@(Java)[Reference] Java Reference 源码分析 Reference对象封装了其它对象的引用,可以和普通的对象一样操作,在一定的限制条件下,支持和垃圾收集器的交互.即可以使 ...
- C++11中std::unordered_map的使用
unordered map is an associative container that contains key-value pairs with unique keys. Search, in ...
- 第29课 互斥量与自解锁(std::mutex和lock系列)
一. 互斥量 (一)Mutex系列类 1. std::mutex:独占的互斥量,不能递归使用. 2. std::recursive_mutex:递归互斥量.允许同一线程多次获得该互斥锁,可以用来解决同 ...
随机推荐
- poj1850Code
Code Transmitting and memorizing information is a task that requires different coding systems for th ...
- Codeforces 838B - Diverging Directions - [DFS序+线段树]
题目链接:http://codeforces.com/problemset/problem/838/B You are given a directed weighted graph with n n ...
- Codeforces 349C - Mafia
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- MySQL存储引擎中的MyISAM和InnoDB
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问.为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数 ...
- the internal array pointer
The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and ...
- model方法取值总结
转自:https://www.cnblogs.com/ajianbeyourself/p/3604332.html
- sql根据某一个字段重复只取第一条数据
比如上图,取3,4行记录的第一行也就是3行,而不返回4行. 使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值 ...
- MySQL多线程备份工具:mydumper
MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper ...
- Python中的__init__.py的作用
当用 import 导入该目录时,会执行 __init__.py 里面的代码 因此在__init__.py文件中,把深层的包的路径缩短,别的地方就可以在引用到目录级别时引到深层的包.
- Must be between v0 and v15, inclusive解决办法
invoke-static 改为invoke-static/range