Verständisproblem bei Zeigern



  • Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( std::swap aus <algorithm> ) und sogar für das Sortieren ( std::sort aus <algorithm> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( std::stable_sort aus <algorithm> ).



  • Nexus schrieb:

    P.S.: Erst jetzt aufgefallen: Normalerweise schreibt man "swap" und nicht "swab" 🙂

    Die Funktion swab sollte sort heissen und die Funktion tausch sollte man swap nennen.



  • Übrigens schreibt man am Ende der Funktionsdefinition kein Semikolon!

    PS: Sorry wegen den drei Beiträgen nacheinander.



  • EOutOfResources schrieb:

    Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( std::swap aus <algorithm> ) und sogar für das Sortieren ( std::sort aus <algorithm> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( std::stable_swap aus <algorithm> ).

    Ja, wollte ganz gerne den Umgang mit Zeigern im Zusammenhang mit Funktionen lernen, das Sortierprogramm ist da eher zufällig.

    Nexus schrieb:

    P.S.: Erst jetzt aufgefallen: Normalerweise schreibt man "swap" und nicht "swab"

    "swab" habe ich deshalb geschrieben, damit es nicht zu Verwechslungen mit der gleichnamigen, in der iostream-Bibliothek enthaltenen Funktion kommt.

    EOutOfResources schrieb:

    Übrigens schreibt man am Ende der Funktionsdefinition kein Semikolon!

    Ok.
    In dem Tutorial( http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=15&nocache=1 )wird das so praktiziert.



  • EOutOfResources schrieb:

    redrew99 schrieb:

    Ich verstehe leider nicht, warum es z.B. in Zeile 17 nicht

    tausch(&b,&a);
    

    heißen müßte.

    Weil a und b in diesem Scope bereits vom Typ int* sind.

    Ok,danke.

    EOutOfResources schrieb:

    Und lese dich in das Kapitel "Referenzen" deines Buches ein.

    Werde ich auf jeden Fall noch machen. In dem Tutorial wird von der Verwendung von Referenzen in diesem Zusammenhang abgeraten, deshalb habe ich Zeiger genommen.



  • redrew99 schrieb:

    "swab" habe ich deshalb geschrieben, damit es nicht zu Verwechslungen mit der gleichnamigen, in der iostream-Bibliothek enthaltenen Funktion kommt.

    Genau deshalb rate ich immer vor der Verwendung von " using namespace std; ab.

    PS: Das Tutorial ist alt. Man sieht es an folgendem Code:

    #include <iostream.h>    //Fehler 1: <iostream> wäre korrekt
    void main()              //Fehler 2: int sollte der Rückgabewert sein
    {
       int a=1;
       int &ra=a;
       cout<<"a: "<<a<<endl; //Fehler 3: cout ist im Namensbereich std
       ra=2;
       cout<<"a: "<<a<<endl;
    };                       //Ich denke, dass das der vierte Fehler ist aber bin mir nicht sicher
    


  • EOutOfResources schrieb:

    Nicht zu vergessen ist, dass die STD auch Funktionen für das Austauschen ( std::swap aus <algorithm> ) und sogar für das Sortieren ( std::sort aus <algorithm> ) oder wenn die Sortierung stabil sein soll kann man auch die stabile Sortierung der STD nutzen ( std::stable_swap aus <algorithm> ).

    stable_swap? Du meinst sicher stable_sort.



  • Ich versteh, dass das eine Übung zu Zeigern ist, aber haben Zeiger in diesem konkreten Anwendungsfall Vorteile gegenüber Referenzen? Oder gibt es andere triftige Gründe, warum sie hier verwendet werden sollten?

    Edit: die Frage ging an die Experten im Forum.


  • Mod

    @[Rewind]: Dies ist sogar ein Paradebeispiel dafür, wo man Referenzen statt Zeigern verwenden sollte.



  • DocShoe schrieb:

    Du meinst sicher stable_sort.

    Oh man, wie peinlich. Ich habs gefixt.



  • Das Tutorial, wo konkret für dieses Beispiel von der Vewendung von Referenzen abgeraten wird, wird hier in diesem Forum empfohlen.

    s. Lektion 37

    http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=15&nocache=1


Anmelden zum Antworten