void test_vector4()
{vector<int> v1;//cout << v1.max_size() << endl;//v1.reserve(10);v1.resize(10);for (size_t i = 0; i < 10; i++){v1[i] = i;}for (auto e : v1){cout << e << " ";}cout << endl;}
在上面这段代码中对比了reserve和resize两种情况下的输出,会发现当使用reserve时,会中中断运行,是走不通的,是因为reserve是访问有效数据,0-1才是有效数据,reserve是减少扩容的消耗,他是首先开好空间,但不会扩容,所以在[]检测判断以下情况时,就会发生错误:
此时,有两种解决办法:
第一种,将reserve改为resize,resize直接将空间开好,并且把size也提上来
void test_vector4()
{vector<int> v1;v1.resize(10);for (size_t i = 0; i < 10; i++){v1[i] = i;}for (auto e : v1){cout << e << " ";}cout << endl;
}
第二种:
void test_vector4()
{vector<int> v2;v2.reserve(10);for (size_t i = 0; i < 10; i++){v2.push_back(i);}for (auto e : v2){cout << e << " ";}cout << endl;
}
所以,正确使用就不会出现特别大的问题