在C ++中声明数组的时间复杂性

时间:2018-03-08 12:13:09

标签: c++ time-complexity

C ++中以下代码的时间复杂度:(注意我使用gcc,因此len被视为用户的输入)

int array[len]; \\array is uninitialized

是O(1)还是O(len)?我有点困惑。

2 个答案:

答案 0 :(得分:4)

一般来说,对于POD类型,时间将是O(1)。

如果您有用户定义的构造函数(或析构函数,我假设也应该考虑释放资源所花费的时间),那么我希望时间复杂度为O(n)。

如果你可以等一下,我就Overload提交了一篇关于自动和动态分配的对象所需的代码大小和执行时间的文章。我希望它能在今年四月出来。

更新: 以下是已发布的重载文章No news is good news

的链接

答案 1 :(得分:1)

一般规则:

type name[size];

如果您的类型是普通旧数据(POD),则编译器可以在O(1)中调用分配和构造。
 否则,每个实体O(n)都需要显式的构造函数调用。