以下はベクトルのプログラムであり、C++ 11モードでの容量の結果が異なります。なぜベクターの容量とサイズ以外の違いがありますか?
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>a ={1,2,3};
cout<<"vector a size :"<<a.size()<<endl;
cout<<"vector a capacity :"<<a.capacity()<<endl<<endl;;
vector<int>b ;
b.push_back(1);
b.push_back(2);
b.push_back(3);
cout<<"vector b size :"<<b.size()<<endl;
cout<<"vector b capacity :"<<b.capacity()<<endl;
return 0;
}
OUTPUT
ベクトルサイズ:3
ベクトル容量:3
ベクトルbのサイズ:3
ベクトルb容量:4
このプログラムは、異なる値を与える理由aとbの容量はどちらも同じ値を持ち、サイズは容量とどのように異なっていますか?
しかし、私はこれが私の質問の部分的な答えだと思います。なぜなら、同じPCと同じコンパイラでベクトルaとbの容量が異なるようになるからです。 –
@GIRISHkuniyalなぜ違ったのですか?初期化は異なります。 –
@GIRISHkuniyal最初のケースでは、ベクトルは、挿入する要素の合計数を知っています。要素をもう一度も挿入することはできません(例: 'a'を' const'と宣言した場合)ので、余分な要素を割り当てる必要はありません。後者の場合、それぞれの 'push_back'コールはより多くのコールが来ると仮定しているので、ベクトルは保守的であり、場合によってはより多くの割り当てを行います。 – KABoissonneault