1.resize和reserve的区别和联系
相同点:两者都只会让vector的capacity不减小,参数为newsize时,当newsize小于capacity时,调用后二者的capacity都不变
不同点:当newsize小于capacity时,调用后resize析构多余的元素并且改变size的大小个空间,并没有释放空间,只是没有 ;而reverse不会改变size 也不会析构元素
2.resize reserve在增容时 的反应
//resize reserve在增容时 的反应
void test()
{
vector<int> a;
a.push_back(1);
cout<<"capacity:"<<a.capacity()<<endl;
cout<<"size:"<<a.size()<<endl;
a.resize(10);
cout<<"resize 10 "<<"capacity:"<<a.capacity()<<endl;
cout<<"size:"<<a.size()<<endl;
a.reserve(20);
cout<<"reserve 20 "<<"capacity:"<<a.capacity()<<endl;
cout<<"size:"<<a.size()<<endl;
a.resize(1);
cout<<"resize 1 "<<"capacity:"<<a.capacity()<<endl;
cout<<"size:"<<a.size()<<endl;
a.reserve(20);
cout<<"reserve 20 "<<"capacity:"<<a.capacity()<<endl;
cout<<"size:"<<a.size()<<endl;
}

ST
3.vector每次增容多少
//每一次增容都增加1/2
void test_push()
{
vector<int> v;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
v.push_back(1);
cout<<"size:"<<v.size()<<endl;
cout<<"capacity:"<<v.capacity()<<endl;
}

4.如何强制释放空间
void testdelete()
{
vector<int> v;
v.push_back(1);
v.push_back(1);
v.push_back(1);
v.push_back(1);
v.push_back(1);
//强制释放v的空间
vector<int> t;
v.swap(t);
cout<<t.size()<<endl;
cout<<v.size()<<endl;
//强制释放t的空间
vector<int>().swap(t);
cout<<t.size()<<endl;
//注意即使使用clear也不会真的释放空间
vector<int> j;
j.push_back(1);
j.push_back(1);
j.push_back(1);
j.clear();
cout<<j.size()<<endl;
cout<<j.capacity()<<endl;
}
