C语言 · C++中map的用法详解

转载自:http://blog.csdn.net/sunquana/article/details/12576729

一、定义  

(1) map<string,   int>   Map; 
    (2) 或者是:typedef   map<string,int>   Mymap; 
                      Mymap   Map;

二、插入数据 

插入数据之前先说一下pair 和 make_pair 的用法
pair是一个结构体,有first和second 两个域,可以直接访问

1 string key="sunquan";
2 int value=123456;
3 pair <string,int>  b(key, value);//这里 pair <string,string>是数据类型,后面是调带参构造方法
4 cout<<b.first<<endl; 

而make_pair是返回一个pair <类型,类型>  的数据,eg:make_pair("asa",123456);   不过还得找个pair <string,int>类型的变量来接受返回值。
下面步入正题:

(1) Map["abc"]=1;
 (2) Map.insert(pair<string,int>("c",3));
 (3)Map.insert(make_pair<string,int>("d",4));

三、修改和查找数据

(1)修改Map["sunquan"]=11111;

(2)查找数据 用Map.find(key); 可以通过键来查。

切记不要用int value=Map[key];这样会在Map中增加这个key,而value就是缺省值(int 为0,string为空字符串)。

通过方法(2),会返回迭代器的地址,key不存在的话迭代器的值为Map.end();

四、删除元素

(1)通过key删除;

(2)通过迭代器来删除;

下面看一下详细的代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <map>
 6 using namespace std;
 7
 8 int main()
 9 {
10     map<string,int> Map;
11     map<string,int> ::iterator it;
12     Map.insert(pair<string,int>("root",12));
13     Map.insert(pair<string,int>("scot",11));
14     for(it=Map.begin();it!=Map.end();it++)
15         cout<<it->first<<"    "<<it->second<<endl;
16     it=Map.begin();
17     Map.erase(it);//通过迭代器删除
18     string key="root";
19     Map.erase(key);//通过key删除
20
21     Map.erase(Map.begin(),Map.end());//一个迭代器,到另一个迭代器
22     //相当于  Map.clear();
23
24     for(it=Map.begin();it!=Map.end();it++)
25         cout<<it->first<<"    "<<it->second<<endl;
26     return 0;
27 }  

注:

map<int, string>::iterator it 是声明一个 迭代器
map<int, string> it 是 声明一个map容器

五、c++中map的一些方法

begin() 返回指向map头部的迭代器
    clear() 删除所有元素
    count() 返回指定元素出现的次数
    empty() 如果map为空则返回true
    end()   返回指向map末尾的迭代器

equal_range()    返回特殊条目的迭代器对

    erase() 删除一个元素
    find()  查找一个元素
    insert()插入元素
    max_size()返回可以容纳的最大元素个数
    size()  返回map中元素的个数
    swap()  交换两个map

get_allocator()  返回map的配置器
      key_comp()       返回比较元素key的函数
      lower_bound()    返回键值>=给定元素的第一个位置
      max_size()       返回可以容纳的最大元素个数
      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数

时间: 2024-10-24 04:16:28

C语言 · C++中map的用法详解的相关文章

Java中Map的用法详解

Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如HashMap 类. 注:将可变对象用作映射键时必须格外小心.当对

PHP中的ob_start用法详解

用PHP的ob_start();控制您的浏览器cache Output Control 函数可以让你自由控制脚本中数据的输出.它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况.输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用.我们先举一个简单的例子,让大家对Output Control有一个大致的印象:Example 1. 程序代码 程序代码<?phpob_start(

c++中vector的用法详解

c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个

hibenate中genarator的用法详解

ARM IDE 使用 ADS(ARM Developer Suite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具. 新建工程:exp-2 新建文件exp-2.s到工程exp-2中: 创建好后,编辑源代码. 调试设置:AXD->options->configure Target..,选armul: ARMlinker中设置 RO Base与RW Base与Image Entry Point: 开始调试.add r1,r1,r2 // 将r1+r2的结果存储到r

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote

(转)linux 中特殊符号用法详解

linux 中特殊符号用法详解 原文:https://www.cnblogs.com/lidabo/p/4323979.html # 井号 (comments)#管理员  $普通用户 脚本中 #!/bin/bash   #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行. # This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就

Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: &#39;self&#39;的问题解决

https://blog.csdn.net/songlh1234/article/details/83587086 下面总结一下self的用法详解,大家可以访问,可以针对平时踩过的坑更深入的了解下. https://blog.csdn.net/CLHugh/article/details/75000104, Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: 'self'的问题解决 原文

c++中map的使用详解说明

项目需要,map的使用详解 键值对 匹配 1   头文件 #include   <map> 2.map的功能 自动建立Key - value的对应.key 和 value可以是任意你需要的类型. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次. 快速插入Key - Value 记录. 快速删除记录 根据Key 修改value记录. 遍历所有记录. 3, map的构造函数 map共提供了6个构造函数,这块涉

mysql中event的用法详解

一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程. 二.适用范围对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理. 例如:使用event在每月的1日凌晨1点自动创建下个月需要使用的三张表. 三.使用权限单独使用event调用SQL语句时,查看和创建