Я сомневаюсь, что есть какие-то точные гарантии, поскольку слишком многое зависит от платформы (представьте себе какую-то действительно странную теоретическую платформу, которую никто никогда не сделает, но сможет). Тем не менее, вы можете сделать определенные ожидания. Если создание и удаление занимает O(1)
, то ...
delete A[]
размера n
либо O(1)
, либо O(n)
в зависимости от того, является ли A
тривиально разрушаемым или требует нетривиального Процедура удаления. O(1)
на самом деле может быть большим (не совсем O(1)
), поскольку освобождение большого фрагмента последовательной памяти может занять некоторое время, но оно все еще незначительно в большем объеме вещей.
То же самое верно для new A[n]
. Это может занять около (подделки) O(1)
, если A
является тривиально конструируемым (например, int
, т. Е. Разрешены данные tra sh) или O(n)
, если каждый элемент требует некоторой обработки O(1)
.
Как правило, вы не должны забывать случаи, когда строительство и разрушение затягиваются на A
и могут занять много времени.