以下是向量程序,並給出了在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