Я пишу программу для численного моделирования, используя std::map для хранения некоторых пар ключ-значение. Карта используется для хранения состояний, возникших в ходе моделирования. Тип ключа — целое число, а значение соответствует ключу, который говорит, сколько копий существует для одних и тех же ключей, т. е. std::map. Для каждого шага моделирования мне нужно вычислить, сколько значений существует для одного и того же ключа, поэтому я проверю это с помощью следующего кода.
if (map[key]>0) {do something here with the number of copies}
Однако вскоре я обнаружил, что этот код не работает, потому что даже такого ключа на карте нет, всякий раз, когда вы вызываете map[key], он генерирует заполнитель для этого ключа и устанавливает значение равным нулю; поэтому я всегда пересчитываю общее количество ключей с помощью std::map.size(). Позже я изменил код следующим образом, чтобы вместо этого искать ключ
if (map.find(key)!=map.end()) {...}
Так это единственный и самый быстрый способ проверить, существует ли ключ для карты? Я собираюсь запускать симуляцию сотни миллионов раз, и она будет очень часто вызывать приведенный выше код для проверки ключа. Будет ли слишком медленно использовать вместо этого map.find()? Спасибо.