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

c++ STL库 unordered_map

#include <iostream
#include <string
#include <unordered_map

int main() {
// 创建一个 unordered_map
std::unordered_map<std::string, int> wordCount;

// 插入元素
wordCount["apple"] = 1;
wordCount["banana"] = 2;// 使用 insert 方法插入键值对
wordCount.insert({ "orange", 3 });// 访问元素
std::cout << "Count for 'apple': " << wordCount["apple"] << std::endl;// 检查键是否存在
if (wordCount.find("banana") != wordCount.end()) {std::cout << "'banana' is in the map." << std::endl;
}// 遍历 unordered_map
std::cout << "All elements in unordered_map:" << std::endl;
for (const auto& pair : wordCount) {std::cout << pair.first << ": " << pair.second << std::endl;
}// 修改元素
wordCount["apple"] = 5;// 删除元素

wordCount.erase(“orange”);

return 0;

}

————————————————————————
代码可以大聪明写,
解释和描述 自己敲一波:

1、auto 让编译器 自己对 pair进行类型推导,可以是int 、char等。避免复杂类型声明。
2、const 是修饰pair,以防遍历过程中 键、值 任何被修改。

3、&表示引用,pair去引用 容器中的元素,避免拷贝。const &,引用形式访问,并且不被修改,速度快。

4、用范围基(range-based) for循环 遍历 map:

for(const auto& pair: &wordCount)
{cout<< pair.first<<pair.second<<endl;
}
first 、 second 分别对应键、值,

范围基 for 循环是 简单的循环语法,遍历容器所有元素。不用显式 使用迭代器或者索引。
用法:
for (declaration : expressin)
statement;

declaration:用于声明一个变量,这个变量将被用于访问容器中的每个元素。在遍历期间,这个变量会逐个绑定到容器中的所有元素。此处为pair。
expression:通常是一个容器或数组,表示要遍历的集合。 此处为wordCount
statement:在循环体中执行的语句,每次迭代都会执行。此处为cout<< pair.first<<pair.second<<endl;

5、pair是 map的 每个迭代器 指向的元素的引用 。即为对 unordered_map 存储的 std::pair<const std:;string,int >对象的引用。
迭代器被用来遍历容器,类似指针,但是自身不暴漏给循环结构。如果非得显式使用 如下 it是迭代器 ->访问键、值:

for(auto it = wordCount.begin(); it !=wordCount.end();++it)
{
std::cout<< it->first<<“:”<sencond<<endl;
}

6、std::unordered_map<std::string, int> wordCount;

尖括号<>  是模板编程核心语法元素。
定义c++ 的模板 或者 实例的类型,告诉编译器 要用 特定类型实例化 模板。

此处定义 wordCount 变量,键类型为string 值类型为int。

7、 visual studio 2022 IDE

直接打开新建 c++ 空项目,项目 源文件上 右键 新建 xx.cpp文件。
运行 结果如下:

Count for ‘apple’: 1
‘banana’ is in the map.
All elements in unordered_map:
apple: 1
banana: 2
orange: 3

C:\Users\hpl\source\repos\heima\x64\Debug\heima.ex (进程 16832)已退出,代码为 0。
按任意键关闭此窗口. . .

http://www.lryc.cn/news/453131.html

相关文章:

  • 【接口测试】任务1:登录接口
  • 二、Spring Boot集成Spring Security之实现原理
  • 基于深度学习的点云处理模型PointNet++学习记录
  • Javascript Object.assgin()详解以及深浅拷贝
  • Redis篇(应用案例 - UV统计)(持续更新迭代)
  • 解锁微信小程序新技能:ECharts动态折线图搭配WebSocket,数据刷新快人一步!
  • 上交所服务器崩溃:金融交易背后的技术隐患暴露杭州BGP高防服务器43.228.71.X
  • P4、P4D、HelixSwarm 各种技术问题咨询
  • Linux 应用层协议HTTP
  • Python和C++混淆矩阵地理学医学物理学视觉语言模型和算法模型评估工具
  • HTTP 协议的基本格式和 fiddler 的用法
  • 【计算机网络】详解UDP协议格式特点缓冲区
  • 网络安全cybersecurity的几个新领域
  • android 原生加载pdf
  • MAE(平均绝对误差)和std(标准差)计算中需要注意的问题
  • 03实战篇:把握667分析题的阅读材料、题目
  • C++系列-多态
  • 基于C++和Python的进程线程CPU使用率监控工具
  • fish-speech语音大模型本地部署
  • 如何写出更牛的验证激励
  • EasyCVR视频汇聚平台:解锁视频监控核心功能,打造高效安全监管体系
  • 面对大文件(300G以上)如何加速上传速度
  • 基于 Redis 实现消息队列的深入解析
  • C++(string类的实现)
  • nrf 24l01使用方法
  • C语言普及难度三题
  • 10.4每日作业
  • 日常工作记录:服务器被攻击导致chattr: command not found
  • 多线程-初阶(1)
  • Spring Boot集成encache快速入门Demo