Я попал сюда, когда пытался найти способ решить вопрос с одним номером LeetCode с помощью HashTable в C ++.
Нет прямой альтернативы getOrDefault, который используется в подходах 2 и Java, но я смог использовать operator [] для доступа к элементу unordered_map. См. http://www.cplusplus.com/reference/unordered_map/unordered_map/operator [] /
Если ключ существует на карте, то оператор [] вернет ссылку на свое отображенное значение.
Если ключ не существует, то оператор [] добавит ключ на карту со значением 0.
Это может быть полезно, когда вы пытаетесь увеличить значение ключ, если он уже существует, или добавьте новый ключ на карту, если это не так.
Например, я использовал следующее в C ++
for (int i : nums) {
hash_table[i] = hash_table[i] + 1;
}
, которое является альтернативой следующему в Java
for (int i : nums) {
hash_table.put(i, hash_table.getOrDefault(i, 0) + 1);
}