Існує потік в розділі коментарів в цьому записі про використання 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, чи це неправильно?