Какие итераторы поддерживают произвольный доступ, но не непрерывное хранилище в C++?
Я видел, что существует новый итератор, начиная с C++17, ниже приведен скриншот в cppreference. Я был очень смущен. Что за итераторы с произвольным доступом, но не с непрерывным хранилищем в C++? в противном случае ContiguousIterator не является мощным, чем RandomAccessIterator? право?
И тогда ссылка здесь
1 ответ
Один несмежный контейнер с итераторами с произвольным доступом std::deque
, Цитирование сайта cppreference:
В отличие от
std::vector
элементы deque не сохраняются непрерывно: типичные реализации используют последовательность индивидуально распределенных массивов фиксированного размера.Сложность (эффективность) обычных операций над запросами заключается в следующем:
- Произвольный доступ - постоянная O(1)
- Вставка или удаление элементов в конце или начале - постоянная O(1)
- Вставка или удаление элементов - линейный O(n)