Es ist ein Thread in den Kommentaren in diesem Beitrag über die Verwendung von std::vector::reserve()
vs. std::vector::resize()
.
Hier ist der Originalcode:
void MyClass::my_method()
{
my_member.reserve(n_dim);
for(int k = 0 ; k < n_dim ; k++ )
my_member[k] = k ;
}
Ich glaube, um Elemente in das zu schreiben vector
, ist es richtig, anzurufen std::vector::resize()
, nicht std::vector::reserve()
.
Tatsächlich "stürzt" der folgende Testcode in Debug-Builds in VS2010 SP1 ab:
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.reserve(10);
v[5] = 2;
return 0;
}
Habe ich recht oder irre ich mich? Und ist VS2010 SP1 richtig oder falsch?