std::unordered_set::equal_range
возвращает пару итераторов, описывающих диапазон значений в наборе, где ключи для значений сравниваются как равные. Дано:
auto iteratorFromEqualRange = someUnorderedSet.equal_range(key).first;
auto iteratoFromFind = someUnorderedSet.find(key);
Стандарт гарантирует, что:
++iteratorFromEqualRange == ++iteratorFromFind;
как они оба определены в терминах std::unordered_set::iterator
? Другими словами, может ли другая реализация std::unordered_set
хранить «скрытую» информацию о контексте того, что мы итерируем, или это не очень тонкое применение интерфейса корзины (что ограничивает наши варианты реализации)?
Я ожидаю, что это действительно гарантия, учитывая требования LegacyForwardIterator , я просто прошу подтверждение (или лучшую новость, которая включает в себя какой-то аварийный люк)