MSDN上显示的构造函数之一采用Int32
参数表示初始容量。
上述文档页面上还有一条说明如下:
如果Count小于堆栈容量,则Push为O(1)操作。如果需要增加容量以容纳新元素,则Push变为O(n)操作,其中n为Count。 Pop是O(1)操作。
我的情况是我真的不知道给我的堆栈有多少初始容量。高估你认为自己需要的东西会更好吗?因为初始容量太低会导致性能下降吗?
在性能方面传递高初始容量有什么缺点?
答案 0 :(得分:3)
在内部,Stack<T>
内的存储阵列增长exponentially,这意味着amortized O(1) cost to add an element。因此,如果您不知道正确的初始容量,请不要担心它并使用default constructor,无论如何,性能都会很好。