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中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
随机推荐
- 30442数据操纵语言DML
5.5 SQL的数据操纵功能 5.5.1 数据插入 使用CREATE语句创建的数据表还只是一个“空壳”,表中没有任何数据.利用SQL语言提供的INSERT语句可以完成向数据表插入数据的任务. INSE ...
- 【搜索引擎】Solr全文检索近实时查询优化
设置多个搜索建议查找算法 <searchComponent name="suggest" class="solr.SuggestComponent"> ...
- java基础(1)-几种获取类的扩展方式
摘要 在日常开发过程中经常需要获取类的扩展集.即获取类的子类集(抽象类),或者接口实现类.比如说状态模式中,状态构建类,策略模式中的,策略构造方式.本文介绍几种获取方式. 实现 以策略模式为例 定义了 ...
- 【JAVA8】Set排序四种写法
工作中遇到,写了很久以前的写法,师兄给了很多建议,于是整理了一下.孔子曰:"你知道茴香豆的茴字有几种写法吗?" 第一种,平常的写法: public class App { publ ...
- tomcat配置多个数据源
应用场景: 公司tomcat服务器中运行着多个工程,工程链接的mysql数据库不同,所以每个工程的Spring总配置文件中都配置了数据源. 需求: 将数据源统一拿到tomcat中配置. 本来指派给 ...
- ajax:error:function (XMLHttpRequest, textStatus, errorThrown) 中status、readyState和textStatus状态意义
textStatus: "timeout", 超时 "error", 出错 "notmodified" , 未修改 "parser ...
- (持续更新)Qt3D 学习资源
目录 一.前言 1.1 什么是Qt3D 1.2 Qt3D 的利与弊 利:原生支持 弊处:资料过少 二.学习建议 2.1 OpenGL 学习资料 2.2 Qt3D 资料 2.2.1 视频资料 2.2.4 ...
- SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...
- 查询IP地址的免费API
1.百度 1.http://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=192.168.0.0&co=&resource_ ...
- HDU 6207:Apple(Java高精度)
题目链接 题意 给出三个圆上的点,和一个目标的点,问目标点是否在这三个点构成的圆外面. 思路 许久没见过的Java高精度,不要加package!!! import java.math.BigDecim ...