map与unordered_map的区别

set/map底层实现的机制是红黑树。红黑树是一种近似于平衡的二叉查找树,默认是按升序排序的。在红黑树上做查找、插入、删除操作的时间复杂度为O(logN)。

红黑树的缺点:空间占用率高,每一个节点都需要额外保存父节点、孩子节点和红/黑性质,使得每一个节点都占用大量的空间。

 

std::unordered_map对应哈希表,哈希表的特点就是查找效率高,时间复杂度为常数级别O(1),而额外空间复杂度则要高出许多。所以对于需要高效率查询的情况,使用std::unordered_map容器。而如果对内存大小比较敏感或者数据存储要求有序的话,则可以用std::map容器。

区别:

  1. 、unordered_map比map执行效率高;但是占用内存也多
  2. 、但是std::unordered_map对于迭代器遍历效率并不高

    

//两者的用法是一致的

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <thread>
#include <stdlib.h>
#include <unordered_map>using namespace std;int main() {unordered_map<string, string> mp;mp.insert(make_pair("red", "#FF0000"));mp.insert(make_pair("green", "#00FF00"));mp.insert(make_pair("blue", "#0000FF"));for (auto it = mp.begin(); it != mp.end(); ++it) {cout << "Key:[" << it->first << "] Value:[" << it->second << endl;}cout << "====================================================" << endl;mp["black"] = "#000000";mp["black"] = "#000000"; //可以放同样的元素,但是会过滤掉重复的for (auto it = mp.begin(); it != mp.end(); ++it) {cout << "Key:[" << it->first << "] Value:[" << it->second << endl;}cout << "mp.size()=" << mp.size() << endl;string key = "hel";auto it = mp.find(key);if (it == mp.end()) {std::cout << key << " not found" << endl;} else {std::cout << "Found " << key << endl;}return 0;
}

在CodeBlocks上的运行结果是:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

navicat不同数据库数据传输

复制fo的t_fo_account表结构和数据到base库 结果 转载于:https://www.cnblogs.com/feifeicui/p/10307646.html

Win2003 IIS下,ASP.NET无法访问数据库和网页

1.Win2003 IIS下,ASP.NET无法访问网页 将IIS的 允许ASP 设置为允许. 2.Win2003 IIS下,ASP.NET无法访问数据库(这里我用的是Oracle9i) 1)将网站的虚拟目录 添加 ASP.NET 和 NETWORK_SERVICE用户. 2)oracle目录下ora92目录的Authenticateduser用户 去掉勾中的权限 再勾上权限. 最…

FTP自动上传日期命名文件

说明&#xff1a;此文章是从http://177048.blog.51cto.com/167048/919374转载过来的&#xff0c;若有侵权之处&#xff0c;请联系本人&#xff0c;及时删除&#xff0c;谢谢&#xff01; 需求&#xff1a;将每天备份的数据以当天日期命名&#xff0c;并定时上传到FTP服务器上。…

收藏了两年的嵌入式AI资源学习笔记,今天全分享给大家(附代码/资料/视频/学习规划)...

当前乃至未来5-10年&#xff0c;嵌入式开发者还有哪些风口&#xff1f;”画外音&#xff1a;风口的本质&#xff0c;其实就是一段时间的人才供需不平衡。说白了就是由于行业突变&#xff0c;敏锐的资本快速进入&#xff0c;导致短时间内行业大量扩张&#xff0c;需要大量开发者…

gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化

今天看到了一篇文章&#xff0c;写的挺好就将其转载&#xff0c; https://blog.csdn.net/zhangzq86/article/details/80840927 Gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要&#xff0c;提供了近百种优化选项&#xff0c;用来对{编译时间&#xff0c;目标文…

Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...

C header files matching your running kernel were not found. Refer to your distributions documentation for installation instructions - NoH4cker - 博客园 http://www.cnblogs.com/NoH4cker/p/4840571.html centos6 安装wmwaretools找不到kernel header - jiejnan - 博…

分享一个消息组件

前段时间在收集项目素材时发现一个很好用的消息组件ymPrompt,顺便收集了圈子里关于这个组件的文章&#xff0c;感觉介绍不是很完善。 废话少说先看一下演示效果: 演示Demo: http://www.ajaxbbs.net/test/ymPrompt4.0/demo.html 截取的图片: Vista样式 简短的实现脚本: Code--导…

用C语言搞机器学习,来个最基础的Knn入门

本来是准备周末加班两天的&#xff0c;然后&#xff0c;临时突然其他事情又取消了。顺便看了下csdn&#xff0c;看到一篇介绍KNN的&#xff0c;因为我现在做的也是属于机器学习方向&#xff0c;那自然也要了解一些这部分。KNN是什么&#xff1f;KNN可以说是最简单的分类算法之一…

如何解决padding标记在ie7、ie6以及firefox中的兼容问题

*html 与 *html 是IE特有的标签, firefox 暂不支持.而*html 又为 IE7特有标签。所以要解决padding的兼容问题就要靠前面提到的标签。 以sccas-site为例&#xff0c;左侧导航栏在padding上产生了ie6、ie7以及ff浏览器不兼容&#xff0c;修改代码如下&#xff1a; #menu7 li a {h…

linux编译动态库之fPIC

转载&#xff1a;https://blog.csdn.net/sinc00/article/details/44833839 今天在用g编译代码时&#xff0c;提示说.rdata错误&#xff0c;然后网上找了一堆资料&#xff0c;最后明白了一个要重新编译对应的链接库。 在生成动态库时&#xff0c;常常习惯性的加上fPIC选项&…

每周一题 扫雷问题

扫雷问题 #include<iostream> #include<vector> #include<iostream> using namespace std; int direct[8][2]{ {1,0}, {1,1}, {1,-1}, {0,1}, {0,-1}, {-1,0}, {-1,1}, {-1,-1} }; int main(){int m, n, t0;while(1){cin>>m>>n;if(m0&&n…

Oracle学习笔记:通过种子数据库设置dbid为指定值

简介&#xff1a;dbms_backup_restore包真是太强大了。和设置dbid有关的存储过程如下&#xff1a; PROCEDURE nidbegin  (newdbname IN varchar2,       olddbname IN varchar2,       newdbid IN number, …

最简单的断线断点检测器电路

要在长长的电线中找到究竟是哪里断开了&#xff0c;可以做一个断线断点检测器。而且几个元器件就可以实现&#xff0c;非常简单。这个断线断点检测器不仅可以识别火线、零线&#xff0c;还可以检测电线是哪里断开了。实际是检测哪里的磁场强&#xff0c;哪里的电磁辐射大。来看…

gcc/g++ 编译时报错原因分析之expected type-specifier before

因为没有引入相应的头文件&#xff0c;找到对应的头文件&#xff0c;加入相应的cpp中即可解决。

python 文本处理2

接上文&#xff0c;我们定义了判断某行是否file copy,或者file overwrite的两个函数&#xff0c;事实上我们如果使用startswith函数代替slice&#xff0c;会更稳定。从函数式编程角度&#xff0c;我们给出下面几个表达式&#xff1a; isRegDBRoot lambda line: line[:11]…

iOStextField/textView在输入时限制emoji表情的输入

https://www.jianshu.com/p/5227e6aab4d4 2017.02.27 13:08* 字数 146 阅读 6109评论 6喜欢 14 又遇到输入框输入表情的情况了&#xff0c;之前写了一篇文章“UITextView/UITextField检测并过滤Emoji表情符号”http://www.jianshu.com/p/90d68e7e5d53,但是总觉得那两种方式都各…

声学发展史之——人工智能(AI)声学

引言最近接手了一个EOL (End of Line)的项目&#xff0c;用高斯混合模型GMM (Gaussian Mixture Model)作生产线上产品的质量检测。虽然提取特征的过程很痛苦&#xff0c;不过还是很有意思。也是因为兴趣&#xff0c;去年在Coursera上了吴恩达的Machine Learning&#xff0c;算是…

Mysql数据库存储原理

转载&#xff1a;https://blog.csdn.net/weixin_40612082/article/details/82179714 现在在做数据库服务器的开发工作&#xff0c;今天被问到存储过程&#xff0c;当时只是简单地回答了下&#xff0c;在网上搜索了下资料&#xff0c;才对存储过程有了新的认识。转载内容如下&a…

seo专题之开篇有益

想写这篇文章好久了.但一直不敢写,一怕自己技术有限误导了园子里的各位朋友.二怕自己文笔有限不能很好的表达自己的意图,但既然是抱着交流的态度来的,我还是愿意写一写这方面的文章与大家一起交流和分享,欢迎大家拍砖.做SEO没有什么高深技术可言,靠的是经验的不断累积,各位SEO高…

Rails不用localhost访问的时候很慢

修改文件/usr/lib/ruby/1.9.1/webrick/config.rb,找到:DoNotReverseLookup > nil&#xff0c;修改为:DoNotReverseLookup > true。转载于:https://blog.51cto.com/tianbymy/926589