Я изучаю Аду (пытаясь решить https://adventofcode.com/2018/ проблемы).
У меня есть вектор ActivityVector
из ActivityRecord
записей:
type ActivityRecord is
record
dt: Ada.Calendar.Time;
str: UStr.Unbounded_String;
end record;
package ActivityVector is new Ada.Containers.Vectors
(Element_Type => ActivityRecord,
Index_Type => Natural);
И я хочупоместить их в карту, где ключи Integer
с.У меня есть следующее:
function IntegerHash(i: Integer) return Ada.Containers.Hash_Type;
package ActivityMap is new Ada.Containers.Indefinite_Hashed_Maps(
Key_Type => Integer,
Element_Type => Activity.ActivityVector.Vector,
Hash => IntegerHash,
Equivalent_Keys => "="
);
Когда я пытаюсь скомпилировать это, я получаю:
act_map.ads:9:04: instantiation error at a-cihama.ads:46
act_map.ads:9:04: no visible subprogram matches the specification for "="
act_map.ads:9:04: instantiation error at a-cihama.ads:46
act_map.ads:9:04: default "=" on "Vector" is not directly visible
Похоже, он ожидает оператора равенства, определенного для вектора?Я мог бы определить один, но сначала я хотел бы проверить, что:
- Я правильно думаю о том, что требуется
- Если есть более простой способ реализовать это