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> 如 ...
随机推荐
- 异步任务中的重新进入(Reentrancy)
一个按钮,点击执行一个任务.我们可能直接在它的 Click 事件中写下了执行任务的代码. 一般我们无需担心这样的代码会出现什么问题——但是,这样的好事情只对同步任务有效:一旦进入了异步世界,这便是无尽 ...
- hadoop、storm和spark的区别、比较
一.hadoop.Storm该选哪一个? 为了区别hadoop和Storm,该部分将回答如下问题:1.hadoop.Storm各是什么运算2.Storm为什么被称之为流式计算系统3.hadoop适合什 ...
- 【DUBBO】dubbo的Directory接口
集群目录服务Directory, 代表多个Invoker, 可以看成List,它的值可能是动态变化的比如注册中心推送变更.集群选择调用服务时通过目录服务找到所有服务. (1)StaticDirecto ...
- vue 中import和export如何一起使用(一)
前段时间碰到一个问题,vue js中要使用import来加载第三方的js,但是后面使用exports.XXX的话会报exports is not defined.那要怎么解决呢? 首先,我们要了解ES ...
- Python学习系列(八)( 面向对象基础)
Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类 ...
- 【转】ubuntu 12.04 /sbin/ldconfig.real: /usr/local/lib/*.so.8 不是符号连接 解决办法
原文网址:http://blog.csdn.net/shulianghe/article/details/21176059 最近在ubuntu12.04下使用sudo apt-get install安 ...
- netstat 命令 与 ss 命令
http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html http://www.ttlsa.com/linux-command/ss-r ...
- RK3288 摄像头左右镜像
系统:Android 5.1 设置摄像头左右镜像 diff --git a/frameworks/av/services/camera/libcameraservice/api1/CameraClie ...
- Android 系统四大组件
Android 系统四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast Receiver)和内容提供器(Content Provider). 活动是所有 A ...
- leaflet简单操作demo
今天大意了解了一下leaflet这个开源的 JavaScript 库,很强大. 结合腾讯地图,做了个简单的demo,作为一个学习的起点吧(各种API结合自身的业务) <!DOCTYPE html ...