class A
{
public:
A():a(0)
{}
A(int x):a(x)
{
cout<<"convert"<<endl;
}
A(const A& rhs):a(rhs.a)
{
cout<<"copy: "<<a<<endl;
}
void print()
{
cout<<a<<endl;
}
void Set(int x)
{
a=x;
}
private:
int a;
};
int main()
{
vector<A>vec2(2,A(100));
cout<<"the size: "<<vec2.size()<<" the capacity: "<<vec2.capacity()<<endl;
vec2.push_back(17);
for(int i=0; i<vec2.capacity();i++)
{
vec2[i].print();
}
cout<<"the size: "<<vec2.size()<<" the capacity: "<<vec2.capacity()<<endl;
}
変換 コピー:100 コピー:100 サイズ:2容量:2 変換 コピー:17 コピー:100 コピー:100 100 100 17 0
なぜこれが起こったのか
copy: 17
copy: 100
copy: 100
容量は4ではなく5のようです。プッシュしたい要素がベクトルにプッシュされた後、容量が増加しました。間違っているはずです。誰かに詳細を教えてもらえますか?