Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Objekte im Vector tauschen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
10.09.2004, 17:50 Uhr
~Dani
Gast


Hallo!

Wir haben nochmal eine Frage zu Vektoren.

Wir haben eine bubble-sort Methode implementiert (es wird absteigend nach strings sortiert), in der Objekte im Vector getauscht werden sollen. Allerdings scheint es mit = nicht zu funktionieren.... Hat jemand ne Idee wie wir das am besten machen können??

Hier die Methode:


C++:

vector<Medium*> mainVec;

vector<Medium*> getMainVec()
{
    return mainVec;
}

void Medium::sortType()
{
    int i,j;
    Medium *temp;
    bool swapped;
    for(i=getHelpVec().size()-1; i>=0; i--)
    {
        swapped = false;                        // Initialize swapped to FALSE
        for(j=0; j<i; j++)                      //  each time through the outerloop
        {
            if(getHelpVec()[j]->getType() < getHelpVec()[j+1]->getType())
            {
                temp = getHelpVec()[j];                    //
                getHelpVec()[j] = getHelpVec()[j+1];  //das scheint nicht zu gehen
                getHelpVec()[j+1] = temp;                //  
                swapped = true;                 // A swap was made, set swapped
            }                               //  to TRUE
        }
        if(!swapped)                            // If you didn't make any swaps,
        {
            return;
        }                         //  the array is already sorted
    }
    return;
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2004, 18:36 Uhr
(un)wissender
Niveauwart


std::sort benutzen ist eine bessere Idee.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.09.2004, 00:57 Uhr
~Dani
Gast


Vielen Dank schonmal für den Tipp.

Wir haben uns jetzt mal ein bisschen schlau gemacht, aber nirgendwo gefunden, wie man denn angeben kann nach welchem Attribut des Objektes sortíert werden soll.

Hat man einen Vector voller strings oder ints klappt das ja wunderbar, aber wie ist das wenn man einen vector voller "eigener" Objekte hat. Wir haben zB das Objekt Medium und wollen nach bestimmte Attributen, zB Titel oder Erscheinungsjahr sortieren. wo wird das denn angegeben???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.09.2004, 08:12 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von ~Dani:
Vielen Dank schonmal für den Tipp.

Wir haben uns jetzt mal ein bisschen schlau gemacht, aber nirgendwo gefunden, wie man denn angeben kann nach welchem Attribut des Objektes sortíert werden soll.

Hat man einen Vector voller strings oder ints klappt das ja wunderbar, aber wie ist das wenn man einen vector voller "eigener" Objekte hat. Wir haben zB das Objekt Medium und wollen nach bestimmte Attributen, zB Titel oder Erscheinungsjahr sortieren. wo wird das denn angegeben???



Naja, zB so:

C++:
struct myStruct
{
    int x;
     double y; // Hiernach soll sortiert werden
};

boolean cmp_by_y(const myStruct& a, const myStruct& b) {
       return a.y < b.y;
}

...

std::vector<myStruct> v;
...

std::sort(v.begin(), v.end(), cmp_by_y);



--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.09.2004, 11:39 Uhr
(un)wissender
Niveauwart


virtual, das hier ist C++ und nicht Java und da heißt es immernoch bool und nicht boolean.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.09.2004, 11:44 Uhr
virtual
Sexiest Bit alive
(Operator)


@(un)wissender
Oh,
[rausrede-modus]
Ich habe vergessen:

C++:
#define boolean bool


[/rausrede-modus]
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.09.2004, 12:30 Uhr
(un)wissender
Niveauwart


Ah, ich Trottel, das hatte ich natürlich übersehen.

P.S.: Der neuer Avatar passt gut zu dir.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.09.2004, 23:39 Uhr
~Dani
Gast


virtual, vielen Dank für das Beispiel, aber ich bekomme es irgendwie nicht übertragen
der compiler meckert immer am const rum und bei

C++:
std::sort(v.begin(), v.end(), cmp_by_y);


am gegenstück zu cmp_by_y

....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.09.2004, 23:42 Uhr
(un)wissender
Niveauwart


Meckert? Geht es auch konkreter?
Vermutlich hast du #include <algorithm> vergessen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.09.2004, 00:37 Uhr
~Dani
Gast



C++:
bool Medium::compareInterpret(Medium& a, Medium& b)
{
    return a.getInterpret() < b.getInterpret();
}


void Medium::sortInterpret()
{
    sort(mainVec.begin(), mainVec.end(), compareInterpret);
}



<algorithm> hab ich inkludiert und die Fehlermeldung ist leider sooo lang, dass sie nicht in meine console passt....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: