Vectorinhalte tauschen



  • Guten Tag,

    ich habe die Aufgabe einen Vector zu sortieren. Und so, dass in diesem Fall nur die 1 mit der 3 getauscht werden.

    Als erstes habe ich einen Vector erstellt mit: 1,2,3.

    void main (void){
    
    	vector <int> vec;
    
    	vec.push_back(1); 
    	vec.push_back(2); 
    	vec.push_back(3);
    }
    

    zusätzlich habe schonmal das Tausch-Template geschrieben.

    template <class T> void swap_own(T& x, T& y){
    	T tmp=x;
    	x=y;
    	y=tmp;
    }
    

    Nun möchte ich eine Funktion schreiben, die die 3 mit der 1 tauscht, also dass: 3,2,1 die Sortierreihenfolge ist.
    Die Funktion soll arbeiten, dass getestet wird, ob das größte Element am Anfang steht... und wenn nicht, soll das größte Element zur 1.Position getauscht werden

    Könnt ihr mit weiterhelfen?
    Dankeschön 🙂


  • Mod

    😕 Was möchtest du wissen? Du hast doch schon alles, wonach du fragst.



  • hardy24 schrieb:

    ich habe die Aufgabe einen Vector zu sortieren.

    Das ist einfach.

    std::sort(vec.begin(), vec.end(), std::greater<int>())
    

    hardy24 schrieb:

    zusätzlich habe schonmal das Tausch-Template geschrieben.

    Warum das Rad neu erfinden? Gibts doch auch schon mit std::swap.



  • pumuckl schrieb:

    Das ist einfach.

    std::sort(vec.begin(), vec.end(), std::greater<int>)
    

    Da fehlen noch die beiden runden Klammern, um das Funktionsobjekt zu konstruieren. 🙂



  • Prinzipiell alles gesagt, außer: "void main" existiert nicht. Wenn es dein Compiler schluckt hast du Glück (oder eine niedrige Warnstufe eingestellt). Es heißt IMMER "int main".



  • 314159265358979 schrieb:

    Da fehlen noch die beiden runden Klammern, um das Funktionsobjekt zu konstruieren. 🙂

    Danke, habs korrigiert.


Anmelden zum Antworten