Какова временная сложность итерации через std:: set/std:: map?
Какова временная сложность итерации через std::set
/std::multiset
/std::map
/std::multimap
? Я считаю, что он линейный по размеру набора/карты, но не уверен. Это указано в стандарте языка?
Ответы
Ответ 1
В черновик С++ 11 standard N3337 ответ можно найти в § 24.2.1, пункт 8:
Все категории итераторов требуют только те функции, которые реализуется для данной категории в постоянное время (амортизируется).
Поскольку каждая операция на итераторе должна быть постоянной, итерация через элементы n
должна быть O(n)
.
Ответ 2
Я считаю, что он линейный по размеру набора/карты, но не так уверен.
Это правильно. Итерация через весь набор или карту составляет O(N)