0

0

C++程序用于通过键更新字典的值

王林

王林

发布时间:2023-08-28 22:37:06

|

1267人浏览过

|

来源于tutorialspoint

转载

c++程序用于通过键更新字典的值

许多计算机语言都提供字典,这是一种数据结构。字典是一种更快的数据结构,它基于键和值存储数据。它保留了键值组合,以便键可以几乎实时地轻松搜索某些组件。 C++ STL 语言标准包括类似字典的数据结构。术语“map”用于描述这种数据结构。该映射创建一对任意类型的键和值(由于我们使用的是 C++,因此必须在编译之前定义类型)。本节将演示如何在 C++ 中更新已存在的映射或字典中的值。

我们首先看一下地图数据结构的定义。这些内部模板需要两种不同的类型。下面显示了语法和必要的库 -

定义地图数据结构的语法

#include 
map mapVariable;

在这种情况下,我们必须导入“地图”库才能使用地图数据结构。为此需要数据类型 1 和 2。 key参数的数据类型为type1,value参数的数据类型为type2。这里从地图类型类派生的对象是mapVariable。现在让我们看看如何使用 C++ 映射来获取它。

在映射数据结构中,我们可以通过访问现有键或新键将值放入映射中。由于这里我们讨论的是更新值,因此我们必须更新现有的密钥。键将像数组索引符号一样用在方括号内。让我们看看这个的语法 -

立即学习C++免费学习笔记(深入)”;

更新地图内元素的语法

mapVariable [] = ;

算法

  • 已创建的字典或地图 D

  • 已有键值k

  • 新密钥 k 的值 v

  • 像 D[ k ] = v 一样更新

  • 返回D

示例

#include  
#include  
using namespace std;

void display( map & givenMap ){
   for ( auto& it : givenMap ) {
      cout << "Key: " << it.first << ", value: " << it.second << endl;
   }
}
   
int main(){ 
   map givenMap;
   
   givenMap = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   givenMap[ "MNOP" ] = 500; 
   display( givenMap );
}

输出

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 500
Key: QRST, value: 125

在此方法中,我们通过访问关键参数成功更新了值。然而,这个过程可能并不总是准确的。此过程有一个严重的缺点,即给定的键可能不存在于映射中。但通过使用此过程,它将插入具有给定值的新键。因此,在下一个方法中,我们将看到如何搜索并在成功搜索后更新元素。

搜索后更新

可以使用地图对象中的 find() 函数来检查地图中是否存在某个键。它将返回键的指针引用,否则,它将返回映射的“end()”指针,这表示映射不包含其中的元素。让我们看看算法和实现以便更好地理解。

weiit-saas开源电商SaaS系统
weiit-saas开源电商SaaS系统

weiit-saas是一款Java开源项目,由weiit团队自研,意在通过技术封装,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。weiit-saas是完全开源电商SaaS系统,属于weiit开源的社区版,旧版已不在维护和更新,仅供学习和参考,新版saas从底层架构到前后端UI设计已经全面优化和升级。 主要特点1、项目采用Spring+SpringMVC+Mybatis主流开源框架

下载

算法

  • 已创建的字典或地图 D

  • 已有键值k

  • 新密钥 k 的值 v

  • 创建一个迭代器对象itr来获取键值对的指针

  • 调用 find() 方法将字典 D 放入 itr

  • 如果 itr 不是 D 的末尾,则表示密钥存在,则

    • 将 v 放入 itr

  • 结束如果

示例

#include  
#include  
using namespace std;

void display( map & givenMap ){
   for ( auto& it : givenMap ) {
      cout << "Key: " << it.first << ", value: " << it.second << endl;
   }
}

void updateElement( map & givenMap, string givenKey, int newValue ){
   map ::iterator itr;
   itr = givenMap.find( givenKey );
   if( itr != givenMap.end() ){   // when item has found
      itr->second = newValue;
   }
}
   
int main(){ 
   map givenMap;
   
   givenMap = { { "ABCD", 25 },
        { "EFGH", 50 },
        { "IJKL", 75 },
        { "MNOP", 100 },
        { "QRST", 125 }
   };
   
   cout << "Before updation: " << endl;
   display( givenMap );
  
   cout << "After Updation: " << endl;
   
   //update the value of MNOP to 500
   updateElement( givenMap, "MNOP", 1580 );
   display( givenMap );
}

输出

Before updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 100
Key: QRST, value: 125
After Updation: 
Key: ABCD, value: 25
Key: EFGH, value: 50
Key: IJKL, value: 75
Key: MNOP, value: 1580
Key: QRST, value: 125

在此方法中,updateElement函数将映射、现有键和 newValue 作为输入。之后搜索该密钥。如果存在,则仅更新该值,否则只需从该函数中得出。因此,通过使用此方法,我们无法在地图中创建新条目,而只能更新现有条目。

结论

在这篇文章中,我们了解了如何使用键更新地图中的元素。在第一种方法中,我们使用直接分配方法,该方法成功更新元素,但当键尚不存在时,它也可以添加新元素。第二种方法通过一开始的简单搜索消除了这个问题。有时我们可能会注意到第二种方法需要额外的时间来搜索密钥然后更新它。因此,与第一种方法相比,它需要更多的搜索时间。但如果我们仔细思考,在第一种方法中,这一发现也本质上得到了实现。由于数据结构使用基于哈希的技术,因此它将在恒定时间内运行(在大多数情况下)。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

303

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

535

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

17

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

21

2026.01.06

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

59

2025.11.17

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

3

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 3.2万人学习

Excel 教程
Excel 教程

共162课时 | 12.3万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号