当前位置: 首页 > wzjs >正文

网站字体字号移动软件开发专业

网站字体字号,移动软件开发专业,做淘宝要用到哪些网站,天天新品网做网站unordered_map 与 map 的区别和联系 一、两者的联系 都属于 C 标准库容器:二者均用于存储键值对(key-value pairs),允许通过键快速查找对应的值。基本功能相似:都支持插入(insert)、删除&…

unordered_map 与 map 的区别和联系

一、两者的联系
  • 都属于 C++ 标准库容器:二者均用于存储键值对(key-value pairs),允许通过键快速查找对应的值。
  • 基本功能相似:都支持插入(insert)、删除(erase)、查找(find)、修改值等操作,且键具有唯一性(不能重复)。
二、核心区别
1. 数据结构与实现原理
特性mapunordered_map
底层数据结构红黑树(平衡二叉搜索树)哈希表(哈希桶数组 + 链表 / 红黑树)
元素排序按键的有序性自动排序(默认升序)元素无序,按键的哈希值存储
2. 时间复杂度
操作mapunordered_map
查找(find)O(log n)平均 O (1),最坏 O (n)(哈希冲突严重时)
插入(insert)O(log n)平均 O (1),最坏 O (n)
删除(erase)O(log n)平均 O (1),最坏 O (n)
3. 内存占用与性能
  • map:红黑树需要额外存储节点指针和平衡因子,内存占用较高,但查找时间稳定。
  • unordered_map:哈希表需要存储哈希函数和桶数组,若哈希冲突频繁(如链表过长),性能可能下降,但平均效率更高。
4. 有序性与遍历顺序
  • map:遍历顺序与键的排序顺序一致(按红黑树中序遍历)。
  • unordered_map:遍历顺序由哈希值和桶的位置决定,与插入顺序无关,每次遍历顺序可能不同。
5. 键的要求
  • map:键需要支持比较运算符(默认用 < 排序),或用户自定义比较函数。
  • unordered_map:键需要支持哈希函数(需提供 hash<Key> 模板特化)和相等运算符(==)。
三、使用场景示例
示例 1:需要有序性的场景
#include <iostream>
#include <map>
using namespace std;int main() {// 统计单词出现次数并按字母顺序输出map<string, int> wordCount;string words[] = {"apple", "banana", "apple", "cherry", "banana", "date"};for (const string& word : words) {wordCount[word]++;  // 插入或更新计数}// 遍历map会按单词字母顺序输出cout << "按字母顺序统计单词出现次数:" << endl;for (const auto& pair : wordCount) {cout << pair.first << ": " << pair.second << endl;}return 0;
}

输出结果

按字母顺序统计单词出现次数:
apple: 2
banana: 2
cherry: 1
date: 1
示例 2:追求高效查找的场景
#include <iostream>
#include <unordered_map>
using namespace std;int main() {// 学生ID与姓名的快速映射(ID无顺序需求)unordered_map<int, string> studentMap;// 插入数据(假设ID是随机的)studentMap.insert({1003, "张三"});studentMap.insert({1001, "李四"});studentMap.insert({1002, "王五"});studentMap.insert({1005, "赵六"});// 快速查找int searchId = 1002;auto it = studentMap.find(searchId);if (it != studentMap.end()) {cout << "ID " << searchId << " 的学生姓名是:" << it->second << endl;} else {cout << "未找到ID为 " << searchId << " 的学生" << endl;}// 遍历unordered_map(顺序不确定)cout << "所有学生信息(顺序不固定):" << endl;for (const auto& pair : studentMap) {cout << "ID: " << pair.first << ", 姓名: " << pair.second << endl;}return 0;
}

可能的输出结果(每次运行顺序可能不同):

ID 1002 的学生姓名是:王五
所有学生信息(顺序不固定):
ID: 1003, 姓名: 张三
ID: 1001, 姓名: 李四
ID: 1002, 姓名: 王五
ID: 1005, 姓名: 赵六
四、选择建议
  • 优先使用 unordered_map:当需要快速查找(平均 O (1) 效率),且键的顺序无关紧要时(如缓存、哈希表场景)。
  • 使用 map
    • 当需要键的有序性(如按字母顺序排序、按数值大小排序)。
    • 当对最坏情况下的查找时间有严格要求(unordered_map 可能因哈希冲突出现 O (n) 情况)。
    • 当需要范围查找(如查找大于某个键的所有元素,map 支持迭代器范围操作)。

文章转载自:

http://Zsw8QUK1.tsnwf.cn
http://93S8yMWS.tsnwf.cn
http://4CAN7Ps9.tsnwf.cn
http://IYvAUHeM.tsnwf.cn
http://T5uETERt.tsnwf.cn
http://jFRr2Juw.tsnwf.cn
http://jOAhq8lE.tsnwf.cn
http://odDQcDtK.tsnwf.cn
http://oU4HCSzl.tsnwf.cn
http://7hyvBXef.tsnwf.cn
http://htXfGsRW.tsnwf.cn
http://B9ho9sEQ.tsnwf.cn
http://VRSkVbbP.tsnwf.cn
http://92rciNUz.tsnwf.cn
http://SY3MlPIk.tsnwf.cn
http://XCMDYrzH.tsnwf.cn
http://BkRNVz9u.tsnwf.cn
http://aFUC3WIk.tsnwf.cn
http://HMgBOcOh.tsnwf.cn
http://PwyqZHSo.tsnwf.cn
http://TFImRM58.tsnwf.cn
http://dF3gEIZ9.tsnwf.cn
http://Bb7rbp2C.tsnwf.cn
http://3pFf74xK.tsnwf.cn
http://0xam3Fhy.tsnwf.cn
http://Q8nHjbPG.tsnwf.cn
http://pnwUa8ry.tsnwf.cn
http://QoIotCmZ.tsnwf.cn
http://cKipAgmR.tsnwf.cn
http://5HBSUtun.tsnwf.cn
http://www.dtcms.com/wzjs/722647.html

相关文章:

  • 网站建设国家和行业标准长沙最好玩的地方排名
  • wordpress怎样增加移动端莱阳seo外包
  • vps网站打开速度调节洛阳网站备案
  • 科技因子网站建设方案ps做网站字号大小
  • 上传网站模板品牌建设简介
  • 有没有做定制衣服的网站网站的互动功能
  • 沈阳建站免费模板宁波个人网站建设
  • 国内网站空间推荐wordpress怎么重新初始化
  • 做分析图超牛的地图网站南通专业制作网站
  • 厚街镇做网站网站假设公司排名
  • 事业单位网站建设的账务处理人力资源公司加盟合作
  • 南宁做自适应网站精品课程建设网站清单
  • 网站规划建设论文广州网站建设 易企建站公司
  • 随州网站建设哪家实惠网站建设通俗讲
  • 做的非常好的网站案例网站建设课程培训
  • 网站做跳转教程2022年编程语言官方排行榜
  • 金融投资网站开发企业网站背景图片
  • 江门网站建设推广平台网站开发所需的技术
  • 网站每月流量不让人看出wordpress建的站
  • 建设标准下载网站网站开发是先做前段还是后台
  • 网站虚拟空间更新缓存住房和城乡建设管理局
  • 网站建设合同属于技术服务合同吗wordpress网站移植
  • 广东粤建设计院网站开网站赚钱吗
  • 网站建设亿玛酷适合5正规的南昌网站建设
  • 本地网站有什么可以做vs做网站如何放背景图
  • 免费1级做爰片在线观看 历史网站网站建设岗位绩效
  • 成都sw网站建设网站建设及编辑岗位职责
  • 游戏网站开发实验报告用户搭建网站
  • 一流的镇江网站建设做信息浏览的网站策划案
  • 给别人做网站要问什么问题WordPress智能友链审核