Здесь In unordered_map
, hash[arr[i]]++;
работает следующим образом:
Поиск ключа (arr [i]).Если оно найдено, соответствующее значение увеличивается на 1
.
Если оно не найдено, будет создан новый элемент с ключом arr[i]
, и поскольку значение имеет типint
, для него сохраняется значение по умолчанию 0
.Из-за оператора ++
он будет увеличен на единицу.Таким образом, в конце операции значение будет 1
.
Чтобы быть очень явным для вашего примера, оно работает так:
i = 0 => arr[i] = 1 => Not present in map => New pair added => hash: [{1, 1}]
i = 1 => arr[i] = 5 => Not present in map => New pair added => hash: [{1, 1}, {5, 1}]
i = 2 => arr[i] = 2 => Not present in map => New pair added => hash: [{1, 1}, {5, 1}, {2, 1}]
i = 3 => arr[i] = 1 => Present in map => Existing pair updated => hash: [{1, 2}, {5, 1}, {2, 1}]
i = 4 => arr[i] = 3 => Not present in map => New pair added => hash: [{1, 2}, {5, 1}, {2, 1}, {3, 1}]
i = 5 => arr[i] = 2 => Present in map => Existing pair updated => hash: [{1, 2}, {5, 1}, {2, 2}, {3, 1}]
i = 6 => arr[i] = 1 => Present in map => Existing pair updated => hash: [{1, 3}, {5, 1}, {2, 2}, {3, 1}]
Упомянутый здесь порядок может отличаться от фактического.Приведенное выше объяснение просто для объяснения вещей.