std :: list固定大小

时间:2010-10-11 15:25:04

标签: c++ stl stdlist

如何使用固定元素计数创建std::list

4 个答案:

答案 0 :(得分:10)

如果你只想要一个固定大小的容器,也许你正在寻找std::tr1::array。 (或者对于C ++ 0x只是std::array。)

如果您不插入或删除元素,我认为使用std::list代替std::arraystd::vector没有任何优势。

答案 1 :(得分:8)

#include <list>

// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);  

如果你希望它总是有5个元素,你必须将它包装在facade类中以防止插入和删除。

如果确实如此,那么最好使用不同的容器而不是list,因为正如其他回复中所述,您将隐藏list的最有利功能。

答案 2 :(得分:2)

您应该使用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也是正确的解决方案。

答案 3 :(得分:1)

我不得不问你,为什么你希望它有固定数量的元素以及为什么要使用列表?

可能是用户正在使用有限数量的元素和LRU删除策略来实现缓存。在这种情况下,列表是一个很好的集合。每次访问元素时,都会将该元素拼接到列表的前面。如果你需要插入一个新的elemenet(这样列表就会满了),你就会弹出列表的后面。

你也可以对元素进行某种查找,但是std :: list是处理LRU的最佳类。

相关问题