我正在爲我一直在研究的字節碼語言開發虛擬機。我正在使用System.Collections.Generic.Stack
類的堆棧,但有什麼辦法來分配堆棧的大小?或者我只需要編寫自己的堆棧對象來使用?在C#中分配堆棧大小?
2
A
回答
1
0
堆棧(T)類
表示可變大小後進先出相同的任意類型的 實例(LIFO)集合。
它自動調整它的大小。但是如果你想預先分配它的大小,那麼看看documentation on the Stack's constructor。有一個過載,您可以設置堆棧的初始大小。
4
MSDN從爲堆棧(的Int32)構造:
堆棧的容量是元素堆棧 可以容納的數目。當元素被添加到堆棧時,根據重新分配內部 陣列的需要自動增加容量 。
如果可以估計集合的大小,那麼指定初始容量將消除在向堆棧添加元素時執行大量操作的需要。
通過調用TrimExcess可以減少容量。
此構造函數是一個O(n)操作,其中n是容量。
3
你可以construct it with an initial capacity,但堆棧會根據需要增加(當你添加項目到它)。
如果您不希望它在您將容器推過容器時自動添加新項目,則需要將其封裝在自己的類中,或者編寫自己的堆棧以移除多餘的項目。
1
您的術語極不理想很多,但Stack
有一個構造函數,它允許你傳遞一個初始容量:http://msdn.microsoft.com/en-us/library/ahc986x9.aspx
棧是自由成長,你有記憶,雖然大,所以你不」不用擔心!
2
可以使用Stack<T> Constructor (Int32)到specifiy堆棧容量:
var stack = new Stack<Foo>(1024);
請注意,如果您添加超過1024項堆將增長的能力。如果你不想這樣,你可以在每個推前檢查堆棧大小:
if (stack.Count == 1024)
throw new StackOverflowException();
stack.Push(foo);
相關問題
- 1. C堆棧分配
- 2. C++堆棧與堆分配
- 3. C中的堆棧分配
- 4. 在C#中更改堆棧的大小
- 5. 在C中檢查堆棧大小#
- 6. 增加堆棧大小c#
- 7. 對象分配在堆棧或堆C++
- 8. C對堆棧分配的空間大小的陣列
- 9. 從堆棧中分配 - 在C
- 10. C++循環堆棧分配
- 11. c/C++在堆棧上分配
- 12. C++是堆棧還是堆分配?
- 13. 如何在Visual C++調試器中獲取堆棧幀的所有堆棧分配變量的大小?
- 14. Linux堆棧大小
- 15. Android堆棧大小
- 16. 堆棧= java.lang.StackOverflowError的:堆棧大小8MB
- 17. 何時在堆棧上分配固定大小的數組?
- 18. C++中的動態堆棧分配
- 19. 堆棧在c分配空間
- 20. 配置FreeRTOS ISR堆棧大小
- 21. 配置boost ::線程堆棧大小
- 22. 在C#中檢查堆完整性和堆棧大小
- 23. Tomcat7堆棧大小很小
- 24. FreeRTOS STM32鏈接器堆棧大小vs任務堆棧大小
- 25. 在堆上分配vs在遞歸函數中分配堆棧
- 26. 堆棧或堆棧分配不正確
- 27. 內存分配,堆棧和堆棧
- 28. C++ vs2010增加堆棧大小
- 29. 分配在堆或棧上?
- 30. 在C(gcc)中函數堆棧的最大大小
有大約MaxStack有限制的文章。它用一個鏈表實現。詳情在這裏:http://msdn.microsoft.com/en-us/library/ahc986x9。aspx –
@Jason:這是正常的堆棧 - 它可以讓你添加超出容量(並且增長到補償) –
我只是鏈接到某人根據你的評論創建的實現「如果你不想它自動添加新當你將它推過容量時,你需要......編寫你自己的堆棧,以移除多餘的物品。「 –