c++のstl::vectorのサイズ

stl::vector型のデータって何バイト?

使っているにも関わらず即答できませんでした。
恥ずかしい…反省してます。

早速32bit環境のg++ 4.2.4でしらべてみると

 cout << sizeof(vector<int>) << endl;

結果は12byteでした。

同様に32bit環境のMicrosoftのVisualStudioで試した所,20Byteでした。
(バージョンは2005です。)

異なりますね〜,8byteの差があります。

なぜ違うのかと言えば,stlの実装に関しては取り決めとかがあるわけではないので提供元の実装に依存するってことでしょう。

それに,VisualStudio2005では次のようなsize_t型をint型に代入するコードは怒られますが,g++4.2.4ではなにも言われません。

int main(void)
{
  size_t a = 10;
  int b;

  b = a;
  a = b;
}