如何創建具有固定元素數量的std::list
?std ::列表固定大小
回答
#include <list>
// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);
如果您希望它總是隻有5個元素,您必須將其包裝在外觀類中以防止插入和擦除。
如果這確實是你想要的,那麼最好使用不同的容器,而不是list
,因爲正如其他回覆中指出的那樣,你將隱藏list
的最有利功能。
這就是'const'的用途。 – 2010-10-11 15:57:49
@Alf P. Steinbach:不是。使列表成爲const將禁止插入和刪除,但同時它將禁止修改列表的實際內容。 – 2010-10-11 16:10:28
爲什麼演員?只有一個構造函數會用一個整數類型參數來匹配調用。 – 2010-10-11 16:22:25
您應該使用std::list
構造函數。
explicit list (size_type n, const T& value = T(), const Allocator& = Allocator());
只需在創建時指定元素的精確數量。
std::list<int> someList(20);
您也可以爲每個元素指定初始值。
std::list<int> someList(20, int(42));
std::list::resize也是正確的解決方案。
如果你只是想要一個固定大小的容器,也許你正在尋找std::tr1::array
。 (或者只是std::array
對C++ 0x中。)
如果不插入或刪除,我不認爲這是在使用std::list
代替std::array
或std::vector
任何利益元件。
我不得不問你爲什麼要讓它有固定數量的元素,爲什麼要使用列表?
這可能是因爲用戶正在實現具有有限數量的元素和LRU刪除策略的緩存。在這種情況下,列表是一個很好的集合。每次訪問元素時,都會將該元素拼接到列表的前面。如果你需要插入一個新的elemenet(所以列表得到滿),你從列表的後面彈出。
你也可以維護某些元素的查找,但std :: list是處理LRU的最好的類。
- 1. C++固定大小鏈表
- 2. 固定大小的陣列不固定
- 3. 保留表固定大小的列
- 4. 固定大小列出
- 5. 固定大小的列
- 6. 固定大小陣列
- 7. 表 - 按鈕大小固定
- 8. LibreOffice固定表大小
- 9. 使用固定間隔抽樣將列表縮小爲固定大小
- 10. css,固定大小
- 11. 960:幫助不固定大小的列
- 12. GWT:靈活固定列大小
- 13. 在Java中定義一個固定大小的列表
- 14. 固定大小的std :: vector在運行時?
- 15. 用Java-FX固定單元大小表
- 16. Novacode DocX C#中的固定表大小#
- 17. 固定大小的頭
- 18. 固定大小的數組
- 19. 設置固定大小ArrayList
- 20. 固定文本大小
- 21. tkinter固定畫布大小
- 22. svg固定字體大小
- 23. Tkinter的create_rectangle()固定大小
- 24. Javascript背景固定大小
- 25. 固定大小的形式
- 26. 創建固定大小元素列表中的非重複排列列表
- 27. 創建一個固定大小的列表或數組?
- 28. HTML固定寬度表,列不會調整大小
- 29. 哪個STL C++容器用於固定大小的列表?
- 30. 無法更改固定佈局表中的列大小
尺寸在其整個生命週期內都應該是固定的?在那種情況下,你爲什麼使用一個列表?它比數組(以及它們的包裝器,比如'std :: vector'和'std :: array')的優點主要是插入/刪除元素,要求固定列表只是要求其缺點(更多的浪費內存,緩慢的隨機訪問,...)。 – 2010-10-11 15:48:18