如何创建具有固定元素数量的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. FullCalendar的固定列大小
- 6. 固定大小的列
- 7. 固定大小列出
- 8. LibreOffice固定表大小
- 9. 表 - 按钮大小固定
- 10. 固定大小
- 11. 使用固定间隔抽样将列表缩小为固定大小
- 12. 固定大小柱
- 13. css,固定大小
- 14. GWT:灵活固定列大小
- 15. Bootstrap固定大小的右列
- 16. 阵列具有固定间隔大小
- 17. 960:帮助不固定大小的列
- 18. 在Java中定义一个固定大小的列表
- 19. 固定大小的std :: vector在运行时?
- 20. 用Java-FX固定单元大小表
- 21. Novacode DocX C#中的固定表大小#
- 22. Flexslider的固定大小
- 23. 固定大小堆栈Java
- 24. Doctrine ArrayCollection固定大小
- 25. 固定文本大小
- 26. 固定图像大小
- 27. UICollectionView固定内容大小
- 28. 固定大小的形式
- 29. 固定大小的数组
- 30. Javascript背景固定大小
尺寸在其整个生命周期内都应该是固定的?在那种情况下,你为什么使用一个列表?它比数组(以及它们的包装器,比如'std :: vector'和'std :: array')的优点主要是插入/删除元素,要求固定列表只是要求其缺点(更多的浪费内存,缓慢的随机访问,...)。 – 2010-10-11 15:48:18