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程序将一个文件的内容复制到另一个文件中

    C文件I/O − 创建、打开、读取、写入和关闭文件 C文件管理 文件可用于存储大量持久数据。像许多其他语言一样,’C’提供以下文件管理函数: 创建文件打开文件读取文件向文件写入关闭文件 以下是’C’中最重要的文件管理函数: 函数 目的 fopen ()…

    2025年12月17日
    000
  • C程序按字母顺序排序姓名

    用户必须输入姓名的数量,并且这些姓名需要使用strcpy()函数按字母顺序排序。 字符数组(或字符集合)被称为字符串。 声明 以下是数组的声明: char stringname [size]; 例如,char string[50]; 长度为50个字符的字符串。 初始化 使用单个字符常量 char s…

    2025年12月17日
    000
  • 循环调度的C程序

    we are given with the n processes with their corresponding burst time and time quantum and the task is to find the average waiting time and average tu…

    2025年12月17日
    000
  • 使用冒泡排序算法对给定的数字列表进行升序排序的C程序

    在 C 编程语言中,冒泡排序是最简单的排序技术,也称为交换排序。 冒泡排序过程 将第一个元素与列表中的其余元素进行比较,如果它们不按顺序进行交换(交换)。 对列表中的其他元素重复相同的操作列表,直到所有元素都已排序。 算法 下面给出的是一种算法,通过使用冒泡排序技术 – 第 1 步 &#…

    2025年12月17日
    000
  • C程序打印带有当前时间的数字时钟

    在本节中,我们将了解如何使用 C 语言制作数字时钟。要处理时间,我们可以使用 time.h 头文件。该头文件有一些函数签名,用于处理日期和时间相关问题。 time.h 的四个重要组成部分如下 size_t 这个 size_t 基本上是无符号整数类型。这是sizeof()的结果。 clock_t用于存…

    2025年12月17日
    000
  • C程序使用rename()函数更改文件名

    rename函数将文件或目录从旧名称更改为新名称。此操作类似于移动操作。因此,我们也可以使用此rename函数来移动文件。 此函数存在于stdio.h库头文件中。 rename函数的语法如下: int rename(const char * oldname, const char * newname…

    2025年12月17日
    000
  • C程序示例,演示fork()和pipe()函数

    在本题中,我们将演示fork()和pipe()。在这里,我们将为 Linux 创建一个 C 程序,该程序将连接两个字符串,使用 2 个进程,其中一个进程将获取输入并将其发送给其他进程,其他进程将字符串与预定义的字符串连接起来并返回连接后的字符串。 第一让回顾一下fork()和pipe() fork(…

    2025年12月17日
    000
  • 不会在按下Ctrl+Z时暂停的C程序

    在编程中,当程序出现故障并在终端编译器中以异常方式运行时,程序员有权利显式停止程序的运行。要显式停止程序,用户必须知道需要按下的正确键盘快捷键。 为了终止代码块的执行,有两种类型的键盘快捷键被使用。 Ctrl+c – 用于停止程序的执行,它需要一些时间来完成输入/输出操作,然后暂停执行。…

    2025年12月17日
    000
  • C程序检查日期是否有效

    给定的日期格式为日期、月份和年份(整数)。任务是确定该日期是否可行。 有效日期范围应为 1/1/1800 – 31/12/9999,超出这些日期的日期无效。 这些日期不仅包含年份范围,还包含与日历日期相关的所有约束。 约束是 – 日期不能是小于 1 且大于 31月份不能小于 1 且大于 …

    2025年12月17日
    000
  • 递归插入排序的C程序

    插入排序是一种排序算法,它是一种基于就地比较的算法。 该算法的工作原理是将元素放置在已排序子数组中的位置,即元素之前的子数组是排序子数组。 算法 Step1 – 从 1 到 n-1 循环并执行 – Step2 .1 – 选择位置 i 处的元素,array[i]。 …

    2025年12月17日
    000
  • 六边形图案的C程序

    我们被给定一个整数’n’,任务是生成六边形图案并显示最终输出。 示例 Input-: n=5Output-: Input-: n = 4Output-: Approach we are using in the given program is as follows − In…

    2025年12月17日
    000
  • 一个使用C程序的谜题

    这里我们将看到一道 C 谜题。假设我们有两个数字 48 和 96。我们必须将第一个数字添加到第二个数字之后。所以最终的结果将是9648。但是我们不能使用任何逻辑、算术、字符串相关的操作,也不能使用任何预定义的函数。那么我们怎样才能做到这一点呢? 这很简单。我们可以通过在 C 中使用 Token Pa…

    2025年12月17日
    000
  • C程序实现欧几里得算法

    问题 实现欧几里得算法来查找两个整数的最大公约数 (GCD) 和最小公倍数 (LCM),并将结果与​​给定整数一起输出。 解决方案 实现欧几里得算法求两个整数的最大公约数 (GCD) 和最小公倍数 (LCM) 的解决方案如下 – 求 GCD 和 LCM 的逻辑如下 – if(…

    2025年12月17日
    000
  • 用动态链表存储汽车信息的C程序

    链接列表使用动态内存分配,即它们相应地增长和收缩。它是节点的集合。 节点有两部分,如下所示 – 数据链接 链表的类型 C 语言中链表的类型如下 – 单链表/单链表列表双链表循环单链表循环双链表 算法 参考下面给出的算法,使用动态链表存储汽车信息。 步骤 1 – 声…

    2025年12月17日
    000
  • C程序以PGM格式写入图像

    pgm 是便携式灰度地图。如果我们想在 c 中将二维数组存储为 png、jpeg 或任何其他图像格式的图像,则在写入文件之前,我们必须做大量工作以某种指定的格式对数据进行编码。 Netpbm 格式提供了一种简单且便携的解决方案。 Netpbm是一个开源的图形程序包,基本上使用在linux或Unix平…

    2025年12月17日
    000
  • Rabin-Karp算法的C程序用于模式搜索

    C 中的模式匹配– 我们必须查找一个字符串是否存在于另一个字符串中,例如,字符串“algorithm”存在于字符串“naive algorithm”中。如果是找到,然后显示它的位置(即它所在的位置)。我们倾向于创建一个接收 2 个字符数组的函数,如果匹配则返回位置否则返回-1。 Inpu…

    2025年12月17日
    000
  • C++程序以给定值为参数,找到双曲正弦反函数的值

    双曲函数是使用双曲线而不是圆定义的,与普通三角函数相当。它从提供的弧度角返回双曲正弦函数中的比率参数。但要做相反的事,或者换句话说。如果我们想根据双曲正弦值计算角度,我们需要像双曲反正弦运算一样的反双曲三角运算。 本课程将演示如何使用 C++ 中的双曲反正弦 (asinh) 函数,使用双曲正弦值(以…

    2025年12月17日
    000
  • C程序使用结构体存储库存系统

    结构是不同数据类型变量的集合,以单一名称分组在一起。 结构的特征 C 语言中结构的特征编程语言如下 – 可以通过使用赋值将不同数据类型的所有结构元素的内容复制到其类型的另一个结构变量 为了处理复杂的数据类型,最好在另一个结构中创建结构,这称为嵌套结构。 可以将整个结构、结构的各个元素和结…

    2025年12月17日
    000
  • C程序打印“偶数”或“奇数”,不使用条件语句

    在本节中,我们将看到如何在不使用任何条件语句(如,>=,==)的情况下检查一个数是奇数还是偶数。 我们可以通过使用条件语句轻松地检查奇数还是偶数。我们可以将数字除以2,然后检查余数是否为0。如果为0,则是偶数。否则,我们可以将数字与1进行AND运算。如果答案为0,则是偶数,否则为奇数。 这里不…

    2025年12月17日
    000
  • C++程序来检查一个字符是否为字母或非字母

    在解决一些逻辑编程问题时,使用字符串或字符有时非常有用。字符串是字符的集合,字符是 1 字节数据类型,用于保存 ASCII 值中的符号。符号可以是英文字母、数字或特殊字符。在本文中,我们将学习如何使用 C++ 检查一个字符是否是英文字母或字母表中的字母。 检查 isalpha() 函数 要检查数字是…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信