Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据 处理能力。

需要的库

#include <map>

基本操作

定义

map<string,int>m;

这是定义了一个以string为关键字,以int为值的map

插入

方法1:

map<string,int>m;
m["Bob"]=;
m["Alice"]=;
m["Eric"]=;

方法2:

m.insert(pair<string,int>("Lee",));

方法3:

m.insert(map<string,int>::value_type("Karen",)); 

遍历

定义一个迭代指针iter,使其指向map,实现对map的遍历。

#include<bits/stdc++.h>

using namespace std;

int main()
{
map<string,int>m;
m["Bob"]=;
m["Alice"]=;
m["Eric"]=;
map<string,int>::iterator iter;
for(iter=m.begin(); iter!=m.end(); iter++)
cout<<iter->first <<"->"<<iter->second<<endl;
}

输出为:

Alice->
Bob->
Eric->

可以看到map自动在内部以关键字为准,按字典序排序,而不是根据输入的顺序;

需要注意的是 当我进行实验的时候 我发现这样一个现象:

#include<bits/stdc++.h>

using namespace std;

int main()
{
map<string,int>m;
m["Bob"]=;
m["Alice"]=;
m["Eric"]=;
map<string,int>::iterator iter;
for(iter=m.begin(); iter!=m.end(); iter++)
cout<<iter->first <<"->"<<iter->second<<endl; if(m["AAA"]==)
cout<<"NO"<<endl; for(iter=m.begin(); iter!=m.end(); iter++)
cout<<iter->first <<"->"<<iter->second<<endl; }

当询问一个map中不存在的数的时候,返回的值应该是0,不过当你再次遍历的时候,就会发现map中已经多了一个键值对,只不过值是0:

Alice->
Bob->
Eric->
NO
AAA->
Alice->
Bob->
Eric->

在做题时一定要好好注意。

查找

方法1:

cout<<m.find("Bob")->second<<endl;

如果按关键字搜索,搜不到的话会输出乱码

方法2:

    map<string,int>::iterator iter1;
iter1 = m.find(string("Bob"));
if(iter1 != m.end())
cout<<iter1->first <<"->"<<iter1->second<<endl;
else
cout<<"no fount"<<endl;

定义一个指针,指向map,如果没有的话会返回m.end()

删除

方法1

m.erase(iter1);

同样的是指针的操作

方法2

m.erase(string("AAA"));

或者是根据关键字删除

map的相关函数

  • begin()          返回指向map头部的迭代器
  • clear()         删除所有元素
  • count()          返回指定元素出现的次数
  • empty()          如果map为空则返回true
  • end()            返回指向map末尾的迭代器
  • equal_range()    返回特殊条目的迭代器对
  • erase()          删除一个元素
  • find()           查找一个元素
  • get_allocator()  返回map的配置器
  • insert()         插入元素
  • key_comp()       返回比较元素key的函数
  • lower_bound()    返回键值>=给定元素的第一个位置
  • max_size()       返回可以容纳的最大元素个数
  • rbegin()         返回一个指向map尾部的逆向迭代器
  • rend()           返回一个指向map头部的逆向迭代器
  • size()           返回map中元素的个数
  • swap()            交换两个map
  • upper_bound()     返回键值>给定元素的第一个位置
  • value_comp()      返回比较元素value的函数

STL map 详细用法的更多相关文章

  1. STL map详细用法和make_pair函数

    今天练习华为上机测试题,遇到了map的用法,看来博客http://blog.csdn.net/sprintfwater/article/details/8765034:感觉很详细,博主的其他内容也值得 ...

  2. STL map 常见用法详解

    <算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...

  3. STL set 详细用法

    一个集合(set)是一个容器,它其中所包含的元素的值是唯一的. 用到的库 #include <set> 定义 最简单: set<int> a; set和其他的stl一样,都支持 ...

  4. Atcoder ABC155_C中有关c++ STL map的用法

    题目:https://atcoder.jp/contests/abc155/tasks/abc155_c 这道题的题意是给我们n个string,让我们统计每个string出现的次数,并输出次数最多的一 ...

  5. STL map的用法介绍!

    map对象的定义 使用前添加map头文件,必须分别指明键和值的类型: map<string,int>word_count; map的构造函数: map<k,v>m;   创建一 ...

  6. C++标准模板库(STL)——map常见用法详解

    map的定义 map<typename1, typename2> mp; map需要确定映射前类型和映射后类型,所以需要在<>内填写两个类型,第一个是键的类型,第二个是值的类型 ...

  7. STL map 用法

    首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象  class pair可以将两个值视为一个单元.容器类别map和mul ...

  8. map的详细用法

     map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时 ...

  9. STL中map的用法

    map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...

随机推荐

  1. 【webAssembly系列】webAssembly初探究竟

    一.前言 自从JavaScript诞生开始,到现在开始变成流行的编程语言,背后的是web发展所推动的.web应用的变得更多更复杂,但是渐渐暴露出JavaScript的问题: (1)语法太灵活导致开发大 ...

  2. scikit-learn杂记

    1.数据预处理 二值化 import numpy as np from sklearn import preprocessing X = np.array([[1., -1., 2.], [2., 0 ...

  3. 系统学习 Java IO (七)----字节数组流 ByteArrayInputStream/ByteArrayOutputStream

    目录:系统学习 Java IO---- 目录,概览 ByteArrayInputStream 如果数据存储在数组中,ByteArrayInputStream 可以很方便读取,它可以返回 InputSt ...

  4. 【React】react学习笔记02-面向组件编程

    react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件   a.轻量组件-函 ...

  5. Unity Shader 屏幕后效果——边缘检测

    关于屏幕后效果的控制类详细见之前写的另一篇博客: https://www.cnblogs.com/koshio0219/p/11131619.html 这篇主要是基于之前的控制类,实现另一种常见的屏幕 ...

  6. 2018.12.1 万圣节的小L

    我回来啦 试题描述 今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输. 已知小L共有n(n不大于10000) ...

  7. HDU 5791:Two(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description   Alice gets two sequences A ...

  8. django基础知识之中间件:

    中间件 是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中 每个中间件 ...

  9. Everything-1.4.1.917 绿色版

    Everything是一款搜索软件,可以瞬间搜索到你需要的文件.如果你用过Windows自带的搜索工具.Total Commander的搜索.Google 桌面搜索或百度硬盘搜索,都因为速度或其他原因 ...

  10. centos下安装色彩scrapy

    一.安装Python2.7.6 更新CentOS lib库文件 yum -y update 安装开发工具包 yum groupinstall -y development 安装扩展包 yum inst ...