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> 如 ...
随机推荐
- appium-java,切换源生app和webview
方法 public void swith_app(AndroidDriver AndroidDriver){ //切换到源生app System.out.println(AndroidDriver.g ...
- 简单实现Jmail发送邮件
package com.chauvet.util; import java.util.Properties; import javax.mail.*; import javax.mail.intern ...
- Python学习-str与byte类型以及编码
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- Ubuntu下环境变量设置
[内容来自网络] 相应配置文件介绍: 1) /etc/profile :在登录时,操作系统定制用户环境使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,改文件被执行 2) /e ...
- np.random 的使用
random 有很多地方会用到. 参考这篇: http://www.cnblogs.com/CheeseZH/p/4593349.html
- 使用npm install报错- operation not permitted解决
原文:https://blog.csdn.net/weixin_41715295/article/details/79508104 这几天使用npm install时一直报错-4048 operati ...
- ballerina 学习十六 错误&&异常处理
ballerina 的error 处理和elxiir 以及rust 比较类似使用模式匹配,但是他的 error lifting 还是比较方便的 同时check 也挺好,异常处理没什么特殊的 throw ...
- apache phoenix 安装试用
备注: 本次安装是在hbase docker 镜像的基础上配置的,主要是为了方便学习,而hbase搭建有觉得 有点费事,用镜像简单. 1. hbase 镜像 docker pull har ...
- How to install cacti on centos 6
Cacti – Network and performance monitoring tool Cacti is one of best monitoring tool used to monit ...
- CRC 自动判断大端 小端
/* aos_crc64.c -- compute CRC-64 * Copyright (C) 2013 Mark Adler * Version 1.4 16 Dec 2013 Mark Adle ...