Hay un hilo en la sección de comentarios de este post sobre el uso std::vector::reserve()
vs std::vector::resize()
.
Aquí está el código original:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
Creo que para escribir elementos en el vector
, lo correcto es llamar std::vector::resize()
, no std::vector::reserve()
.
De hecho, el siguiente código de prueba "falla" en las compilaciones de depuración en VS2010 SP1:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
¿Estoy en lo cierto o estoy equivocado? ¿VS2010 SP1 es correcto o está mal?