returnen von mehreren werten?
-
pale dog schrieb:
Karawarankarahahaha schrieb:
Was auch immer diese Definition nicht erfüllt, ist keine Funktion. So sehen es die Mathematiker.
Ähnliche Gedanken haben sich die Entwickler der Programmiersprachen gemacht, und weil obendrein ein Register nur 32 Bit oder 64 Bit breit sein kann...das ist einfach so...

Das wäre allerdings eine Überraschung. Sozusagen packt die Funktion mehrere Rückgabewerte einfach in ein 32- oder 64- bit Register, und der Aufrufer freut sich darüber.
Vielleicht gibt's das ja in einer modernen Fassung von Hauff's Märchen. Es wäre jedenfalls ein märchenhaftes Wunder der Technik.
-
Karawarankarahahaha schrieb:
Wie auch immer, es ist ÜBLICH und GESUND, einer Funktion, die mehrere Rückgabewerte haben soll (und das ist nicht gerade selten), einen Zeiger auf einen VOM AUFRUFER bereitgestellten Speicherbereich als Parameter zu übergeben, in den die Funktion ihre Resultate hineinschreiben kann.
Soo ein Quark. Und dann noch ohne Begründung. Merke: Caps Lock schreit stets nach einer Begründung.
Wieso ist es üblich (habe ich in C++-Code außer in Spezialfällen und bei 'swap' noch nicht gesehen)? Wieso ist es gesund?
Was spricht dagegen, ein Tupel zurückzugeben und den Compiler die Optimierung (NROV ...) machen zu lassen? Der Mathematiker hätte zumindest *nichts* dagegen, denn aus dessen Sicht befindet man sich halt in einem höherdimensionalem Raum und gibt einen Vektor zurück -- so what? Das machen die sowieso den ganzen Tag, ohne sich dran zu stoßen.
@alle, die hier immer 'std::pair<T1, T2>' durch die Gegend werfen: Mögt ihr 'std::make_pair' nicht?