Почему std :: map имеет двунаправленный тип итератора? - PullRequest
0 голосов
/ 05 февраля 2019

Я сейчас изучаю разные типы итераторов.Я читал, что std::map имеет bidirectional итераторов.И std::set, std::list также имеют этот тип итераторов.Почему они не random access итераторы?Кто-нибудь может мне это объяснить?Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Стандартная библиотека C ++ предоставляет итераторы произвольного доступа к типам контейнеров, для которых доступ к произвольному элементу занимает постоянное время, например std::array, std::vector, std::deque.Это связано с тем, что произвольный доступ контейнер - это , один из которых доступен для любого элемента в постоянное время.

std::list не является контейнером произвольного доступа: доступ занимает линейное время.std::set также: доступ занимает логарифмическое время.Аналогично std::map.

...