c ++ - Typcast-Array

7

Wie kann man ein Array von int in ein Array von float schreiben? Danke.

    
Karl Glaser 15.12.2009, 16:01
quelle

5 Antworten

19
%Vor%     
ephemient 15.12.2009, 16:14
quelle
11

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.

hat

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%     
Charles Salvia 15.12.2009 16:06
quelle
4

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:

%Vor%

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 ...

    
Brian R. Bondy 15.12.2009 16:06
quelle
3

IMO, benutze tranform und konvertiere int Vektor in float Vektor.

%Vor%     
aJ. 15.12.2009 16:10
quelle
2

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.

    
Pavel Radzivilovsky 15.12.2009 16:02
quelle

Tags und Links