【问题标题】:Calculating complexity with stl vector? [duplicate]用stl向量计算复杂度? [复制]
【发布时间】:2013-12-12 11:20:31
【问题描述】:

我正在尝试计算某些算法的复杂性,但我不知道如何测量向量运算的复杂性。比如push_back()的复杂度是多少?

在 c++ 参考中我发现 “恒定(摊销时间,可能发生重新分配)。 如果发生重新分配,则重新分配本身在整个大小上是线性的。”

这是什么意思?运算复杂度是O(n)吗? (n 是向量长度)。

谢谢。

【问题讨论】:

标签: c++ algorithm vector stl complexity-theory


【解决方案1】:

向量的复杂性是:

  • push_back:O(1).
    Amortized 代表“四舍五入”,因为这种复杂性取决于可能的重新分配。

当向量的大小大于时你有重新分配:

size_type capacity() const;

返回:向量可以不包含的元素总数 需要重新分配。
注意:重新分配会使所有 引用、指针和迭代器 顺序。保证期间不会发生重新分配 在调用 reserve() 之后发生的插入,直到 插入会使向量的大小大于大小 在最近一次调用 reserve() 时指定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 2012-12-31
    • 2019-03-11
    • 2014-10-12
    • 1970-01-01
    • 2021-03-27
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多