gpt4 book ai didi

c++ - 方法 vector::push_back 的 new/alloc 的复杂性

转载 作者:太空宇宙 更新时间:2023-11-04 15:30:34 24 4
gpt4 key购买 nike

对于巨大的 N 值,下面代码的 alloc(realloc)/new 操作的复杂度是多少。

据我了解 push_back 分配内存:
大小 = cst*old_size;
cst = 2;//对于 gcc
所以我们在 k 循环内有 O(1),在 i 循环内有 ~O(N)。总之我有 O(N),对吗?

std::vector<int> data;  
for (int i = 0; i < N; ++i)
{
for (int k = 0; k < 2 * N; ++k)
data.push_back(k);
for (int k = 0; k < N; ++k)
data.pop_back();
}

最佳答案


vector::push_back 不完全是 O(1),而是 C++ 标准要求的 amortized O(1)。参见 Constant Amortized Time

关于c++ - 方法 vector::push_back 的 new/alloc 的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com