STL map 详细用法
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 详细用法的更多相关文章
- STL map详细用法和make_pair函数
今天练习华为上机测试题,遇到了map的用法,看来博客http://blog.csdn.net/sprintfwater/article/details/8765034:感觉很详细,博主的其他内容也值得 ...
- STL map 常见用法详解
<算法笔记>学习笔记 map 常见用法详解 map翻译为映射,也是常用的STL容器 map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器) 1. map 的定义 / ...
- STL set 详细用法
一个集合(set)是一个容器,它其中所包含的元素的值是唯一的. 用到的库 #include <set> 定义 最简单: set<int> a; set和其他的stl一样,都支持 ...
- Atcoder ABC155_C中有关c++ STL map的用法
题目:https://atcoder.jp/contests/abc155/tasks/abc155_c 这道题的题意是给我们n个string,让我们统计每个string出现的次数,并输出次数最多的一 ...
- STL map的用法介绍!
map对象的定义 使用前添加map头文件,必须分别指明键和值的类型: map<string,int>word_count; map的构造函数: map<k,v>m; 创建一 ...
- C++标准模板库(STL)——map常见用法详解
map的定义 map<typename1, typename2> mp; map需要确定映射前类型和映射后类型,所以需要在<>内填写两个类型,第一个是键的类型,第二个是值的类型 ...
- STL map 用法
首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象 class pair可以将两个值视为一个单元.容器类别map和mul ...
- map的详细用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时 ...
- STL中map的用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
随机推荐
- 【webAssembly系列】webAssembly初探究竟
一.前言 自从JavaScript诞生开始,到现在开始变成流行的编程语言,背后的是web发展所推动的.web应用的变得更多更复杂,但是渐渐暴露出JavaScript的问题: (1)语法太灵活导致开发大 ...
- scikit-learn杂记
1.数据预处理 二值化 import numpy as np from sklearn import preprocessing X = np.array([[1., -1., 2.], [2., 0 ...
- 系统学习 Java IO (七)----字节数组流 ByteArrayInputStream/ByteArrayOutputStream
目录:系统学习 Java IO---- 目录,概览 ByteArrayInputStream 如果数据存储在数组中,ByteArrayInputStream 可以很方便读取,它可以返回 InputSt ...
- 【React】react学习笔记02-面向组件编程
react学习笔记02-面向组件编程 面向组件编程,直白来说,就是定义组件,使用组件. 以下内容则简单介绍下组建的声明与使用,直接复制demo观测结果即可. 步骤: 1.定义组件 a.轻量组件-函 ...
- Unity Shader 屏幕后效果——边缘检测
关于屏幕后效果的控制类详细见之前写的另一篇博客: https://www.cnblogs.com/koshio0219/p/11131619.html 这篇主要是基于之前的控制类,实现另一种常见的屏幕 ...
- 2018.12.1 万圣节的小L
我回来啦 试题描述 今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输. 已知小L共有n(n不大于10000) ...
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- django基础知识之中间件:
中间件 是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中 每个中间件 ...
- Everything-1.4.1.917 绿色版
Everything是一款搜索软件,可以瞬间搜索到你需要的文件.如果你用过Windows自带的搜索工具.Total Commander的搜索.Google 桌面搜索或百度硬盘搜索,都因为速度或其他原因 ...
- centos下安装色彩scrapy
一.安装Python2.7.6 更新CentOS lib库文件 yum -y update 安装开发工具包 yum groupinstall -y development 安装扩展包 yum inst ...