在 这篇文章的注释部分有一个关于使用 std::vector::reserve()
和 std::vector::resize()
的线程。
以下是原始代码:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
我相信要在 vector
中编写元素,正确的做法是调用 std::vector::resize()
,而不是 std::vector::reserve()
。
实际上,在 VS2010 SP1的调试版本中,下面的测试代码“崩溃”了:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
我是对的还是错的? VS2010 SP1是对的还是错的?