我正在尝试计算某些算法的复杂性,但我不知道如何使用向量来验证操作的复杂性。例如,push_back()的复杂性是什么?
在c ++参考中我找到了 “常数(摊销时间,重新分配可能发生)。 如果发生重新分配,重新分配本身在整个大小上都是线性的。“
这是什么意思?复杂度为O(n)的运算? (n是向量长度)。
谢谢。
答案 0 :(得分:0)
矢量的复杂性是:
当vector的大小大于:
时,您需要重新分配size_type capacity() const;
返回:向量可以容纳的元素总数 需要重新分配 注意:重新分配使所有内容无效 引用,指针和迭代器引用的元素 序列。保证在此期间不会重新分配 在调用reserve()之后发生的插入,直到发生时为止 插入会使向量的大小大于大小 在最近一次调用reserve()中指定。