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 правильным или неправильным?

Ответы на вопрос(6)

Ваш ответ на вопрос