std::deque の実装
まだ調査中の段階なんでいろいろと間違っているかも知れませんが、例の STL のサブセット作成の為に std::deque について調べたところ...
- 規格( ISO/IEC 14882, JIX X 3014 )には実装方法は一切明記されていない。
- 各種コンパイラでの実装を調べたところ、概ね、要素を直接格納するバッファとそのバッファの集合を管理するテーブル(マップ)によって構成されている。
...と、いった感じで、その「要素を直接格納するバッファ」のブロックサイズは次のようになっているようです。
コンパイラ | バイト数 |
---|---|
Borland C++ 5.2 | 1024 |
Borland C++ 5.5.1 | 1024 |
Borland C++ 5.6.4 | 128 |
Borland C++ 5.9 | 16 |
Microsoft Visual C++ 6 | 4096 |
Microsoft Visual C++ 7.1 | 16 |
Microsoft Visual C++ 8 | 16 |
Metrowerks C/C++ Compiler 2.4 | 512 |
Metrowerks C/C++ Compiler 3.0.1 | 512 |
Open Watcom C/C++ 1.5 | 16 |
g++ 3.4.4 | 512 |
...あまりにも数字に極端な開きがあるところを見ると、実際には実装方法からして大きな違いがあるのかも知れませし、厳密な調べ方をしているわけではないのでそもそも明後日な調査結果になっているかも知れません。