std::map
имеет метод insert
, который принимает итератор «подсказки», который уменьшит время вставки из log (n) до постоянного времени, если подсказка верна. Его довольно очевидно, как это будет работать, поскольку контейнер может просто убедиться, что у недавно добавленного элемента есть ключ, который меньше подсказки и имеет ключ, который больше, чем элемент перед подсказкой. В противном случае подсказка была неправильной, и она выполняет обычную вставку.std :: unordered_map insert with hint
std::unordered_map
также имеет аналогичный insert
с функцией подсказки. Что, если что-нибудь, делает намек? Для меня не очевидно, как другой итератор «подсказки» можно было бы использовать для ускорения ввода хэш-карты.
Если используется, то подходящий «намек». В std::map
подсказку обычно можно найти по телефону lower_bound
на карте.
Я думаю, что перегрузка подсказки предназначена для совместимости интерфейса с обычной 'std :: map', так как вам нужно будет точно знать, где хеш для вашего значения должен быть вставлен, чтобы делать что-нибудь полезное - что означает, что вы необходимо учитывать нагрузку, ведра и т. д., в основном воспроизводя то, что 'unordered_map' делает внутренне. Кроме того, как вы отметили, вставка в любом случае амортизируется O (1). – Xeo
Чтобы быть ясным, вы говорите, что ничего не делает? Это то, что я догадался ... это просто для совместимости. – pauld