Konsolen Memorie
-
Übrigens liegen die Karten hierbei immer nebeneinander
versteh ich nicht ><
Wieso übergibst Du primitive Typen als Referenz?
Weils auch nicht schadet - Compiler überlegt sich schon, ob er sie kopiert oder nicht... Wenn ers nicht will is auch gut - nur, damit er sich nicht so eingeengt und beschnitten fühlt

Nein - weil ich so was idR auch als template-parameter mache...
Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^is halt ne angewohnheit - vll keine gute aber bis jz hatte ich noch keine probs damit.
oder siehst du iwas, was dagegen spricht?
bb
-
unskilled schrieb:
Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^
Wieso meinst du, könne man den Typ schneller ändern, wenn er als Referenz da steht (bei deinen Beispielen gehts ja nur um Änderungen zwischen primitiven Typen)? Oder hab ich dich falsch verstanden?
-
unskilled schrieb:
Übrigens liegen die Karten hierbei immer nebeneinander
versteh ich nicht ><
Du mischt Deine Paare mit random_shuffle. Nicht die einzelnen Karten.
unskilled schrieb:
Wieso übergibst Du primitive Typen als Referenz?
Weils auch nicht schadet - Compiler überlegt sich schon, ob er sie kopiert oder nicht... Wenn ers nicht will is auch gut - nur, damit er sich nicht so eingeengt und beschnitten fühlt

Nein - weil ich so was idR auch als template-parameter mache...
Außerdem gehts dann schneller den Typ zu ändern - selbst, wenn dann auf einmal nen long long oder double oder was weiß ich statt size_t steht, würde der compiler es richtig machen und ich müsste dann nicht noch jedes ma überlegen, was ich machen würde ^^is halt ne angewohnheit - vll keine gute aber bis jz hatte ich noch keine probs damit.
oder siehst du iwas, was dagegen spricht?
bb
Bist Du sicher, dass der Compiler sich aussuchen kann, ob er kopiert oder referenziert? Meines wissens ist der ref-Operator keine Empfehlung an den Compiler. Hast Du eine Quelle dafür?
Dagegen spricht, dass Du bei jedem Zugriff eine Derefenzierung hast.
-
naja...
//hpp: void ShowBla (const size_t &toout); //cpp: void ShowBla (const size_t &toout) { std::cout << toout; } //=>ändern, weil size_t ne mehr gut genug ist... //hpp: void ShowBla (const long long &toout); //nur typ ändern //cpp: void ShowBla (const long long &toout) //nur typ ändern { std::cout << toout; }und wenn man es ganz toll machen will, dann nimmt man ja statt size_t auch meiste std::vector::size_type oder wie au immer das genau ist - hab ich noch nie gemacht aber scho ab und an ma überlegt, es doch zu tun ^^
und da würde dann die referenz wahrscheinlich schon sinn machen - obwohl es auf ner 64bit cpu wahrscheinlich au ne mehr lohnt, ne 64bit große variable als referenz zu übergeben... hmm...also dann nur noch das ändern ^^
bb
-
unskilled schrieb:
also dann nur noch das ändern ^^
So hab ich das auch verstanden, aber ich hab mich gefragt, weil
size_tschon fast ein elementarer Datentyp ist (teilweise ist er doch alsunsigned intdefiniert?).Und für die Elementartypen kannst du dir (neben der entfallenden Dereferenzierung, die mir ein gutes Argument scheint) bei Übergaben als Kopie noch eine Menge Zeichen sparen

-
unskilled schrieb:
naja...
//hpp: void ShowBla (const size_t &toout); //cpp: void ShowBla (const size_t &toout) { std::cout << toout; } //=>ändern, weil size_t ne mehr gut genug ist... //hpp: void ShowBla (const long long &toout); //nur typ ändern //cpp: void ShowBla (const long long &toout) //nur typ ändern { std::cout << toout; }Wozu brauchts da eine Referenz?
Meinst Du, das long long ist so groß, dass es sich lohnt?
Wenn man den Parameter innerhalb der Funktion mehrfach benutzt (womöglich auch noch in einer Schleife) würde ich eher auf die Dereferenzierungen verzichten.
-
das war nicht an dich sondern an nexus....
bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist - und dann mit dem weitergearbeitet wird...
muss dich denke noch lang nicht interessieren...
aber kannst ja ma nach referenzen suchen um zu wissen, wozu die da sind...
solltest im forum au genug finden:grob - sie sind genau so, wie pointer, nur sicherer, cpp-iger und können nicht NULL sein...
bb
-
unskilled schrieb:
bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist
Und wie soll sein Wertebereich dann grösser sein als der eines
ints?unskilled schrieb:
muss dich denke noch lang nicht interessieren...
aber kannst ja ma nach referenzen suchen um zu wissen, wozu die da sind...
solltest im forum au genug finden:grob - sie sind genau so, wie pointer, nur sicherer, cpp-iger und können nicht NULL sein...
Das Konzept der Referenzen ist mir übrigens durchaus bekannt.

-
oh - sry...
ich war jz davon ausgegangen, dass der OP das gefragt hatte... ich les beim nächsten ma besser - versprochen
Und wie soll sein Wertebereich dann grösser sein als der eines ints?
rhetorische frage?
2^32 < 2^62
warum das passieren kann: kein plan... ich hab ja nur gesagt: für den fall, dass....
außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben - von daher kommt es aufs gleiche raus, ob ich nuconst size_t bla
oder size_t bla
oder const size_t &blaschreib - an der geschwindigkeit änder das gar nix...
bb
-
unskilled schrieb:
rhetorische frage?
2^32 < 2^62
Sorry, ich habe dich falsch verstanden und das "der" auf dein "long long (64bit)" bezogen:

unskilled schrieb:
bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist
unskilled schrieb:
außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben
Bist du dir da sicher, ob der Compiler das auch optimiert? Vor allem, wenn durch die Dereferenzierungen mehr Zeitverluste als durch die Kopie entstehen?
-
Nexus schrieb:
unskilled schrieb:
bei long long (64bit) ist es (vermutlich ^^) besser, nur einen pointer kopieren zu müssen, weil der ja (auf 32bit cpus) nur 32bit ist
sry, mein fehler ^^
Nexus schrieb:
unskilled schrieb:
außerdem wird kein compiler der welt (zumindest die relevanten) nen int wirklich als referenz übergeben
Bist du dir da sicher, ob der Compiler das auch optimiert? Vor allem, wenn durch die Dereferenzierungen mehr Zeitverluste als durch die Kopie entstehen?
Hmmm.. Wüsste jetzt zwar nicht, wie ich das rausfinden soll aber dachte gelesen zu haben, dass der Compiler da immer selbst entscheidet (genau wie bei inline) - solange der Copy-CTor einfach genug ist oder das Element kleiner ist, als die Registergröße sollte er es nicht referenzieren sondern kopieren - belehrt mich (bitte
) eines besseren, wenn ich falsch liege.bb
-
Nein, die Benutzung des Referenzoperators ist eine klare Anweisung und keine Empfehlung. Es wird mit Sicherheit keine Kopie erzeugt.
-
hmm... verdammt - ich weiß nich ma, nach was ich da suchen soll - aber ich bin mir sicehr, das ma iwo gelesen zu haben : <
wenn ichs find, dann post ich es noch - wenn nich, dann haste wo recht
^^
-
unskilled schrieb:
aber ich bin mir sicehr, das ma iwo gelesen zu haben
Naja, nicht jede Quelle ist zuverlässig. Ich hab z.B. schon sehr oft
void main()in Büchern und Tutorials gesehen.
-
Guter Vergleich >< Hab auch gerad überdurchschnittlich (für meine Verhätlnisse) lange gegoogelt und nix gefunden, was meine Vermutung rechtfertigen würde...
naja... bye
-
Du musst meine Antwort nicht gleich persönlich auffassen. Sie war nämlich kein Vorwurf, sondern nur die (eigentlich überflüssige) Feststellung, dass man nicht alles, was man irgendwo liest, auch so anwenden könne...
Und: Es ist mir klar, dass die Diskussion hier nicht mit
void main()zu vergleichen ist, es ging mir auch mehr ums Prinzip.
-
Das war eigtl ernst gemeint und ich habs dir auch nicht persönlich genommen ^^
bb
-
Okay, Smilies wie "><" und das "naja... bye" am Schluss haben mich ein bisschen stutzig gemacht. Tut mir leid, wenn ich das falsch interpretiert habe.
Aber nun ist ja alles gut

-
bin ungern im Unrecht ^^
bye
(besser? : > )
-
unskilled schrieb:
(besser? : > )
Ja
