热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

是否会覆盖相同键的Adahashmap值

如何解决《是否会覆盖相同键的Adahashmap值》经验,为你挑选了2个好方法。

在Ada中,如果我使用带有哈希映射中已存在的键的insert命令,它是否只更新存储在该键中的值?以下是该Hashed_Maps软件包的Ada 2005规范:http: //www.adaic.org/resources/add_content/standards/05rm/html/RM-A-18-5.html
谢谢



1> Simon Wright..:

这个答案是正确的,但它确实取决于Insert你使用的是什么.有几个(ARM A.18.4(44ff)); 如果你使用简单的

procedure Insert (Container : in out Map;
                  Key       : in     Key_Type;
                  New_Item  : in     Element_Type);

然后呢

根据五参数Insert将Key和New_Item插入Container,区别在于如果具有等效于Key的键的节点已经在Map中,则传播Constraint_Error.



2> trashgod..:

在阅读所Insert提供的程序时Hashed_Maps,还请参阅所有人共同的子程序文档Maps.特别注意out类型的参数Boolean:

如果找到匹配项,Inserted则设置为FalsePosition使用匹配键指定元素.否则,Insert分配一个新节点,将其初始化为KeyNew_Item,并将其添加到Container; Inserted设置为TruePosition指定新插入的节点.

之后Insert,现有的键/项对将保持不变,但是Replace如果您的用例需要,您可以使用相应的键项,例如增加特定键遇到的次数.

在该相关示例中,该过程Read_Dictionary将每个字典单词(键)映射到单词集(项目).在循环中,过程检查Inserted以确定是否应更新新的或现有的集.

Word_Map.Insert(Sorted, Position, Inserted);
if Inserted then
   Set := new ACOS.Set;
   Word_Map.Replace_Element(Position, Set);
else
   Set := ACHM.Element(Position);
end if;
Set.Insert(Word);


推荐阅读
author-avatar
生活趣图分享
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有