Frage

Ich denke, ich bin verwirrt mit instantierenden Objekten .. Nun .. Nicht ordnungsgemäß objekt, da new-Anweisungen einen Kompilierfehler erstellen.Mein Hintergrund ist in Python und Java, und ich stecke vor C ++, um Objekte zu erstellen, die keine Klassen sind.

Ich übersetze einen Algorithmus aus C # und für Maschinenlernen und verwendet ein Array von mehrdimensionalen Arrays.

c # -Code: generasacodicetagpre.

Ich habe mich entschieden, die Boost-Bibliothek für das mehrdimensionale Array zu verwenden, und ich habe: generasacodicetagpre.

und ich erhalte diesen Laufzeitfehler:

hmm :: lernen >> vor
std :: bad_alloc 'Was (): std :: bad_allec

War es hilfreich?

Lösung

The vectors have no space allocated (well it may be reserved already but you can't reference it with the array indexers). Change the lines:

epsilon[i] = matrix3D(boost::extents[T][states][symbols]);
gamma[i] = matrix2D(boost::extents[T][states]);

To:

epsilon.push_back(matrix3D(boost::extents[T][states][symbols]);
gamma.push_back(matrix2D(boost::extents[T][states]);

that should solve it. In your case since you know the array size you should reserve that much space in the vectors so that it reduces the reallocations needed:

epsilon.reserve(N);
gamma.reserve(N);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top