タイプT
の場合、タイプstd::list<T>
は同じ一定のサイズを持つと仮定できますか?ちょうどそれを明確にするために、私は、それによって割り当てられたメモリではなく、「メイン」タイプそのもののサイズだけを意味します。sizeof(std :: list <T>)は、Tの種類によって異なりますか?
T
自体のサイズは、アロケータを使用して割り当てられたリストノードのサイズに影響を与えるだけであると私は考えています。
はしかし、私は考えることができるsizeof(std::list<T>)
のvariancyを引き起こすかもしれない二つのものがあります:
- 「最適化」
std::list<T>
自体にT
インスタンスのいくつかを置くことによってstd::list
型にしようと、標準C++ライブラリ。それは私にとっては悪い考えであり、おそらく標準によって定められた「一定の時間」の要件を破るでしょう。 - ライブラリの特殊化が
std::list<T>
の標準C++で、一部のタイプでは特殊化のサイズが異なります。
(1)または(2)の用途は考えられませんが、間違っている可能性があります。
私が達成しようとしているのは、std::list<T>
を使ってテンプレートクラスに固定サイズのスライスアロケータを使用することです。注意点としては
:これはT
の異なる種類の分散程度であり、異なるアロケータのためのない。すべてのインスタンス化を明示的に制御し、すべてはstd::allocator
を使用します。
興味深い+1。私はかなり確信しています、標準は同じサイズを保証するものではありませんが、まだ+1とただのコメント:) –
私は 'list'ではなく' vector'について考えていましたが、 'T *'すべてのポインタが同じサイズではありません...どうしてメンバー関数のコンテナをどのように作成したのかよく分かりませんが... – BoBTFish
@BoBTFish - すべてのポインタは同じサイズです。 –