Во-первых, может кто-то уточнить, использует ли в С++ оператор [] в сочетании с unordered_map для поиска, обертывает вызов методу find() или использует оператор [] быстрее, чем find()?
Во-вторых, в следующем фрагменте кода я подозреваю, что в тех случаях, когда ключ еще не находится в unordered_map, я выполняю второй поиск с помощью строки map[key] = value
, чтобы заменить значение по умолчанию, созданное там, используя [], когда ключ отсутствует.
Является ли это истинным, и если это так (возможно, с помощью указателей или чего-то еще), что я мог бы выполнять только один поиск в любом случае (возможно, путем хранения адреса места размещения значения/чтения значения от) и до сих пор выполняют те же функции? Очевидно, это было бы полезным повышением эффективности, если бы так.
Ниже приведен фрагмент кода:
int stored_val = map[key]; // first look up. Does this wrap ->find()??
// return the corresponding value if we find the key in the map - ie != 0
if (stored_val) return stored_val;
// if not in map
map[key] = value;
/* second (unnecessary?) look up here to find position for newly
added key entry */
return value;