我知道在C++中,
然而,如果元素类型是一个原始类型,例如
std::vector::resize
函数在新大小比旧大小小的情况下不会分配新的内存。此外,如果元素类型是具有析构函数的用户定义类,则该析构函数可能会针对调整大小后“丢失”的每个元素进行调用,因此在这种情况下,运行时间将与大小差异成线性关系。然而,如果元素类型是一个原始类型,例如
std::vector<int>
,则没有需要调用的析构函数。在这种情况下,是否存在任何理由使resize
向下调整的时间复杂度不为O(1)?
O(n)
,也不能阻止它成为n * 0
。 - Bo Persson