C++中vector和map的删除方法(推荐)
1.连续内存序列容器(vector,string,deque)
序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。
vector<int> c; for(vector<int>::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; }
2.关联容器(set,multiset,map,multimap)
关联容器的erase方法没有返回值,被删除的迭代器失效,所以删除前必须确保能得到下一个迭代器,可以用“后置递增迭代器”技术。
map<int,int> m; for(map<int,int>::iterator it = m.begin(); it != m.end();) { if(need_delete()) m.erase(it++); else ++it; }
m.erase得到it的一个副本,在erase真正开始之前it已经递增了。
所以erase得到了当前的迭代器,在erase内部工作开始之前it已经++了,正好满足我们的需要。
以上就是小编为大家带来的C++中vector和map的删除方法(推荐)全部内容了,希望大家多多支持我们~
相关推荐
-
浅谈c++ vector和map的遍历和删除对象
示例如下: // Aa.cpp : Defines the entry point for the console application. #include "stdafx.h" #include <vector> #include <map> #include <iostream> using namespace std; int main(int argc, char* argv[]) { printf("Hello World!\n
-
C++中vector可以作为map的键值实例代码
因为项目中需要根据状态找到一个对应的结果,就采用了map的结构,但是状态本身较为复杂,存在一个vector中.上次使用map的经验是自定义类类型作为键值必须重载<操作符,因为map的快速查找是基于红黑树的构建,因而键值必须能相互之间比较.所以担心vector作为类类型的键值会引发一些错误,就写了一个例子测试.结果证明vector可以直接作为map的键值使用. #include<iostream> #include<string> #include<vector>
-
C++中vector和map的删除方法(推荐)
1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<int> c; for(vector<int>::iterator it = c.begin(); it != c.end();) { if(need_delete()) it = c.erase(it); else ++it; } 2.关联容器(set,multiset,map,multima
-
vector list map 遍历删除制定元素 防止迭代器失效的实例
方法如下所示: // k_control.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "stdio.h" #include <vector> #include <map> #include <string> #include <list> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {
-
Javacript中自定义的map.js 的方法
js中没有map这个类,只能自己写一个.以下map.js和map-util.js都是自定义的map,任选其一就可以.你可以用它来像java里new Map()和put().remove().get()等方法. map.js: function Map() { var struct = function(key, value) { this.key = key; this.value = value; } var put = function(key, value){ for (var i = 0
-
Javacript中自定义的map.js 的方法
js中没有map这个类,只能自己写一个.以下map.js和map-util.js都是自定义的map,任选其一就可以.你可以用它来像java里new Map()和put().remove().get()等方法. map.js: function Map() { var struct = function(key, value) { this.key = key; this.value = value; } var put = function(key, value){ for (var i = 0
-
详解Java中List的正确的删除方法
目录 简介 实例 正确方法 法1:for的下标倒序遍历 法2: list.stream().filter().collect() 法3: iterator迭代器 错误方法 法1:for(xxx : yyy)遍历 法2:for的下标正序遍历 原因分析 简介 本文介绍Java的List的正确的删除方法. 实例 需求:有如下初始数据,将list中的所有数据为"b"的元素删除掉.即:填充removeB()方法 package com.example.a; import java.util.Ar
-
VC中实现文字竖排的简单方法(推荐)
好多人都觉得在VC中实现文字竖排是一件很难的事情,其实可以使用"躺"着的字体很方便的实现文字竖排. Windows中有一些字体是"躺"着的,例如:@Fixedsys.@System.@宋体.@黑体等等,有很多,这些字体和不加@的字体的唯一区别就是用这些字体显示的文字是"躺"着的.如下图: 对这些"躺"着的字体进行270°的旋转就可以实现文字竖排了,效果如下: 以下代码可以产出竖排的宋体. CFont font; CFont *
-
在js中实现邮箱格式的验证方法(推荐)
如下所示: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>在此处插入标题</title> <script typ
-
在asp.net中获取当前页面的URL的方法(推荐)
获取Url的方法有两种,通过后台获得或通过前面js获得,如下: 1.通过C#获取当前页面的URL string url = Request.Url.AbsoluteUri; //结果: http://www.jb51.net/web/index.aspx string host = Request.Url.Host; //结果:www.jb51.net string rawUrl = Request.RawUrl; //结果:/web/index.aspx string localPath =
-
xcode中获取js文件的路径方法(推荐)
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"click" ofType:@"js"]; 理论上这样是应该能获取click.js的路径的,但是返回的确是null. 解决方法是: 项目的TARGETS-->Build Phases 在Compile Sources中 ,去掉你的js文件 在Copy Bundle Resources中,加上你的js文件 原理应该就是改之前Xcode默认把
-
ubuntu中root和普通用户切换方法(推荐)
ubuntu登录后,默认是普通用户权限,那么普通用户权限和root权限如何切换呢,下面总结下它们之间如何切换. 普通用户切换到root用户 登录ubuntu后,按上组合键CTRL+ALT+T进入终端界面,一般终端界面默认为普通用户权限模式,如何从普通用户进入root用户,有如下方法: 1.按上su,然后按照提示输入相应的root密码,就可登录到root权限下. 2.按上sudo su,然后按照提示输入相应的root密码,就可登录到root权限下(这个命令下,一般不需要输入相应的root密码).
随机推荐
- 如何使用jquery修改css中带有!important的样式属性
- vue2组件之select2调用的示例代码
- DOS批处理高级教程 第七章 DOS批处理编程高级技巧
- Java Swing中的表格(JTable)和树(JTree)组件使用实例
- js控制web打印(局部打印)方法整理
- 使用PHP维护文件系统
- PHP 线程安全与非线程安全版本的区别深入解析
- Go语言声明一个多行字符串的变量
- 详解docker容器硬盘动态扩容
- ipvs模块的管理工具ipvsadm介绍
- set 命令特殊用法
- java图形验证码生成工具类 web页面校验验证码
- SQLServer 数据库故障修复顶级技巧之一
- SQL学习笔记六 union联合结果集使用
- MSSQL数据库获取TEXT字段的内容长度
- jquery 仿QQ校友的DIV模拟窗口效果源码
- JavaScript DOM 学习第九章 选取范围的介绍
- 服务器安全策略 IP安全策略设置方法
- SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)
- Java 并发编程之ThreadLocal详解及实例