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的键值实例代码
因为项目中需要根据状态找到一个对应的结果,就采用了map的结构,但是状态本身较为复杂,存在一个vector中.上次使用map的经验是自定义类类型作为键值必须重载<操作符,因为map的快速查找是基于红黑树的构建,因而键值必须能相互之间比较.所以担心vector作为类类型的键值会引发一些错误,就写了一个例子测试.结果证明vector可以直接作为map的键值使用. #include<iostream> #include<string> #include<vector>
-
浅谈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的删除方法(推荐)
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密码).
随机推荐
- 详解AngularJs中$sce与$sceDelegate上下文转义服务
- 显示运行对话框内保存的命令历史的vbs
- 日期 时间js控件
- vue.js实现仿原生ios时间选择组件实例代码
- javascrip客户端验证文件大小及文件类型并重置上传
- 在Real影片中放木马后门
- Java中增强for循环在一维数组和二维数组中的使用方法
- JavaScript实现简单的四则运算计算器完整实例
- php实现遍历多维数组的方法
- JavaScript实现列表分页功能特效
- javascript实现回车键提交表单方法总结
- 比较SQL Server与Oracle、DB2数据库的一些知识
- SQL Sever查询语句大全集锦
- 非常详细的SQL--JOIN之完全用法
- MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法
- javascript实现了照片拖拽点击置顶的照片墙代码
- jQuery中delegate()方法用法实例
- 脚踏实地学习 轻松网赚
- Android 手机防止休眠的两种实现方法
- 解析Extjs与php数据交互(增删查改)
