Jest wątek w sekcji komentarzy w tym poście na temat korzystania std::vector::reserve()
Vs. std::vector::resize()
.
Oto oryginalny kod:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
Uważam, że aby wpisać elementy w elemencie vector
, właściwą rzeczą jest wywołanie std::vector::resize()
, a nie std::vector::reserve()
.
W rzeczywistości następujący kod testowy „ulega awarii” w kompilacjach debugowania w VS2010 z dodatkiem SP1:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
Mam rację, czy się mylę? I czy VS2010 SP1 jest poprawny, czy nie?