Vector an Funktion übergeben mit double-Zeiger



  • Guten Tag zusammen,

    ich hätte eine Frage und zwar: Ich habe einen

    vector<double> t

    mit vielen Werten gegeben. Die Anzahl der Werte und demnach t.size() variiert je nach Eingabe nach Aufruf. Außerdem habe ich eine Funktion gegeben, die folgendermaßen definiert ist:

    void beispielfunktion(double* uebergabe){
      for{int k=0; k<=beliebige_grenze; k++){
        uebergabe[k]=uebergabe+k;
      }
    }
    

    ist es möglich, den Vector ohne die einzelnen Vektorelemente einem dynamischen double array zuzuweisen (lange Laufzeiten, weil viele Werte) an die Funktion zu übergeben? Oder kann man einfach keinen vector<double> typen einem doubole* zuweisen?

    Für jegliche Hinweise bin ich sehr verbunden! 😋



  • Du kannst einfach die data()-Funktion deines Vectors aufrufen oder einfach die Adresse des nullten Elementes nehmen. Siehe http://www.cplusplus.com/reference/vector/vector/data/

    Allerdings solltest du deiner Funktion noch die Lände des Vectors mitgeben, da du das nicht mehr weißt.

    Was spricht dagegen, einfach den Vector selbst (bzw. eine Referenz auf den Vector) als Parameter zu übergeben statt eines Pointers auf double?


  • Mod

    wob schrieb:

    Was spricht dagegen, einfach den Vector selbst (bzw. eine Referenz auf den Vector) als Parameter zu übergeben statt eines Pointers auf double?

    Oder besser noch: Beliebige Iteratoren für Anfang und Ende, so wie das die Standardbibliothek macht.



  • Vielen Dank für die zügigen Antworten,damit funktioniert jetzt alles wie es soll! 👍 🙂
    aus programmtechnischen Gründen durfte ich die Funktion nicht umschreiben 😕


Log in to reply