Какое использование локального итератора для неупорядоченных контейнеров STL?

В §23.2.7 Неупорядоченные ассоциативные контейнеры [unord.req] стандарта C ++ таблица 91 описывает дополнительные требования, которым должен соответствовать неупорядоченный ассоциативный контейнер STL. В этой таблице стандарт диктует, что STL неупорядоченные контейнеры (т.е. unordered_set, unordered_map, unordered_multiset а также unordered_multimap) должны предоставить в качестве типов членов local_iterator а также const_local_iterator,

введите описание изображения здесь

  • local_iterator тип итератора, чья категория, значение, разница, указатель и
    ссылочные типы такие же, как у неупорядоченного контейнера iterator, Этот итератор может использоваться для перебора одного сегмента, но не между сегментами.
  • const_local_iterator является типом итератора, у которого типы категорий, значений, разностей, указателей и ссылок совпадают с типами неупорядоченного контейнера const_iterator, Этот итератор может использоваться для перебора одного сегмента, но не между сегментами.

Q

Каковы некоторые применения этих итераторов?

2

Решение

Главное, для чего я вижу, это проверить, сколько у вас коллизий. С помощью bucket Вы можете получить, в каком контейнере хранится ключ. Затем вы можете передать это значение в begin который вернет local_iterator к предметам в этом ведре. Теперь вы можете выполнить итерацию этого сегмента и посмотреть, сталкиваетесь ли вы с какими-либо другими элементами, и если вы, то каковы эти элементы. Это, в свою очередь, позволяет настроить функцию хеширования.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]