std :: vector :: resize () против std :: vector :: reserve ()
В разделе комментариев есть веткаэта почта об использовании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 правильным или неправильным?