在这篇文章的评论区有一个关于使用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的debug构建中,以下测试代码会“崩溃”:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
我是对的,还是错的?而且,VS2010 SP1是对的,还是错的?
resize()
,并且疑问已得到解决。对于版主们:如果认为这个问题“过于局限”,请随意删除它;或者如果您认为它可能会在未来帮助其他人,请保留它。 - Mr.C64