4

deque と vector の両方が、成長のためにいくらかのスペースを確保していることを理解しています。vector::capacity() は、ベクターの内部予約スペースを取得できます。Deque には、標準にそのようなメンバーはありません。この情報を取得する方法はありますか?

4

2 に答える 2

7

それを理解するには、実装を掘り下げる必要があります。std::dequegcc 4.1.1 に付属するのバージョンは、512 バイトのチャンクでメモリを割り当てるようです。しかし、すべてのアンダースコアと への C スタイルのキャストを 15 分間じっと見つめた後に得たのは、これまでのところsize_tです。すると、こんなコメントを見つけました。

初期の基になるメモリ レイアウトは少し複雑です...

于 2010-07-01T14:50:50.763 に答える
6

ポータブルではありません。deque のメンバーがない理由capacityは、連続したメモリを使用しないためです。パフォーマンスに関しては、それを考慮する理由はありません。

于 2010-07-01T13:55:29.307 に答える