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

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: 25Key: EFGH, value: 50Key: IJKL, value: 75Key: MNOP, value: 100Key: QRST, value: 125After Updation: Key: ABCD, value: 25Key: EFGH, value: 50Key: IJKL, value: 75Key: MNOP, value: 500Key: QRST, value: 125

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

搜索后更新

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

算法

已创建的字典或地图 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: 25Key: EFGH, value: 50Key: IJKL, value: 75Key: MNOP, value: 100Key: QRST, value: 125After Updation: Key: ABCD, value: 25Key: EFGH, value: 50Key: IJKL, value: 75Key: MNOP, value: 1580Key: QRST, value: 125

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

结论

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

以上就是C++程序用于通过键更新字典的值的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:47:45
下一篇 2025年12月17日 20:48:08

相关推荐

  • 在C程序中,使用二分查找算法来搜索有理数,而不使用浮点数算术

    在这个问题中,我们得到了一个有理数的排序数组。我们必须使用二分搜索算法来搜索该有理数数组的给定元素,而不使用浮点运算。 有理数是以 p/q 形式表示的数字,其中p 和 q 都是整数。例如,⅔、⅕。 二分搜索是一种搜索技术,通过查找数组的中间来查找元素。 用于查找使用二分法搜索有理数排序数组中的元素,…

    2025年12月17日
    000
  • 寻找二次方程的根的C程序

    In this tutorial, we will be discussing a program to find the roots of the Quadratic equation. Given a quadratic equation of the form ax2 + bx + c. Ou…

    2025年12月17日
    000
  • C程序在一个单一数组上执行两个半部分的操作

    问题 编写一个程序来接受一个由N个元素组成的一维数组,并将其分成两半。稍后,将前半部分按升序排序,后半部分按降序排序。 解决方案 在单个数组中对两个半部分执行两次操作的解决方案C语言解释如下 – 前半部分升序排序的逻辑如下 – for (i=0; i<b; ++i){ …

    2025年12月17日
    000
  • 使用C程序进行线程同步,按顺序打印数字

    给定线程,程序必须根据它们的优先级从0到10打印线程。 什么是线程? 线程是在程序内部运行的轻量级进程。一个简单的程序可以包含n个线程。 与Java不同,C/C++语言标准不支持多线程,POSIX线程(Pthreads)是C/C++中多线程的标准。C语言不包含任何内置的多线程应用程序支持,而是完全依…

    2025年12月17日
    000
  • 使用正则表达式的C++程序打印每个单词的首字母

    A useful tool for string operations is regex. This may be found in virtually all high-level当前的编程语言,包括C++。正则表达式(Regex)被用作通用搜索模式。例如,通过构建一个简单的字符串被称为正则表达式…

    2025年12月17日
    000
  • 使用赋值运算符计算带税金额的C程序

    问题 编写一个 C 程序,输入美元金额,然后添加 18% 的税金来显示金额。 解决方案 让我们考虑餐厅人员在顾客的每张账单上加收 18% 的税。 用于计算税的逻辑是 – value=(money + (money * 0.18)); 这笔钱应该乘以18%并添加到钱中,然后餐厅人员可以从顾…

    2025年12月17日
    000
  • C++程序来计算给定弧度值的双曲正弦

    普通三角函数类似于双曲函数,它们是使用双曲线而不是圆来定义的。在双曲几何中,双曲函数用于计算角度和距离。此外,它们还出现在许多线性微分方程、三次方程等的答案中。对于给定的角度$theta$。双曲正弦函数 sinh$(theta)$ 如下所示。 $$mathrm{sinh(x):=:frac{e^x:…

    2025年12月17日
    000
  • C++程序以找到给定值的反正切

    我们在三角学中最常使用的比率包括正弦、余弦、正切等等。您可以使用角度来计算这些比率。如果我们知道比率值,我们还可以使用反三角函数计算角度。 本课程将向您展示如何使用 C++ 的反正切 (arctan) 函数,使用正切值(以弧度为单位)计算角度。 atan() 函数 使用 atan() 技术和反三角正…

    2025年12月17日
    000
  • C程序计算线性回归

    问题 编写一个程序来实现线性回归算法。 用户需要输入总共的数值个数。 解决方案 使用C编程语言计算线性回归的解决方案如下: 线性回归通过将线性方程与观测数据相连接来找到两个变量之间的关系。一个变量是解释变量,另一个是因变量。 关于线性回归的逻辑如下所述: for(i=0;i<n;i++){ p…

    2025年12月17日
    000
  • c程序是由什么构成

    c程序是由函数构成,是由一个main函数和若干个其他函数构成的。函数是C程序的基本单位,被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己定义的函数。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C源程序是由函数组成的。函数是C程序的基本单位,被调用的函数可以是…

    2025年12月17日
    000
  • c程序如何编写x的y次方

    c程序编写x的y次方的方法:首先新建一个c语言的工程文件;然后定义两个参数n和k,分别表示输入的数和要求的次方数;最后用递归的方式将n乘以不断减小的k即可完成n次方的计算。 本文操作环境:windows7系统,Dell G3电脑/C11。 c程序怎么编写x的y次方? 新建一个c语言的工程文件,引入头…

    2025年12月17日 好文分享
    000
  • c语言程序总是从main函数开始执行吗?

    是的,一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中可以调用程序中的其他函数,而其他函数却不可以调用main函数;程序最后再从main函数中结束。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 C程序的执行总是从main函数开始,在main函…

    2025年12月17日
    000
  • 一个c程序的执行是从哪里开始到哪里结束

    一个C程序的执行是从main函数开始到main函数结束。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性。 本文操作环境:windows10系统、thinkpad t480电脑。 一个C程序的执行是从main函数开始到…

    2025年12月17日
    000
  • C程序的完整开发过程包括哪几步

    C程序的完整开发过程包括:1、编辑;2、编译;3、连接;4、运行。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。 开发一个C语言程序需要经过的四个步骤:编辑、编译、连接、运行。 (相关推荐:java课程) C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。…

    2025年12月17日
    000
  • c程序的执行是从什么开始到什么结束?

    C程序的入口是main函数,一般来说只要是正常运行结束的都是从main函数的第一句话开始,最后一句结束。 例如: int main()//程序开始{printf(“Hello!n”);return 0;//程序结束,返回值} 但如果程序执行到中间遇到 return(main函数里的) exit(不管…

    2025年12月17日 好文分享
    000
  • 一个c程序的执行是从什么开始到什么结束

    一个c程序的执行是从“main()”函数开始到“main()”函数结束,但是当代码中出现了exit函数,则是直接结束程序。 推荐:《c语言教程》 一个c程序的执行是从main()函数开始到main()函数结束。 一个C语言的执行是从本程序的main函数开始,到main函数结束,但需要注意的是,也是有…

    2025年12月17日
    000
  • c程序中宏展开是在什么时候进行的?

    c程序中宏展开是在什么时候进行的? 宏展开是在预处理阶段进行的。 C程序由源程序变为可执行文件的三个阶段是: 预处理阶段,由预处理器对程序文本中的宏进行展开。 编译阶段,由编译器对经过预处理后的程序进行编译,并生成目标文件 链接阶段,则链接器对目标文件和用到的函数库文件进行链接,生成可执行文件。 因…

    2025年12月17日
    000
  • C程序总是以main函数作为程序执行的起始行,对么

    c程序总是以main函数作为程序执行的起始行,对。 (推荐教程:C语言教程) 一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中可以调用程序中的其他函数,而其他函数却不可以调用main函数。程序最后再从main函数中结束。 main函数介绍: main函数,又称主函数,是…

    2025年12月17日
    000
  • 用c程序实现的算法必须要有输入个输出操作吗

    用c程序实现的算法必须要有输入个输出操作吗? 用C程序实现的算法可以没有输入但必须要有输出! 算法具有的5个特性是:有穷性;确定性;可行性;有0个或多个输入;有一个或多个输出。所以说,用C程序实现的算法可以没有输入但必须要有输出。 推荐:《c语言教程》 C语言是目前世界上最流行、使用最广泛的面向过程…

    2025年12月17日
    000
  • vscode配置编译运行c程序的环境

    背景: 1、VS Code只是一个代码编辑器,编译、运行这些活需要其他程序完成。 2、C/C++ 编译器的选择,GCC/G++(MinFGW-w64) 3、MinGW和MinGW-w64是两个不同的项目。MinGW本身已经很久没有更新了,故不推荐。为了方便,本文中的MinGW指的其实都是MinGW-…

    2025年11月27日 开发工具
    100

发表回复

登录后才能评论
关注微信