我可以假设对于任何类型T
,该类型std::list<T>
将具有相同的恒定大小吗?为了清楚起见,我的意思是“主要”类型本身的大小,而不是它分配的内存的大小。
对我来说,假设它T
本身的大小应该只影响使用分配器分配的列表节点的大小,这似乎是合乎逻辑的。
但是,有两件事可能会导致sizeof(std::list<T>)
我能想到的变化:
- 一个标准 C++ 库试图
std::list
通过将一些T
实例放入std::list<T>
自身来“优化”类型。这对我来说似乎是个坏主意,它可能违反了标准提出的“恒定时间”要求; - 一种标准 C++,具有
std::list<T>
某些类型的库特化,这些特化具有不同的大小。
我想不出(1)或(2)的任何用途,但我可能错了。
我正在考虑实现的是使用std::list<T>
内部模板类使用固定大小的切片分配器。
注意:这是关于不同类型的差异T
,而不是不同分配器的差异。我将对所有实例化进行显式控制,并且它们都将使用std::allocator
.