map的访问
映射表(map)
在每个条目被插入时将之按键进行排序。取迭代器指向值时将返回value_type结构,它有两个数据成员:first,second。访问first获得键的数据,访问second获得值的数据。
除了迭代器访问外,映射表还提供通过它们的键值随机访问的接口(可以用数组进行访问)。
#pragma warning (disable:4786)
#include<iostream>
#include<map>
#include<string>
#include<algorithm>
using namespace std; template<typename F,typename S>
class value_equals
{
private:
S second;
public:
value_equals(const S& s) :second(s){}
bool operator()(pair<const F, S> elem){ return elem.second == second; }
}; typedef map<int, string> isMap;
typedef isMap::value_type isValType;
typedef isMap::iterator isMapItor; void main()
{
isMap c; c.insert(isValType(, "OneHundred"));
c.insert(isValType(, "Three"));
c.insert(isValType(, "OneHundredFifty"));
c.insert(isValType(, "NinetyNine")); for (isMapItor itor = c.begin(); itor != c.end(); ++itor)
{
cout << "Key = " << itor->first << ",Value = " << itor->second << endl;
} //你可以通过关联数组方式访问映射表
cout << "Key 3 displays value " << c[].c_str() << endl;
//或者以关联数组方式插入键/值对
c[] = "OneHundredTwentyThree";
//基于键找到并删除一个特定值
isMapItor pos = c.find();
if (pos != c.end())
c.erase(pos); //基于值找到并删除元素
pos = find_if(c.begin(), c.end(), value_equals<int, string>("NinetyNine"));
if (pos != c.end())
c.erase(pos);
//如果你需要在遍历链表时删除元素
for (isMapItor itor = c.begin(); itor != c.end();)
{
if (itor->second == "Three")
c.erase(itor++);
else
++itor;
}
}
注意 !!
for (isMapItor itor = c.begin(); itor != c.end();)
{
if (itor->second == "Three")
c.erase(itor++);
else
++itor;
}
如果你需要迭代遍历并手工在映射表中删除对象,需要注意。STL设计者没有像其他容器那样提供一个erase()函数来删除特定元素并返回下一个有效位置。所以,我们不得不在删除后重新排序,以使我们的迭代器不会失效。在这个例子中,与在for循环语句中步进迭代器不同,我们在循环体内以条件语句的方式完成迭代器工作。注意,当一个元素需要删除,我们在将迭代器作为参数传递给erase()后使用后置递增运算符步进此迭代器。但如果此元素不需要删除,我们使用标准前置递增运算符。因为操作顺序的不同,这个方法允许在不使用临时迭代器进行重新排序的情况下进行安全的迭代操作。
map的访问的更多相关文章
- jquery.min.map详见
温故而知新,翻出来阮前辈的文章记录一下 日期:2013年1月23日 上周,jQuery 1.9发布. 这是2.0版之前的最后一个新版本,有很多新功能,其中一个就是支持Source Map. 访问 ht ...
- JavaScript Source Map 详解
源码地址: http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html 上周,jQuery 1.9发布. 这是2.0版之前的最后 ...
- java 网络API访问 web 站点
package cn.magicdu.think.socket; import java.io.BufferedReader; import java.io.InputStreamReader; im ...
- STL的pair学习, map学习
http://blog.csdn.net/calvin_zcx/article/details/6072286 http://www.linuxidc.com/Linux/2014-10/107621 ...
- 关于Struts2自动装配和访问Servlet API
自动装配 1.根据属性的getter和setter获取值 index.jsp <s:form action="hello" method="POST"& ...
- BAT面试上机题从3亿个ip中找出访问次数最多的IP详解
我们面临的问题有以下两点:1)数据量太大,无法在短时间内解决:2)内存不够,没办法装下那么多的数据.而对应的办法其实也就是分成1)针对时间,合适的算法+合适的数据结构来提高处理效率:2)针对空间,就是 ...
- STL整理之map
转载请注明出处,部分内容引自李煜东<算法竞赛进阶指南> 前置知识: C++.C语言入门 Map是什么 Map是从键(key)到值(value)的映射,其内部实现是一棵以key为关键码 ...
- Struts2(八)访问Servlet API
一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等 ...
- DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2
数据绑定的用法 import语法 <data> <import type="android.view.view"/> </data> 如 ...
随机推荐
- java获取服务器的ip和地址
HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" ...
- Objective-C的属性和成员变量用法及关系浅析
在使用Objective-C语言进行了一段时间的iOS开发之后,发现自己的语言基础相对薄弱,于是开始弥补自己的短处.我发现在用过一种语言之后,再回过头来看它的很多原理会发现有更加深刻的理解.下面就对一 ...
- Spark学习体系整理(基础篇、中级篇、高级篇所涉及内容)
新手刚开始学习比较迷茫,参考下面,然后找相关资料学习 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 ...
- idea Java spring 入门 demo
根据这个 来实现 理解 https://www.cnblogs.com/xing901022/p/3963962.html 这里没有说如何导入包,现在我们用 idea 来实现 新建项目结构后 RUN ...
- 相对导入中Attempted relative import in non-package问题
这一篇应该是解释的比较清楚: http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package- ...
- cargo rust 包管理工具
1. 安装 yum 或者官方提供的包,比较简单 curl -sSL https://static.rust-lang.org/rustup.sh | sh 2. 帮助命令 cargo --help U ...
- BZOJ2384:[CEOI2014]Match
浅谈\(KMP\):https://www.cnblogs.com/AKMer/p/10438148.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...
- onclick监听
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ios生成自签名证书,实现web下载安装app
抄自http://beyondvincent.com/blog/2014/03/17/five-tips-for-using-self-signed-ssl-certificates-with-ios ...
- 以Linux下的测试程序说明递归型互斥量和普通互斥量的区别
先贴代码和测试结果 // Mutex.h: 对pthread的互斥量的RAII包装 #ifndef _MUTEX_H_ #define _MUTEX_H_ #include <stdio.h&g ...