数据结构:哈希表(unordered_map)

embedded/2025/2/23 2:33:23/

unordered_map 是 C++ 标准库中的一种哈希表实现,它提供了基于键值对(key-value)的存储,提供了常数时间复杂度的查找、插入和删除键值对的操作。

初始化代码示例:

#include <unordered_map>
using namespace std;unordered_map<int, string> hashmap;   // 初始化一个空的哈希表 mapunordered_map<int, string> hashmap{{1, "one"}, {2, "two"}, {3, "three"}};// 初始化一个包含一些键值对的哈希表 map

另外,在C++哈希表中,如果被访问的是一个不存在的键,它会自动创建这个键,对应的值时默认构造的值。

 

#include <iostream>
#include <unordered_map>
using namespace std;int main() {// 初始化哈希表unordered_map<int, string> hashmap{{1, "one"}, {2, "two"}, {3, "three"}};cout << hashmap.empty() << endl;    // 检查哈希表是否为空,输出:0 (false)cout << hashmap.size() << endl;    // 获取哈希表的大小,输出:3// 查找指定键是否存在// 注意 contains 方法是 C++20 新增的// 输出:Key 2 -> twoif (hashmap.contains(2)) {cout << "Key 2 -> " << hashmap[2] << endl;} else {cout << "Key 2 not found." << endl;}cout << hashmap[4] << endl;    // 获取指定键对应的值,若不存在会返回默认构造的值// 输出空字符串hashmap[4] = "four";    // 插入一个新的键值对cout << hashmap[4] << endl;    // 获取新插入的值,输出:fourhashmap.erase(3);    // 删除键值对if (hashmap.contains(3)) {cout << "Key 3 -> " << hashmap[3] << endl;} else {cout << "Key 3 not found." << endl;}// 检查删除后键 3 是否存在// 输出:Key 3 not found.// 遍历哈希表// 输出(顺序可能不同):// 4 -> four// 2 -> two// 1 -> onefor (const auto &pair: hashmap) {cout << pair.first << " -> " << pair.second << endl;}// 特别注意,访问不存在的键会自动创建这个键unordered_map<int, string> hashmap2;// 键值对的数量是 0cout << hashmap2.size() << endl; // 0// 访问不存在的键,会自动创建这个键,对应的值是默认构造的值cout << hashmap2[1] << endl; // empty stringcout << hashmap2[2] << endl; // empty string// 现在键值对的数量是 2cout << hashmap2.size() << endl; // 2return 0;
}

 哈希集合

unordered_set 是 C++ 标准库中的一种哈希集合实现,用于存储不重复的元素,常见使用场景是对元素进行去重。

初始化示例:

#include <unordered_set>
using namespace std;unordered_set<int> uset;    // 初始化一个空的哈希集合 setunordered_set<int> uset{1, 2, 3, 4};  // 初始化一个包含一些元素的哈希集合 set

 常用操作示例:

#include <iostream>
#include <unordered_set>
using namespace std;int main() {unordered_set<int> hashset{1, 2, 3, 4};    // 初始化哈希集合cout << hashset.empty() << endl;    // 检查哈希集合是否为空,输出:0 (false)cout << hashset.size() << endl;    // 获取哈希集合的大小,输出:4// 查找指定元素是否存在// 输出:Element 3 found.if (hashset.contains(3)) {cout << "Element 3 found." << endl;} else {cout << "Element 3 not found." << endl;}// 插入一个新的元素hashset.insert(5);// 删除一个元素hashset.erase(2);// 输出:Element 2 not found.if (hashset.contains(2)) {cout << "Element 2 found." << endl;} else {cout << "Element 2 not found." << endl;}// 遍历哈希集合// 输出(顺序可能不同):// 1// 3// 4// 5for (const auto &element : hashset) {cout << element << endl;}return 0;
}


http://www.ppmy.cn/embedded/164510.html

相关文章

新版Tomcat MySQL IDEA 安装配置过程遇到的问题

一、IDEA闪退 打不开了 IDEA环境变量路径不对 二、Tomcat 一闪而过 主要是JDK环境变量不对 三、MySQL 重新安装、是否备份以及默认盘问题 看清楚教程基本没问题&#xff1a;Windows 安装配置及卸载MySQL8超详细保姆级教程_mysql8卸载-CSDN博客

Elasticsearch实战应用:从“搜索小白”到“数据侦探”的进阶之路

引言&#xff1a;Elasticsearch——数据世界的“福尔摩斯” 大家好&#xff0c;今天我们要聊的是一个在数据世界中扮演“福尔摩斯”角色的工具——Elasticsearch。如果你曾经为海量数据的搜索和分析头疼不已&#xff0c;那Elasticsearch就是你的救星&#xff01;它不仅能帮你快…

如何解决服务器被黑客爬虫攻击:全面防护与优化策略

随着互联网的普及&#xff0c;服务器常常成为黑客爬虫的目标。这些恶意爬虫可能用于数据窃取、资源滥用或发动分布式拒绝服务&#xff08;DDoS&#xff09;攻击。本文将详细介绍如何检测和应对服务器被黑客爬虫攻击的问题&#xff0c;并提供实用的代码示例。 一、黑客爬虫攻击…

ubuntu docker 安装 deepseek anythingllm/openwebui教程

全新服务器安装起始&#xff1a; 1. 安装ubuntu到服务器中 2. 安装docker 安装教程 ubuntu 安装 docker详细教程_ubuntu安装教程docker-CSDN博客 3. 安装 ollama docker pull ollama/ollama 3.1 创建 存储目录 &#xff08;示例放在/home/ollama中&#xff09; cd /home/ …

react(9)-redux

使用CRA快速创建react项目 npx create-react-app react-redux 安装配套工具 npm i reduxjs/toolkit react-redux 启动项目 在创建项目时候会出现一个问题 You are running create-react-app 5.0.0, which is behind the latest release (5.0.1). We no longer support…

芯麦GC1808立体声ADC芯片解析:高性价比与全集成音频采集方案

引言 在直播设备、智能语音终端等新兴应用的推动下&#xff0c;高性能音频采集系统的需求持续增长。芯麦半导体推出的GC1808立体声音频模数转换器&#xff0c;凭借其全集成信号链设计和灵活的接口配置&#xff0c;为开发者提供了高性价比的音频前端解决方案。本文将从核心架构…

(萌新入门)如何从起步阶段开始学习STM32 —— 1如何迁移一个开发版的工程

目录 前言 如何迁移一个开发版的工程到其他单片机上&#xff1f; Step 1&#xff1a;明确你单片机的型号 STEP2 确定环境后移植代码 提示&#xff1a;正常而言&#xff0c;我们是使用的套模板建立工程 提示&#xff1a;笔者自身不使用这些模板&#xff0c;我是使用CubeMX快…

一键提取人声 、伴奏 免费人声、伴奏 音频分离软件分享——UVR5下载安装教程

引言 在处理视频及音频编辑的过程中&#xff0c;人声与伴奏的分离是一项广受欢迎且实用的功能&#xff0c; 但是市面上大多人声分离软件都需付费。今天要分享的是Ultimate Vocal Remover 5 (UVR5)&#xff0c;一款跨平台&#xff08;Windows、Mac、Linux&#xff09;的专业音频…