可以通过以下示例代码解决Ada.Containers.Indefinite_Hashed_Maps中的类宽键问题。
with Ada.Containers.Indefinite_Hashed_Maps;
with Ada.Strings.Unbounded;
procedure Main is
package String_Hash is new Ada.Containers.Indefinite_Hashed_Maps( Key_Type => Ada.Strings.Unbounded.Unbounded_String,
Element_Type => Integer);
package Integer_Hash is new Ada.Containers.Indefinite_Hashed_Maps( Key_Type => Integer,
Element_Type => Ada.Strings.Unbounded.Unbounded_String);
Int_To_Str : constant Integer_Hash.Map := Integer_Hash.Empty_Map;
Str_To_Int : constant String_Hash.Map := String_Hash.Empty_Map;
Key : constant String := "test";
Idx : constant Integer := 1;
begin
Int_To_Str.Insert(Idx, Ada.Strings.Unbounded.To_Unbounded_String(Key));
Put_Line("String_Hash Key = " & Ada.Strings.Unbounded.To_String(Str_To_Int.Keys));
Put_Line("Int_Hash Key = " & Int_To_Str.Keys'Image);
end Main;
此示例代码展示了如何使用Ada.Containers.Indefinite_Hashed_Maps为字符串键和整数键创建哈希表,并使用包裹字符串并插入对应的键值对。此外,Put_Line子句还显示了如何获取每个哈希表的键。