resize 调整的是vector的大小,改变的是vector的size;如果resize的调整值小于vector的size,则会删除多余的元素;如果大于size,则增加元素。
reserve 调整的是vector的预分配的内存,改变的是vector的capacity。如果reserve的调整值大于vector的capacity,则会增加预分配的内存;如果小于capacity,则不做任何改变。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
cout << "a:";
for (auto iter = a.begin(); iter != a.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
a.resize(10, 5);
cout << "after resize1:";
for (auto iter = a.begin(); iter != a.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
a.resize(5, 5);
cout << "after resize1:";
for (auto iter = a.begin(); iter != a.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
cout << "a capacity1 :" << a.capacity() << endl;
a.reserve(100);
cout << "a capacity2 :" << a.capacity() << endl;
a.reserve(50);
cout << "a capacity3 :" << a.capacity() << endl;
return 0;
}