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密码).
随机推荐
- JS实现从表格中动态删除指定行的方法
- 正则表达式实现最小匹配功能的方法
- js判断鼠标位置是否在某个div中的方法
- PHP中对各种加密算法、Hash算法的速度测试对比代码
- 详解Spring Hibernate连接oracle数据库的配置
- 解析JavaScript中的不可见数据类型
- jQuery实现三级菜单的代码
- 讲解Java中的基础类库和语言包的使用
- JavaScript对象引用与赋值实例详解
- 比较详细的基于CentOS的WWW服务器架设指南第1/2页
- require简单实现单页应用程序(SPA)
- 详解JavaScript的闭包、IIFE、apply、函数与对象
- C#几种获取网页源文件代码的实例
- Android开发实现TextView显示丰富的文本
- php下尝试使用GraphicsMagick的缩略图功能
- Android Studio查看Android 5.x源码的步骤详解
- python实现简单遗传算法
- SpringBoot war包部署到Tomcat服务器
- C++设计模式之建造者模式(Builder)
- python networkx 包绘制复杂网络关系图的实现