Работает ли std :: advance на итераторе std :: multiset за постоянное время? - PullRequest
0 голосов
/ 06 ноября 2018

Я хотел бы знать, выполняется ли вызов std :: advance на итераторе std :: multiset в постоянное время.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

С std::advance, мы видим, что

Сложность

Линейный. Однако если InputIt дополнительно соответствует требованиям RandomAccessIterator, сложность постоянна.

Поскольку любой шаблон из семейства std::*map и std::*set не соответствует требованиям RandomAccessIterator, он линейный. Например, здесь

Типы элементов

[...]

iterator Постоянный двунаправленный итератор
const_iterator Постоянный двунаправленный итератор

0 голосов
/ 06 ноября 2018

Нет, только итераторы с произвольным доступом могут продвигаться в постоянном времени. В противном случае это линейное время на расстоянии.

См .: https://en.cppreference.com/w/cpp/iterator/advance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...