这篇文章的评论部分有一个关于使用 std::vector::reserve 的帖子() vs. 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 是对的,还是错的?