front_inserter & vector



  • Ich habe eine Filter-Routine geschrieben...
    Am Anfang bereite ich mir die Daten vor:

    vector<double> VecFilt;
       vector<double> dummy;
       int paddings=(int)ceil((double)order/2);
       copy(VecOrig.begin(),VecOrig.begin()+paddings, back_inserter(dummy));
       reverse(dummy.begin(),dummy.end());
       copy(dummy.begin(),dummy.end(), [b]front_inserter(VecOrig)[/b]);
       dummy.clear();
       paddings=(int)floor((double)order/2);
       copy(VecOrig.end()-paddings,VecOrig.end(), back_inserter(dummy));
       reverse(dummy.begin(),dummy.end());
       copy(dummy.begin(),dummy.end(), back_inserter(VecOrig));
    

    aber ich kann nicht front_inserter für ein Vector benutzen... Wie gehe ich vor, sodass VecOrig ein vector bleibt? Die Elemente von dummy sollten am Angang von VecOrig gespiegelt kopiert?? OyEE! Ich weiß nicht, ob ich klar war.

    Danke!



  • Front-Inserter funktionieren nur, wenn der Container push_front() besitzt (das betrifft in der STL nur deque und list) - für alle anderen müsstest du einen allgemeinen inserter verwenden.

    (PS: Wenn dabei die Reihenfolge falsch herum ist, kannst du den reverse()-Aufruf weglassen oder den Bereiche dummy.rbegin()..dummy.rend() kopieren)



  • Danke CStoll!
    Gibt es nicht eine Lösung ohne mit einem deque zu arbeiten? Welche insert Funktion soll ich benutzen, dass ich Elemente am Anfang eines Vektors einfügen kann.
    Oder vielleicht kann ich mit einem deque arbeiten.. aber dannach wie kopiere ich die Elemente von deque in einem Vektor zurück?

    und Danke für die Idee mit rbeginn() and rend()



  • carmen schrieb:

    Gibt es nicht eine Lösung ohne mit einem deque zu arbeiten?

    Sicher, aber dann funktioniert der STL front-Inseter nicht.

    Welche insert Funktion soll ich benutzen, dass ich Elemente am Anfang eines Vektors einfügen kann.

    Die, bei der du die Zielposition angeben kannst:

    vec.insert(vec.begin(),wert);
    

    Oder vielleicht kann ich mit einem deque arbeiten.. aber dannach wie kopiere ich die Elemente von deque in einem Vektor zurück?

    Auch wieder per insert() 😉 (oder per assign(), wenn du den bisherigen Inhalt nicht mehr benötigst)

    PS: Was genau soll deine Funktion eigentlich bewirken?



  • Habe das Problem schon gelöst...
    Ich habe ein FIR Filter Funktion geschrieben. Wir haben die original Zeitreihe durch diese 'paddings' verändert und damit auch die Formel der Filterungsfunk. und jetzt teste ich die Ergebnisse in MATLAB...Wenn die Idee gut war, versuche ich weiter zu optimieren oder nur mit Vektoren zu arbeiten...

    Danke für deine HIlfe!


Anmelden zum Antworten