Có một chủ đề trong phần ý kiến trong bài này về việc sử dụng std::vector::reserve()
vs std::vector::resize()
.
Đây là mã gốc:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
Tôi tin rằng để viết các phần tử trong vector
, điều chính xác cần làm là gọi std::vector::resize()
, không phải std::vector::reserve()
.
Trên thực tế, mã kiểm tra sau "gặp sự cố" trong bản dựng gỡ lỗi trong VS2010 SP1:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
Tôi đúng, hay tôi sai? Và VS2010 SP1 là đúng, hay là sai?