Mehrere Werte wie zurückgeben ?



  • hustbaer schrieb:

    Output-Parameter hatten wir ja schon.
    Zusätzlich gibt es dann noch Dinge wie std::pair<> und boost::tuple<>

    Und neuerdings auch std::tuple



  • hustbaer schrieb:

    @unskilled
    Von const hältst du nicht sehr viel, oder? 🤡

    normalerweise schon, aber wollte ihn im ersten post nicht durch x mal const verwirren.

    im 2. hab ich auf die schnelle nix gesehen 😛



  • Nene, eh im ersten.
    float durchschnitt(int* first, int size) und so Sachen, *schüttel*.

    Und mal ne doofe Frage: wieso die ganzen expliziten einFloatWert (operator) static_cast<float>(einIntegerWert) ?
    Die Konvertierung nach float ist in dem Fall doch sowieso implizit.
    Schmeisst dir der Compiler "conversion loses precision" Warnings oder ... 😕



  • hustbaer schrieb:

    Schmeisst dir der Compiler "conversion loses precision" Warnings oder ... 😕

    ich nehms mal an; habs nicht compiliert.



  • zeusosc schrieb:

    Das macht man mit einer call by reference

    krass. Ich bin zuversichtlich, dass das ist das langsamste Swap für ints war, das jemals in diesem Forum gepostet wurde.

    Und ich dachte, ich hätte alles gesehen...definition ein Kandidat für tdwtf



  • Nicht nur das langsamste, auch das hässlichste. Wenn, dann schon so:

    template <typename T>
    void swap(T& a, T& b)
    {
        T tmp(std::move(a));
        a = std::move(b);
        b = std::move(tmp);
    }
    

    Oder eben gleich std::swap benutzen.



  • unskilled schrieb:

    hustbaer schrieb:

    Schmeisst dir der Compiler "conversion loses precision" Warnings oder ... 😕

    ich nehms mal an; habs nicht compiliert.

    Dann aber erst recht die Frage: wozu die Casts?



  • weil ich es nicht mag, eine warning zu bekommen, obwohl ich weiß, was ich dort tue.
    hab aber gerad keinen compiler zur hand. wenn ich mich recht entsinne, schmeißt der msvc aber ne warning:

    int main()
    {
     int a = 0, float b = 1.f;
    
     float c = a/b;
    }
    

    vll mags ma jmd mit /W4 compilieren?!

    bb



  • Ah, OK. Ja, mach ich auch so, wenn beim Compilieren grundsätzlich Warnings bekommt, ist das Feature für die Katz.
    War mir jetzt nur nicht ob das "ich nehms mal an; habs nicht compiliert." heissen sollte "ja, das war mein Grund".



  • zeusosc schrieb:

    Das macht man mit einer call by reference

    z.b.:

    void swap(void*_ptr_1 , int & k)
    {
    int iNt=0;
    
    iNt=*((int*)(_ptr_1));
    memcpy(_ptr_1,(void*)&k,sizeof(int));
    k=iNt;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    int a=1;
    int b=2;
    swap((void*)&a,b);
    
    __debugbreak();
    
    	return 0;
    }
    

    grüße

    Was'n Quatsch.

    Das taugt höchstens für sowas: http://www.ioccc.org/
    ist aber mit Sicherheit in keinster Weise eine Hilfe für iso89.


Anmelden zum Antworten