Default-Wert für Vektor



  • Hallo!

    Wenn eine Methode optionale Argumente besitzt, dann gibt man denen ja bei der Deklaration oder Definition Default-Werte mit.
    Wie sieht so ein Default-Wert für Vektoren aus?

    Beispiel:

    // In der Header-Datei:
    void fuer_int(const unsigned int i = 0);
    void fuer_vector(const vector<string> = ???);
    

    Grüße, pktm



  • Ich würds über den Konstruktor machen:
    Bei einem Vektor, bei dem du drei Elemente mit "Hallo" machen willst:

    void Function(std::vector<std::string> Vec = std::vector<std::string>(3,"Hallo"))
    {
    }
    

    Bei einem leeren Vektor sähe das so aus:

    void Function(std::vector<std::string> Vec = std::vector<std::string>())
    {
    }
    

    Informier dich dazu noch über die Konstruktoren des std::vector:
    http://www.cppreference.com/cppvector/vector_constructors.html



  • Nexus schrieb:

    Ich würds über den Konstruktor machen:

    void Function(std::vector<int> Vec = std::vector<int>(3, 2))
    {
    }
    

    Bei einem leeren Vektor sähe das so aus:

    void Function(std::vector<int> Vec = sd::vector<int>())
    {
    }
    

    Informier dich dazu noch über die Konstruktoren des std::vector.

    Ja, mein Gedanke war, eben auf die Erzeugung eines leeren Vektors zur Übergabe als Parameter zu verzichten, indem ich den Parameter optional mache.



  • Sorry, ich hab meinen ersten Beitrag noch editiert, um ihn besser auf dein Problem abzuschneiden.

    Du kannst ja auf die Parameterübergabe des Vektors verzichten, da ein Default-Parameter besteht (erkennt man an dem 🙂

    Du kannst in meinem Beispiel also ruhig schreiben:

    Function();
    


  • Nexus schrieb:

    Sorry, ich hab meinen ersten Beitrag noch editiert, um ihn besser auf dein Problem abzuschneiden.

    Du kannst ja auf die Parameterübergabe des Vektors verzichten, da ein Default-Parameter besteht (erkennt man an dem 🙂

    Du kannst in meinem Beispiel also ruhig schreiben:

    Function();
    

    Ah, jetzt hab ich's kapiert. Danke.


Anmelden zum Antworten