【翻译】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:递归互斥量.允许同一线程多次获得该互斥锁,可以用来解决同 ...
 
随机推荐
- 2018-2019-2 20165330《网络对抗技术》Exp1 PC平台逆向破解
			
目录 实验目标 实验内容 知识点描述 实验步骤 实验过程中遇到的问题 实验感想 实验目标 本次实验的对象是一个名为pwn1的linux可执行文件. -该程序正常执行流程是:main调用foo函数,fo ...
 - gis 相关资料
			
--gis原理学习 http://group.cnblogs.com/GIS/best-1.html http://www.cnblogs.com/SuperXJ/tag/移动GIS/ --gis坐标 ...
 - lua 获取指定目录下指定后缀文件名
			
lfs库是很好的选择,可惜不会编译,无奈只能自己写个简单的lua库.代码如下: #include <io.h> #include <stdio.h> #include &quo ...
 - jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory (Could not create connection to database server.)
			
今天在学习jmeter的jdbc取样器,发现在配置完JDBC Connection Configuration和JDBC Request后,点击运行.在查看结果树中显示响应数据: Cannot cre ...
 - SeaJS 与 RequireJS 的差异对比
			
这篇文章主要介绍了SeaJS 与 RequireJS 的差异对比,本文主要对CMD规范和AMD规范的弊端做了对比,并做出了一个总结,需要的朋友可以参考下 “历史不是过去,历史正在上演.随着 W3C 等 ...
 - 多线程下载文件,ftp文件服务器
			
1: 多线程下载文件 package com.li.multiplyThread; import org.apache.commons.lang3.exception.ExceptionUtils; ...
 - 阻止提交按钮的默认 action
			
使用 preventDefault() 函数来阻止对表单的提交. 示例代码如下: <html><head><script type="text/javascri ...
 - NGINX负载均衡缓存配置
			
环境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1 概述 如果我们的架构是前端负载均衡后端WEB集群时,可以开启nginx的缓存功 ...
 - PAT 1029 Median[求中位数][难]
			
1029 Median(25 分) Given an increasing sequence S of N integers, the median is the number at the midd ...
 - 【Cocos2dx 3.3 Lua】触屏事件
			
cocos2dx 3.x触屏时间分为单点触摸和多点触摸: 单点触摸:(即只有注册的Layer才能接收触摸事件) 多点触摸点单用法(多个Layer获取屏幕事件): ...