std::pair



  • way schrieb:

    Ahoi zam'.
    kann mir einer erklären was std::pair ist? Würde mich freuen wenn mir eventuell sogar einer nen einfach zu verstehendes Beispiel geben würde.
    Danke im Voraus!

    std::pair, ist wie der Name schon sagt ein Wertepaar.

    In etwa wie folgt:

    namespace std {
      template<typename T1, typename T2>
      class pair
      {
        T1 first;
        T2 second;
      };
    }
    

    Einsatz findet dies häufig an Stellen wo man entweder 2 Werte als Rückgabe hat, ohne gleich eine eigene Struktur zu basteln, oder wo Wertepaare (wie z.B. in der std::map) verwendet werden.

    Beispiel:

    std::pair<int, int> foo()
    {
        // std::make_pair ist eine Templatefunktion um die Argumente nicht
        // zwangsweise angeben zu können
        return std::make_pair(1, 2);
    }
    

    cu André



  • volkard schrieb:

    ist ein paar. wird genommen, um zwei sachen zurückzugeben. und wird genommen, um leute zu verwirren. letzteres ist glaube ich die hauptanwendung.

    int berechneUmfangUndFlaecheVomQuadrat(double a){
       return std::pair<double,double>(a*a,4*a);
    }
    

    Nur als HInweis:
    int und std::pair<...> ist nicht kompatibel -> compiler error.
    Gruss Simon



  • Im neuen Standard soll std::pair als deprecated markiert werden und stattdessen das flexiblere std::tuple mit beliebig vielen Werten zum Einsatz kommen.



  • Hallöschen

    Danke erstmal für die tollen Antworten!
    Wie darf ich das mit dem neuen Standard verstehen? Wird es wieder einen neuen ISO-Standard geben? Dachte das wäre alle paar Jahre...

    Mfg.
    way



  • Hehe, davon ist hier im C++-Forum schon die ganze Zeit die Rede. 🙂

    Schau dir vielleicht mal diesen Artikel an, dort siehst du eine kleine Einführung in C++0x (C++09 kann mans wohl eher nicht mehr nennen :().


  • Administrator

    way schrieb:

    Dachte das wäre alle paar Jahre...

    *lol* Guter Witz!
    Der letzte ISO Standard für C++ war 1998 und auch der erste :p
    Das von 2003 war nur ein Technical Report und kein eigener Standard. Wenn alles gut geht, wird der Standard im 2010 verabschiedet, also 12 Jahre nach dem letzten Standard 😉

    Grüssli



  • Hallo

    ...also 12 Jahre nach dem letzten Standard 😉

    ... ist das nicht alle paar Jahre? (:

    Mfg.
    way'n interessierts



  • way schrieb:

    way'n interessierts

    Hey! Etwas mehr Respekt für die Anliegen der C++-Programmierer! 😃



  • way schrieb:

    ...also 12 Jahre nach dem letzten Standard 😉

    ... ist das nicht alle paar Jahre? (:

    Ähm, ich frage mich wie du in der IT überleben kannst, wenn du hier schon "alle paar Jahre" sagst ;). Ich frische mein Wissen regelmäßig auf, und versuche dies zu erweitern. Bei C++ habe ich im Vergleich zu einigen anderen Sprachen hier jedenfalls keine Hektik der Entwicklung Stand zu halten.



  • Dravere schrieb:

    way schrieb:

    Dachte das wäre alle paar Jahre...

    *lol* Guter Witz!
    Der letzte ISO Standard für C++ war 1998 und auch der erste :p
    Das von 2003 war nur ein Technical Report und kein eigener Standard. Wenn alles gut geht, wird der Standard im 2010 verabschiedet, also 12 Jahre nach dem letzten Standard 😉

    Nö, 2003 war ein neuer Standard bzw. eine Fehlerkorrektur! Der Technical Report war erst 2006.


Anmelden zum Antworten