2016-10-19 1 views
0

Я видел, что есть новый итератор с C++ 17, ниже приведенный скриншот в cppreference. Я был очень смущен. Какими итераторами является случайный доступ, но не непрерывное хранение в C++? в противном случае ContiguousIterator не является мощным, чем RandomAccessIterator? правильно?Какие итераторы поддерживают произвольный доступ, но не непрерывное хранение в C++?

enter image description here

И тогда ссылка here

+3

Вы хотя бы * посмотрели * на ваш вопрос? «введите описание изображения здесь» ... – Angew

+0

так извините. Я не осторожно нажимал клавишу Enter и сразу же отправлял ее. Я позабочусь об этом позже. –

+0

Вы всегда можете отредактировать Q – Angew

ответ

1

Один Непоследовательный контейнер с итераторами произвольного доступа является std::deque. Цитирование сайта cppreference:

В отличие от std::vector, элементов деки не хранятся смежны: типичные реализации используют последовательность индивидуально выделенных массивов фиксированного размера.

Сложность (эффективность) общих операций на двусторонних очередей выглядит следующим образом:

  • Random Access - константа O (1)
  • Вставка или удаление элементов в конце или начале - константа O (1)
  • Вставка или удаление элементов - линейных о (п)
+0

о, да. Я видел это. спасибо. Помимо std :: deque. и еще? –

+1

Также, 'vector '. –

+0

@ T.C. Итератор 'vector ' даже не удовлетворяет [ForwardIterator] (http://en.cppreference.com/w/cpp/concept/ForwardIterator), потому что 'vector :: iterator :: reference' не является' bool & 'или' const bool & '. –

Смежные вопросы