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

В §23.2.7 Неупорядоченные ассоциативные контейнеры [unord.req] стандарта C++ в таблице 91 описаны дополнительные требования, которым должен соответствовать неупорядоченный ассоциативный контейнер STL. В этой таблице стандарт требует, чтобы неупорядоченные контейнеры STL (т. е. unordered_set, < a href="http://en.cppreference.com/w/cpp/container/unordered_map" rel="noreferrer">unordered_map, unordered_multiset и unordered_multimap< /a>) должны предоставлять в качестве членов типы local_iterator и const_local_iterator.

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

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

Q

Каково использование этих итераторов?


person 101010    schedule 14.02.2017    source источник


Ответы (1)


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

person NathanOliver    schedule 14.02.2017