Wie kann man ein Array von int in ein Array von float schreiben? Danke.
Wenn Sie ein Array von int
s haben, haben Sie grundsätzlich einen Block von N int
s im Speicher zusammenhängend gespeichert. Ein Array von Gleitkommazahlen würde jedoch N Gleitkommazahlen sein, die zusammenhängend im Speicher gespeichert sind, d. H. Eine völlig andere Bitsequenz im Speicher. Außerdem werden Fließkommawerte in einer ganz anderen Weise als Integralwerte dargestellt. Tatsächlich können Sie nicht einmal sicher sein, dass ein int
die gleiche Größe wie ein float.
Sie müssen also jedes int
entweder separat in ein float
umwandeln, während Sie das Array bearbeiten, oder ein völlig anderes Array erstellen, indem Sie das ursprüngliche Array kopieren.
Zum Beispiel könnten Sie einfach jedes int in einen Float konvertieren, während Sie das Array bearbeiten:
%Vor%Wenn Sie Vektoren anstelle von Arrays verwenden, können Sie den Iterator im Konstruktor des Vektors verwenden, um die Kopie zu erstellen.
%Vor%Wenn Sie ein Array als Eingabe haben, aber einen Vektor ausgeben können, können Sie das auch tun:
%Vor% Wenn Sie ein Array als Eingabe und Ausgabe benötigen, können Sie std::copy
verwenden, aber stellen Sie sicher, dass Ihr Ausgabearray groß genug ist:
Hinweis: std::copy
, und der Vektorkonstruktor wird nicht blind den Speicher kopieren, sondern implizit zwischen den 2 Typen für jedes Element . Es führt die Zuweisungen * result = * first, * (result + 1) = * (first + 1) usw. aus ...
Sie können nicht.
Sie müssen ein anderes Array erstellen und Elemente manuell mit einer Schleife kopieren.
In C ++ fügt der Compiler normalerweise keine Schleifen in die resultierende Binärdatei ein, ohne dass Sie dies explizit in Ihrem Code sehen.