デフォルトのコンストラクターを使用して作成されたcapacity()
のは何ですか? std::vector
がゼロであることはわかっていsize()
ます。デフォルトで構築されたベクトルは、ヒープ メモリ割り当てを呼び出さないと言えますか?
このようにして、単一の割り当てを使用して、任意の予約で配列を作成することができますstd::vector<int> iv; iv.reserve(2345);
. size()
何らかの理由で、 2345 でを開始したくないとしましょう。
たとえば、Linux (g++ 4.4.5、カーネル 2.6.32 amd64) の場合
#include <iostream>
#include <vector>
int main()
{
using namespace std;
cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
return 0;
}
プリント0,10
。それはルールですか、それとも STL ベンダー依存ですか?