c++字典

在C++中,“字典”通常指的是std::map或std::unordered_map,它们是标准库中提供的关联容器,用于存储键值对。以下是一些常见的操作示例,包括插入、访问、删除和遍历元素。

使用 std::map std::map 是一种有序的关联容器,键值对按键排序。

#include <iostream>
#include <map>int main() {// 创建一个map,键是字符串,值是整数std::map<std::string, int> dictionary;// 插入元素dictionary["apple"] = 1;dictionary["banana"] = 2;dictionary["orange"] = 3;// 访问元素std::cout << "apple: " << dictionary["apple"] << std::endl;// 检查键是否存在if (dictionary.find("banana") != dictionary.end()) {std::cout << "banana exists with value: " << dictionary["banana"] << std::endl;} else {std::cout << "banana does not exist" << std::endl;}// 遍历所有元素for (const auto& pair : dictionary) {std::cout << pair.first << ": " << pair.second << std::endl;}// 删除元素dictionary.erase("orange");// 尝试访问已删除的元素if (dictionary.find("orange") == dictionary.end()) {std::cout << "orange has been deleted" << std::endl;}// 清空mapdictionary.clear();return 0;
}

使用 std::unordered_map std::unordered_map
是一种无序的关联容器,基于哈希表实现,查找、插入和删除操作平均时间复杂度为O(1)。

#include <iostream>
#include <unordered_map>int main() {// 创建一个unordered_map,键是字符串,值是整数std::unordered_map<std::string, int> dictionary;// 插入元素dictionary["apple"] = 1;dictionary["banana"] = 2;dictionary["orange"] = 3;// 访问元素std::cout << "apple: " << dictionary["apple"] << std::endl;// 检查键是否存在if (dictionary.find("banana") != dictionary.end()) {std::cout << "banana exists with value: " << dictionary["banana"] << std::endl;} else {std::cout << "banana does not exist" << std::endl;}// 遍历所有元素for (const auto& pair : dictionary) {std::cout << pair.first << ": " << pair.second << std::endl;}// 删除元素dictionary.erase("orange");// 尝试访问已删除的元素if (dictionary.find("orange") == dictionary.end()) {std::cout << "orange has been deleted" << std::endl;}// 清空unordered_mapdictionary.clear();return 0;
}

总结

std::map:键值对按键排序,适用于需要保持顺序的场景。例如,如果你需要按字母顺序遍历元素。
std::unordered_map:键值对无序,但查找、插入和删除速度更快,适用于不需要顺序的场景。例如,如果你只需要快速查找、插入和删除元素。
两种容器在实际使用中的选择依赖于具体需求,例如是否需要键的有序性和性能要求等。如果需要按键排序,可以使用std::map;如果更关注性能且不需要有序性,可以选择std::unordered_map。

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

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

相关文章

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(三)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

【基础篇】第1章 Elasticsearch 引言

1.1 Elasticsearch简介 1.1.1 基本概念 Elasticsearch&#xff0c;一个开源的分布式搜索引擎&#xff0c;以其强大的搜索能力和实时数据分析能力&#xff0c;在大数据时代脱颖而出。它基于Apache Lucene库构建&#xff0c;旨在提供高效、可扩展且易于使用的全文检索解决方案。…

关于Mac mini 10G网口的问题

问题: 购入一个10G网口的Mac mini M2&#xff0c;将其和自己的2.5G交换机连接&#xff0c;使用共享屏幕进行远程操作的过程中出现了频率极高的卡顿&#xff0c;几乎是几秒钟卡一下&#xff0c;使用ping进行测试发现卡的时候就ping不通了。测试使用Mac mini的无线网和雷电转2.5G…

React Native 开发常见问题及注意事项

本文只是使用时积累的一些经验 开发环境 1、Android Studio 依赖项下载慢 如果发现依赖下载非常慢&#xff0c;动不动十几KB的 参考&#xff1a;加速 Android Studio 依赖项下载 也可以切换数据源 修改 android/build.gradle中的jcenter()和google() repositories {// goo…

人脑计算机技术与Neuroplatform:未来计算的革命性进展

引言 想象一下&#xff0c;你在某个清晨醒来&#xff0c;准备开始一天的工作&#xff0c;而实际上你的大脑正作为一台生物计算机的核心&#xff0c;处理着大量复杂的信息。这并非科幻电影的情节&#xff0c;而是人脑计算机技术即将带来的现实。本文将深入探讨FinalSpark公司的…

【BFS】【并查集】个人练习-Leetcode-815. Bus Routes

题目链接&#xff1a;https://leetcode.cn/problems/bus-routes/description/ 题目大意&#xff1a;给出一系列公交车路线routes[][]&#xff0c;每条路线上有一系列车站&#xff0c;可以搭乘同一班公交车经过这些车站。给出起点车站和终点车站&#xff0c;求最小的需要搭乘的…

选择适合你的8款原型设计工具

随着互联网的飞速发展&#xff0c;设计行业逐渐成为近年来的热门职业。设计师们需要的掌握的技能也越来越多&#xff0c;例如海报设计、名片设计、产品设计、网页设计等。产品原型设计就是产品设计中非常重要的一个阶段&#xff0c;主要目的是帮助用户更容易了解产品设计的思路…

深度学习 —— 1.单一神经元

深度学习初级课程 1.单一神经元2.深度神经网络3.随机梯度下降法4.过拟合和欠拟合5.剪枝、批量标准化6.二分类 前言 本套课程仍为 kaggle 课程《Intro to Deep Learning》&#xff0c;仍按之前《机器学习》系列课程模式进行。前一系列《Keras入门教程》内容&#xff0c;与本系列…

impdp导入数据ORA-39142: 版本号 5.1不兼容错误

impdp导入数据ORA-39142: 版本号 5.1不兼容错误 1、错误现象 Import: Release 12.1.0.1.0 - Production on 星期三 6月 26 17:07:49 2024Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.连接到: Oracle Database 12c Enterprise Edition Rel…

基于FLAC3D的边坡稳定性动力分析——地震工况

基于FLAC3D的边坡稳定性动力分析——地震工况 参考张迎宾教授的文章——论文复现 Paper : Numerical Simulation of Seismic Slope Stability Analysis Based on Tension-Shear Failure Mechanism new config dyn set dynamic off restore zhang.sav def velE=77.88e6mu=0.3…

记录一个问题

问题描述 如果一个物料既在A总成零件号下计算为托盘库&#xff0c;在B总成零件号下计算为箱库&#xff0c;则放于箱库。 A中选择排名第21的递补进托盘库。&#xff08;也需要判断递补的是否在其他总成零件中为箱库&#xff0c;是的话继续递补判断&#xff09; 解决思路 为了…

13018.CUDA工程配置GDB调试

文章目录 1 工程CMakeLists.txt2 vscode配置launch.json,settings.json,tasks.json文件 1 工程CMakeLists.txt cmake_minimum_required(VERSION 3.8) # 根据你的CMake版本调整 # 设置项目名称 project(ez_compower_upward VERSION 0.1 LANGUAGES CXX CUDA)find_package(CUDA …

【机器学习】Whisper:开源语音转文本(speech-to-text)大模型实战

目录 一、引言 二、Whisper 模型原理 2.1 模型架构 2.2 语音处理 2.3 文本处理 三、Whisper 模型实战 3.1 环境安装 3.2 模型下载 3.3 模型推理 3.4 完整代码 3.5 模型部署 四、总结 一、引言 上一篇对​​​​​​​ChatTTS文本转语音模型原理和实战进行了讲解&a…

【语义分割系列】基于cityscape的DDRNet算法

基于cityscape的DDRNet算法 前言 DDRNet是专门为实时语义分割设计的高效主干。该模型由两个深度分支组成,在这两个分支之间执行多次双边融合,并且还设计了一个新的上下文信息抽取器,名为深度聚合金字塔池模块(DAPPM),用于扩大有效的接受域,并基于低分辨率特征映射融合…

计算机网络——数据链路层(数据链路层概述及基本问题)

链路、数据链路和帧的概念 数据链路层在物理层提供服务的基础上向网络层提供服务&#xff0c;其主要作用是加强物理层传输原始比特流的功能&#xff0c;将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据链路&#xff0c;使之对网络层表现为一条无差错的链路。 链路(…

Steam夏促史低游戏推荐 Steam夏促哪有游戏值得入手

steam夏季促销来袭&#xff0c;有这很多的游戏都进行打折出售&#xff0c;而且还有这很多的游戏都迎来了史低&#xff0c;简直是白送&#xff0c;很多玩家都想趁着这个时间入手自己喜欢的游戏&#xff0c;为了方便大家了解&#xff0c;下面我给大家带来steam夏季促销史低的游戏…

CO-DETR利用coco数据集训练和推理过程

CO-DETR利用coco数据集训练和推理过程&#xff0c;参考链接 Co-DETR训练自己的数据集 文章目录 前言训练过程推理过程总结 前言 环境&#xff1a;PyTorch 1.11.0 Python 3.8(ubuntu20.04) Cuda 11.3 先是在github上下载CO-DETR模型 !git clone https://github.com/Sense-X/Co…

[C++深入] --- vector容器浅析

vector是一个封装了动态大小数组的顺序容器,它能够存放各种类型的对象。 可以删除元素、可以插入元素、可以查找元素,做这些工作我们无需管理容器内存。容器内存管理,这种脏活累活全部交由vector管理。了解一下vector的内存管理策略,能够更加充分的利用内存。 1 vector内存…

陌陌笔试--并发打印文件内最有钱的老板的消费金额(算法)

题目&#xff1a; 算法中需要打印消费前十老板的消费金额&#xff0c;解决保留两位小数&#xff0c;并发是 JAVA 中的常考题&#xff0c; 我这里简单模拟下了数据&#xff0c;关键数据是用户id和消费金额。 解题思路&#xff1a; 1. 最简单的思路是单线程&#xff0c;偷懒…

【面试系列】Go 语言高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…