[C++]-unordered_map 映射
unordered_map和map的区别请点击这里。
本文中的代码跟[C++]-map 映射中的代码仅仅是把定义的map类型数据定义成了unordered_map类型数据。
代码
#include<iostream>
#include<unordered_map>
#include<string>
using namespace std;
inline void print_map(unordered_map<string, double> m)
{
/** 此种遍历输出方法也可
for(unordered_map<string, double>::iterator it = m.begin(); it != m.end(); ++it) // it指向一个二元组
cout << it->first << ": " << it->second << endl; cout << endl;
*/
for(auto x : m)
cout << x.first << ": " << x.second << endl; cout << endl;
}
int main()
{
unordered_map<string, double> mymap;
cout << "-----插入------" << endl;
mymap.insert(pair<string, double>("xxm", 1.1));
mymap.insert(make_pair("mqg", 2.2));
mymap.insert(unordered_map<string, double>::value_type("lpp", 3.3));
mymap["zhx"] = 4.4;
print_map(mymap); // 没有排序,按照哈希表从前到后遍历
cout << "-----通过键获取元素值------" << endl;
// 直接索引
// 通过索引直接获取对应的值,不存在键sjx,则返回double无参构造函数赋值为0
cout << mymap["xxm"] << " " << mymap["sjx"] << endl;
// 由于刚才 mymap["sjx"]语句,现在mymap中多了一个键值对mymap["sjx"]=0
// for循环遍历
print_map(mymap);
cout << "----- 判断是否存在某个键------" << endl;
unordered_map<string, double>::iterator it1 = mymap.find("xxm"); // 存在,返回对应的迭代器
if(it1 == mymap.end())
cout << "不存在该键" << endl;
else
cout << it1->second << endl;
unordered_map<string, double>::iterator it2 = mymap.find("xxxxm"); // 不存在,返回mymap.end()
if(it2 == mymap.end())
cout << "不存在该键" << endl;
else
cout << it2->second << endl;
cout << endl;
cout << "-----删除------" << endl;
mymap.erase("xxm"); // 删除键为xxm的键值对
mymap.erase(++mymap.begin()) ; // 删除第二个元素
print_map(mymap);
mymap.erase(mymap.begin(), mymap.end()); // 删除[mymap.begin(), mymap.end())区间的元素
if(mymap.empty()) cout << "mymap已空" << endl;
mymap.clear(); // 直接将映射内容全部清空
}
运行结果
-----插入------
zhx: 4.4
lpp: 3.3
mqg: 2.2
xxm: 1.1
-----通过键获取元素值------
1.1 0
sjx: 0
zhx: 4.4
lpp: 3.3
mqg: 2.2
xxm: 1.1
----- 判断是否存在某个键------
1.1
不存在该键
-----删除------
sjx: 0
lpp: 3.3
mqg: 2.2
mymap已空
[C++]-unordered_map 映射的更多相关文章
- 2 Sum
Problem Given an array of integers, find two numbers such that they add up to aspecific target numbe ...
- C/C++面试题总结(1)
首先说一下,这些东西,有的是必须掌握的,有的是面试时你讲出来就是闪光点.自己把握.把握不好的都搞懂.实在不行背下来. 由于时间关系,总结的比较随意,有的就直接贴链接了,希望理解一下. 第一篇:基础(必 ...
- C++标准模板库(STL)常用介绍
1. 输入输出 C++既可以用C的scanf和printf,也可以用新增的的cin与cout,后者速度慢 1.1 C程序中输入输出 int a; scanf("%d",&a ...
- ACM金牌选手讲解LeetCode算法《哈希》
大家好,我是编程熊. 往期文章介绍了<线性表>中的数组.链表.栈.队列,以及单调栈和滑动窗口. ACM金牌选手讲解LeetCode算法<线性表> ACM金牌选手讲解LeetCo ...
- 2021ICPC网络赛第一场部分题解-The 2021 ICPC Asia Regionals Online Contest (I)
写在前面 本来应该6题的,结果不知道哪个铸币发了H的clar,当即把我们的思路转向三维几何上.当时我们还在想这三维计算几何的正确率有点太高了还在感叹ICPC选手的含金量,直到赛后我才知道这H题的铸币出 ...
- C++ unordered_map remove 实现哈希表移除
使用C++的unordered_map类型时,我们经常要根据关键字查找,并移除一组映射,在Java中直接用remove即可,而STL中居然没有实现remove这个函数,还要自己写循环来查找要删除项,然 ...
- map,hash_map和unordered_map 实现比较
map介绍 Map是STL[1]的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处 ...
- C++11中新特性之:unordered_map
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value. 不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的ha ...
- [LeetCode] Find Anagram Mappings 寻找异构映射
Given two lists A and B, and B is an anagram of A. B is an anagram of A means B is made by randomizi ...
随机推荐
- 97、配置yum源仓库服务器
(服务端(双(外,内)网卡)--客户端(内网)) YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统, 就需要有一个包含各种r ...
- 25、mysqlreport(my.cnf)调优工具
25.1.mysqlreport介绍: mysqlreport以很友好的方式显示 MySQL状态变.事实上,它几乎报告了所有的状态.不像 SHOW STATUS 只是在显示 了100多个状态值,mys ...
- MyBatis温故而知新-底层运行原理
准备工作 public class MainClass { public static void main(String[] args) throws Exception { String resou ...
- Docker搭建Jenkins+Maven/Gradle——代码自动化运维部署平台(二)
一.简介 1.Jenkins 概述: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins ...
- CRM系统选型时的参考哪些方面
企业不论在制定营销策略或是在进行CRM系统选型时,首先都是要了解自身的需求.每一家企业的情况和需求都有很大差异,CRM系统的功能也都各有偏重.有些CRM偏重销售管理.有些注重于营销自动化.有些则侧重于 ...
- Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
解决办法: 去掉ps -aux 中的"-",改成ps aux 就可以了
- Acunetix与WAF集成:Acunetix和F5 BigIP ASM
该的Acunetix API让您有机会来实现任务自动化,从而提高效率-尤其是当你可以用加速您的工作流程的其他组件的功能整合.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Ac ...
- 文末送书四本 | 这篇Java反射机制太经典!不看后悔!
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 价值:Java技能,面试经验指导,简历优化,职场规划指导,技能提升方法,讲不完的职场故事,个人成长经 ...
- ROS踩坑笔记总结
2019-07-12 11:32:16 我的第一篇原创博客(当然是站在巨人肩膀上,有些内容参考了其他大神的博客,都一一做了说明),这些是我之前在学习ROS期间经历的一些坑,以及相对应的解决方案,希望可 ...
- JMeter之BeanShell常用内置对象
一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...