В разделе комментариев в этом сообщении есть поток, посвященный использованию 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 прав, или это неправильно?