reserve()函数预先分配容量(capacity),但并不添加元素。vector调用reserve()函数后,迭代器begin和end的地址是相同的。end的地址会随着元素的插入而变化。
#include <iostream>
#include <vector>
int main(){
std::vector<int> vec;
vec.reserve(5);
std::vector<int>::iterator i = vec.begin();
std::vector<int>::iterator j = vec.end();
std::cout << "before: " << std::endl;
std::cout << "vec.begin: " << &*i << " vec.end: " << &*j << std::endl;
vec.push_back(1);
vec.push_back(2);
i = vec.begin();
j = vec.end();
std::cout << "after push into 2 elements: " << std::endl;
std::cout << "vec.begin: " << &*i << " vec.end: " << &*j << std::endl;
vec.push_back(3);
vec.push_back(4);
vec.push_back(5)