Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Klassen und STL...

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 ]
000
23.01.2005, 19:50 Uhr
Lemming2005



Hi

ich bin erst seit kurzem auf diesem Board und auch erst seit kurzem im C++-Geschäft.
ich habe folgendes Problem: mein Programm soll eine simple Adressverwaltung realisieren, mit den Möglichkeiten Adressen anzulegen, zu löschen, nach Adressen zu suchen und natürlich auch das laden und speichern.
Für meine Adressen habe ich mir eine Klasse angelegt, die das handling der adressdaten übernimmt. in einer zweiten Klasse möchte ich jetzt eine Liste aller Adressen verwalten, quasi als Adressbuch.

In Büchern habe ich gelesen, dass sowas ganz gut mit STL gehen soll, aber die Beispiele haben mich nicht wirklich weiter gebracht. Kann mir bitte jemand ganz kurz erklären, wie ich Elemente in so eine STL-Liste einfügen kann und wie ich sie wieder lösche?

meine List habe ich so definiert


Code:
class Adresse
{
...
};

class AdressBuch
{
...
private:
  list <Adresse> liste;
};



kann man das überhaupt so machen?

Gruß Lemming

P.S: Die Suchfunktion habe ich schon bemüht, leider ohne weiter zu kommen
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.01.2005, 19:57 Uhr
Oliver
S2-Pixelgeneral


www.sgi.com/tech/stl/
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.01.2005, 20:03 Uhr
Lemming2005



Ah ja... ok. werd mal schauen, ob ich damit weiter komme. wenn nicht melde ich mich nochmal. danke für den link!
Gruß Lemming
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.01.2005, 20:12 Uhr
Lemming2005



Hmm... Einfügen in eine Liste schein ja zu funktionieren


Code:
void Adressbuch::addAdresse(Adresse a)
{
liste.insert(liste.end(), 1, a);
liste.sort();
}



aber wenn ich versuche eine Adresse zu löschen

Code:
void Adressbuch::killAdresse(Adresse a)
{
liste.remove(a);
}


bekomme ich diese nette fehlermeldung:

Zitat:

c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\list(682) : error C2784: 'bool std::operator ==(const std::list<_Ty,_Alloc> &,const std::list<_Ty,_Alloc> &)': Vorlagenargument für 'const std::list<_Ty,_Ax> &' von 'std::allocator<_Ty>::value_type' konnte nicht hergeleitet werden


Kann damit jemand was anfangen?
Gruß Lemming
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)

Dieser Post wurde am 23.01.2005 um 20:13 Uhr von Lemming2005 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.01.2005, 21:58 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


benutz erase um elemente aus der liste zu entfernen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.01.2005, 12:18 Uhr
Lemming2005



hab ich auch schon probiert, funktioniert aber genauso wenig.

kann mir jemand bitte ein Beispiel geben, wie ich erase erfolgreich einsetzen kann?

Danke und Gruß Lemming
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.01.2005, 14:05 Uhr
Oliver
S2-Pixelgeneral


Du musst auch Iteratoren übergeben.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.01.2005, 14:55 Uhr
Lemming2005



OK, also wenn ich das richtig verstanden habe, müsste meine Funktion etwa so aussehen


Code:
void AdressBuch::killAdresse (Adresse &a)
{
list <Adresse>::const_iterator i;
...



aber wie bekomme ich dann rause, wo sich die Adresse in der Liste befindet? mein Gedanke war, dass ich einfach in ner for-schleife durch renne und vergleiche. nur kann ich ja nicht einfach nen iterator mit ner Referenz einer Klasse vergleichen, oder?

zumindest funktioniert meine Version (mal wieder ) nicht.


Code:
void AdressBuch::killAdresse (Adresse &a)
{
    list <Adresse>::const_iterator i;

    for(i=liste.begin(); i != liste.end(); ++i)
        if (*i == a)
            liste.erase(i);
    
}


sorry, wenn ich hier dauerd "blöde" fragen stelle, aber wie gesagt, ich hab davon noch niet besonders viel ahnung. wie gesagt: ein Beispiel würde mir echt weiterhelfen!

gruß Lemming
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.01.2005, 15:06 Uhr
Oliver
S2-Pixelgeneral


Probier mal so:


C++:
void AdressBuch::killAdresse (Adresse &a)
{
    for(list <Adresse>::iterator i=liste.begin(); i != liste.end(); ++i)
        if (*i == a)
            liste.erase(i);  
}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.01.2005, 15:11 Uhr
Lemming2005



das hatte ich ja bereits so probiert, nur dass ich den iterator außerhalb der for-schleife erklärt habe.
der fehler, den ich beim kompilieren bekomme ist der.


Zitat:

f:\Micha\Documents\Visual Studio Projects\DV2\Testat\Version2\Adrv\Source\adr_data.cpp(105) : error C2784: 'bool std::operator ==(const std::list<_Ty,_Alloc> &,const std::list<_Ty,_Alloc> &)': Vorlagenargument für 'const std::list<_Ty,_Ax> &' von 'std::allocator<_Ty>::value_type' konnte nicht hergeleitet werden



langsam bin ich echt ratlos...

Gruß Lemming
--
---------------
two things are infinite: the universe and the stupidness of human beings. concerning the universe, I'm not quite sure. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: