Читая о Insert
процедурах, предусмотренных Hashed_Maps
, также обращайтесь к документации подпрограмм, общих для всех Maps
.В частности, обратите внимание на параметр out
типа Boolean
:
Если совпадение найдено, Inserted
устанавливается на False
, а Position
обозначает элемент с соответствующим ключом.В противном случае Insert
выделяет новый узел, инициализирует его для Key
и New_Item
и добавляет его к Container
;Inserted
установлен на True
, а Position
обозначает вновь вставленный узел.
После 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);