datenbank als std::list
-
hey c++ ist echt cool

aber wie iterier ich dann über das ding?
vector<string,string>::iterator iter; for( iter = keymap.begin(); iter != keymap.end(); ++iter ) { cout << "Key: '" << iter->first << "', Value: " << iter->second << endl; }so geht es vermutlich nicht - aber wie deffinier ich den iterator richtig?
lg
veruccaedit:
und scheinbar hab ich dann nicht so eine praktische find methode - die müsste ich mir dann wohl selbst schreiben.
das war ja das schöne an der keymap "keymap.find(key)" uswund ich seh schon so wird das gemacht:
vector<pair<string, string> >::iterator iter; for( iter = keymap.begin(); iter != keymap.end(); ++iter ) { cout << "Key: '" << iter->first << "', Value: " << iter->second << endl; }allerdings werd ich mir wohl alle funktionen einer keymap selbst schreiben müssen.
also find usw....
naja egal - es ist brauchbar..
lg
Verucca
-
Naja, es gibt doch auch ein find() in der STL:
http://www.cppreference.com/cppalgorithm/index.html
Gruß,
Simon2.
-
Nach was willst du denn suchen? Eine map hat Schlüssel, weil man nach ebend diesen eigentlich suchen will. Und find von map ist dann genau richtig.
-
naja das ganze dient ja haupsächlich dazu cpp zu lernen :).
aber ich schreib immer noch an dieser minni datenbank
funtioniert ja schon alles ganz gut, nur möchte ich das jetzt etwas generischer angehen - etwas hald ....ich erstelle also eine classe entry die im prinzip als keymap funktioniert.
man kann also einen key erstellen und values speichern
Beispiel:
adress foo
name bar
usw...
als methoden;
string get(string key)
set(string key, string value)
insert (string key) // adds a new keyvalue to database.
delete (string key) // removes a key.
string toString() // liefert einen string über den ganzen datensatz zurück.der construktor von dem datenbank objekt wird jetzt mit der entry klasse gefüttert.
die datenbank kann jetzt die key felder auslesen und weiß genau was verwaltet werden soll.
in eine std::list wird dann classe entry als datensatz eingefügt.jetzt werden noch suchmethoden und sortieren bzw. suchen mit sortierter ausgabe implementiert und schon ist das fertig.
dann noch methoden database.loadfromfile, database.savetofile und es ist halbwegs komplett.für die entry klasse hab ich mir zuerst eine keymap gedacht - sozusagen ein wrapper für die map mit ein paar mehr methoden ( toString zum beispiel )
bis ich dauf gekommen bin, das das sortiert wird war die idee eh ganz nett - aber schließlich muss der datensatz schon die reihenfolge beibehalten ... - sonst gibts beim speichern und laden vom file probleme - da würden dann irgendwann falsche werte rein kommen usw zumindestens wenn man sich hier eine sinnvolle reihenfolge vorstellt.vorname nachname adress plz ......
ich beweg mich eh schön langsam durch die std - man braucht hald ein projekt um eine sprache zu lernen

lg
Veruccaedit:
aber gleich eine frage dazu.
wie soll ich bei einem pair den zugreifen auf das element?
std::find liefert einen iterator zurück ... ok.vector<pair<string, string> >::iterator iter; iter = find( keymap.begin()->first, keymap.end()->first, "type" );wie finde ich da die elemente - ist eine interessante methode - ich hätte ja klassisch ein 2 dimensionales array genommen ...
-
Warum benutzt du nicht die find von map? Aber was du mit "elemente" meinst, weiß ich nicht.
-
naja map kann ich ja nicht nehmen, weil map ja sortiert.
und elemente hab ich glaub ich falsch ausgedrückt
make_pair(x,y) hab ich vermutlich gemeint.wenn ich das in einen vector verpacke, weiß ich nicht so genau wie ich dem ganzen etwas zuweisen kann.
rausholen kann ich das ja mit dem iterator - aber wie schreib ich dann drauf?lg
Verucca
-
mit push_back fügst du was in den Vector hinzu.