c++ Typumwandlung array
Wie kann man typecast ein array von int in ein array von float?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie kann man typecast ein array von int in ein array von float?
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ein array von
int
s, was Sie im Grunde haben, ist ein block von Nint
s im Speicher zusammenhängend gespeichert. Ein array von floats, allerdings wäre N schwimmt im Speicher zusammenhängend gespeichert, D. H. eine völlig andere Reihenfolge der bits im Speicher. Darüber hinaus werden die floating point Werte sind vertreten im Binär -, in einer ganz anderen Weise als Integrale Werte. In der Tat, Sie können nicht einmal sicher sein, dass einint
ist die gleiche Größe wie einfloat.
Also müssen Sie entweder den cast jedes
int
zu einemfloat
getrennt, da Sie Prozess-array, sonst erstellen Sie ein völlig anderes array kopieren, das original-array.Zum Beispiel, können Sie einfach konvertieren Sie jedes int in ein float faul, wie Sie Prozess-array:
Wenn Sie die Verwendung von Vektoren anstelle von arrays können Sie dann den iterator in den Konstruktor von vector zu tun, die Kopie.
Wenn Sie als Eingabe ein array, aber du kannst als Ausgabe einen Vektor, Sie könnte dies auch tun:
Wenn Sie brauchen, wie input und output ein array ist, können Sie
std::copy
, sondern nur sicherstellen, dass Ihre output-array ist groß genug:Hinweis:
std::copy
, und dem Vektor-Konstruktor wird nicht blind kopieren Sie den Speicher, es wird implizit cast zwischen den 2 Arten für jedes element. Es führt die Aufgaben *result = *first, *(result + 1) = *(first + 1), und so weiter...IMO, Verwenden Sie Transform und konvertieren von int-Vektor float-Vektor.
std::copy
wird hier tun, ist ausreichend;std::transform
funktioniert, ist aber unnötig.static_cast
ist auch unnötig.Können Sie nicht.
Erstellen Sie ein array, und kopieren Sie manuell Elemente mit einer Schleife.
In C++ - compiler in der Regel nicht in Schleifen in dem resultierenden binären die zimmerreserviereung, ohne das Sie explizit sehen, dass in Ihrem code.