std::vector的reserve和resize的區別
1. reserve: 分配空間,更改capacity但不改變size
2. resize: 分配空間,更改capacity也改變size
這兩條初始學STL就記住的。
分析下以下小程序的運行結果:

{
std::vector<int> vec;
vec.reserve(100);
std::cout << vec.capacity() << std::endl;
vec.resize(100);
std::cout << vec.capacity() << std::endl;
}

{
std::vector<int> vec;
vec.reserve(100);
std::cout << vec.capacity() << std::endl;
vec.resize(50);
std::cout << vec.capacity() << std::endl;
}

{
std::vector<int> vec;
vec.resize(100);
std::cout << vec.capacity() << std::endl;
vec.push_back(1);
std::cout << vec.capacity() << std::endl;
}
結論:
如果知道vector的大小,resize一下可以當數組來用,不會分配多余的內存。
1. reserve: 分配空間,更改capacity但不改變size
2. resize: 分配空間,更改capacity也改變size
這兩條初始學STL就記住的。
分析下以下小程序的運行結果:




























結論:
如果知道vector的大小,resize一下可以當數組來用,不會分配多余的內存。