Frage zu valarray ( valarray<double> = valarray<int> )
-
Hallo Forum.
Mir liegt ein std::valarray<int> T vor. Ich benötige für nachfolgende Berechnungen ein std::valarray<double>.
Folgender Code funktioniert aber nicht:
std::valarray<int> T; // vorab definiert und Werte dringeschrieben, hier also nur gekürzte Fassung. std::valarray<double> D = T;
Danke für Eure Hilfe!
-
std::transform vielleicht
-
Hallo. Also erst mal Danke für die schnelle Antwort. Kannst Du das etwas präzisieren?
Ich könnte mir zwar folgende Lösung vorstellen:
D.resize( T.size() ); for (size_t i=0; i<T.size(); ++i) D[i] = static_cast<double>(T[i]);
aber so wirklich gefallen tut mir das nicht!
-
http://www.google.de/search?hl=de&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=std::transform&spell=1
o.O das google orakel sollte heilig gesprochen werden !
-
@orakel_beschwörer: Danke, aber Google kenne ich. Wenn ich dort eine Antwort gefunden hätte, hätte ich nicht im Forum nachgefragt.
Wie sähe die Lösung mit std::transform denn aus? So geht es ja nicht:
D.resize( T.size() ); std::transform( T[0], T[ T.size() ], D[0], static_cast<double> );
Vielen Dank im Voraus.
-
struct itod{ double operator()(int i){ return static_cast<double(i); } }; //... std::transform(&T[0], &T[T.size()], &D[0], itod());
-
Mal bischen boost::lambda Werbung machen
std::transform( &T[ 0 ], &T[ T.size() ], &D[ 0 ], ( ll_static_cast< double >( _1 ) ) );
-
begin() und end() benutzen
-