В ходе обсуждения этого вопроса выяснилось, что, по-видимому, нет требований к сложности времени, установленных на std::vector<T>::clear
стандартом С++.
В таблице 100 в разделе 23.2.3 говорится:
Уничтожает все элементы в
a
. Недействительность всех ссылок, указателей и итераторов, относящихся к элементамa
, и может привести к аннулированию итератора прошедшего конца. post:a.empty()
возвращаетtrue
И... это. Там нет записи для нее в соответствии с 23.3.6 и нет явного указания, что для clear
применяется следующее:
[C++11: 23.3.6.1/1]:
Вектор представляет собой контейнер последовательности, который поддерживает итераторы произвольного доступа. Кроме того, он поддерживает (амортизируется) постоянное время вставки и стирания операций в конце; вставлять и стирать в середине, принимать линейное время. Управление хранилищем обрабатывается автоматически, хотя можно дать подсказки для повышения эффективности. [..]
Итак... это правда? Или я просто пропустил это?