如何std::list
使用固定元素数创建?
问问题
11982 次
4 回答
14
如果您只想要一个固定大小的容器,也许您正在寻找std::tr1::array
. (或仅std::array
适用于 C++0x。)
如果您不插入或删除元素,我认为使用std::list
代替std::array
or没有任何优势std::vector
。
于 2010-10-11T15:37:45.567 回答
10
#include <list>
// list with 5 elements, using default constructor
const size_t fixedListSize(5);
std::list<int> mylist(fixedListSize);
如果您希望它始终只有 5 个元素,则必须将其包装在外观类中以防止插入和擦除。
如果这确实是您想要的,那么您最好使用不同的容器而不是list
,因为如其他回复中所述,您将隐藏list
.
于 2010-10-11T15:29:04.730 回答
3
你应该使用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也是正确的解决方案。
于 2010-10-11T15:30:25.180 回答
2
我不得不问你,为什么你希望它有固定数量的元素,为什么要使用列表?
可能是用户正在实现一个元素数量有限的缓存和一个 LRU 删除策略。在这种情况下,列表是一个很好的集合。任何时候访问一个元素,你都会将该元素拼接到列表的前面。如果你需要插入一个新的 elemenet(这样列表就满了),你会从列表的后面弹出。
您还可以对元素进行某种查找,但 std::list 是处理 LRU 的最佳类。
于 2010-10-11T18:23:52.300 回答