ich einen Code haben, wie folgt:ersetzen `std :: VECTOR` mit` std :: array`
int n;
int get_the_number();
void some_computations();
int main()
{
n = get_the_number();
some_computations()
return(0);
}
Die
get_the_number
Funktion eine Eingabe erhalten und gibt die ganze Zahln
, die nach dem Aufruf wird nicht geändert.In der
some_computation
Funktion gibt es den folgenden Codestd::vector<my_struct> my_array; for(int i=0; i<n; i++) { my_struct struct_temp; // fill struct_temp; my_array.push_back(struct_temp); }
Frage: Da die Größe my_array
a priori bekannt ist, ist es möglich, die std::vector
mit einem std::array
zu ersetzen? Sollte ich darüber hinaus im positiven Fall einen Effizienzgewinn erwarten?
Ich versuchte, die Vektor-Deklaration mit
std::array<my_struct,n> my_array;
aber ich erhalte eine Fehlermeldung zu ersetzen: die Größe des Arrays muss konstant sein. Gibt es eine Möglichkeit, es zu vermeiden?
Vielen Dank.
sieht aus wie ich nicht schnell genug tippen. :) –
Vielen Dank für die schnelle und klare Antwort. Ich wusste vorher nichts von constexpr: Ich muss viel lernen! – 888