2013-12-12 4 views
0

Я пытаюсь рассчитать сложность некоторых алгоритмов, но я не знаю, как измерить сложность операций с векторами. Например, какова сложность push_back()?Расчет сложности с помощью stl vector?

ссылка

В C++ я нашел «Constant (амортизируется время, перераспределение может произойти). Если перераспределение происходит, перераспределение сам до линейного во всем размере.»

Что это значит? Является ли операция сложности O (n)? (n - длина вектора).

спасибо.

+2

Знаете ли вы, что означает «амортизация»? – doctorlove

+2

Прочтите принятый ответ здесь: http://stackoverflow.com/questions/200384/constant-amortized-time –

+1

http://www.google.com/search?q=amortized+complexity –

ответ

0

Сложности для вектора:

  • push_back: O (1).
    Амортизированный стенд для «округлых», поскольку эта сложность зависит от возможного перераспределения.

Вы перераспределению когда размер вектора больше:

size_type capacity() const; 

Returns: Общее количество элементов, что вектор может содержать без , требующих перераспределения.
Примечания: Reallocation аннулирует все ссылки, указатели и итераторы , ссылаясь на элементы в последовательности . Гарантируется, что перераспределение не происходит во время вставок , которые происходят после вызова резервирования() до момента, когда вставка сделает размер вектора большим, чем размер , указанный в последнем вызове reserve().

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