valarray::resize()
-
hihi, hab grad folgendes gefunden:
http://gcc.gnu.org/ml/gcc-bugs/2003-06/msg01518.htmldarin ist beschrieben, dass die gcc-version (alles überschreiben) standard-konform ist, die eine oder andere microsoft-version (nur neue elemente werden beschrieben) jedoch nicht...
Bleibt allerdings die frage wie ich mein dynamisch wachsendes valarray hinkrieg...
-
template<typename T> void FixedResize(valarray<T> &varr, size_t newSize, const &T v) { #ifdef GCC size_t oldSize = varr.size(); varr.resize(newSize); if(newSize>oldSize) { for(size_t i=oldSize;i<newSize;i++) varr[i] = v; } #else varr.resize(newSize,v); #endif }:p :p :p
-
tja, leider zwei kleine Fehlerchen drin:
1)auch das resize ohne Füllangabe (also valarray::resize(size_t) ) überschreibt den gesamten array mit T().- nicht der GCC muss gefixt werden, sondern VC6 und eventuell auch einige spätere Microsoft-Implementationen. Wie gesagt, das Verhalten des gcc IST scheinbar standardkonform...
-
o_O
na dann ebenvoid NotFixedResize(valarray<T> &varr, size_t newSize, const &T v) { valarray<T> newArray(v,newSize); for(size_t i=0;i<varr.size();i++) newArray[i] = varr[i]; varr = newArray; }dann doch lieber nicht konform und kein rumkopieren... :p
-
Wusstest du schon das man std::valarray meiden soll?
-
und wieso sollte man? hat mir schon einige gute Dienste erwiesen...
-
weil für das was du vor hast ein vector besser geeignet wäre?
-
wüsste nicht, dass man bei Vektoren die ganzen arithmetischen Operatoren und Funktionen zur Verfügung hätte, die ich bei dem Prog brauche (z.B. valarray::sum(), operator+, operator/, pow(valarray, valarray), um nur mal eine Handvoll zu nennen...)
Deswegen: Vector ist in diesem Fall alles andere als geeignet für mein Problem...
-
pumuckl schrieb:
Bleibt allerdings die frage wie ich mein dynamisch wachsendes valarray hinkrieg...
Selber basteln: Nimm dir einen vector als Aufbewahrungsort und implementiere die ganzen Operationen mit "for(it p=v.begin();p!=v.end();++p)" oder std::transform()

-
hm dann wohl eher so, dass ichs in nem vektor aufbaue und dann in ein valarray konvertiere... das für jede Operation hin und herzukonvertiern dürfte zu viel zeit kosten...