Ich möchte einen 2D-Vektor (privat in einer Klasse) mit einer Größe 3xNmax initialisieren, wobei Nmax im Hauptbereich (außerhalb der Klasse) zugewiesen werden soll.Initialisiere einen Vektor in einer Klasse und übergebe seine Größe als Argument
Eigentlich habe ich:
class Particle
{
public:
Particle();
void setNmax(float Nmax){
_Nmax=Nmax; // this method is actually useless: _Nmax is set below
}
private:
int _Nmax=30000; // The parameter I want to set from outside
vector<vector<float> > _x{3, vector<float> (_Nmax)}; //the 2D vector to be initialized
Muss ich die Deklaration und Initialisierung im Konstruktor bewegen?
EDIT1: Vielen Dank für Ihre Antworten. In Anbetracht der Tatsache, dass ich nicht die Variable _Nmax verwenden muss, (da die Vektoren mit ihm eine eigene Größe haben), dachte ich, dass ich den Vektor mit einer bestimmten festen Größe (Nmax) am Anfang deklarieren und vermeiden würde, ihn während der Die Codeausführung würde meinen Code schneller laufen lassen anstatt ihn mehrmals zu verwenden. "Push_back" Ist diese Annahme richtig?
Es ist keine gute Idee, Ihre Variablennamen mit Unterstrichen zu beginnen. Es ist auch keine gute Idee, irrelevante Elementvariable zu haben, die die Anzahl der Elemente in dem Vektor angibt. Ein Vektor kennt seine eigene Größe, und die Einführung von "Helfer" -Variablen erhöht nur die Wahrscheinlichkeit, dass Fehler auftreten. – PaulMcKenzie
@PaulMcKenzie Das Setzen eines führenden (oder nachgestellten) Unterstrichs, um eine Elementvariable zu bezeichnen, ist ziemlich üblich. Ich stimme Ihnen zu, dass die Variable in diesem Fall überflüssig ist. –