Und nochmal eine Frage,
gibt es irgendwelche Bedingungen/Hat irgendwer schon Erfahrungen gemacht, daß Klassen aus der STL Objekte mit insert nicht einfügen?
Konkret hab ich beim Programmieren das folgende Problem. Ich hab in eine Liste, die definiert ist als
std::set<PathItem, less<PathItem> > openlist;
(was PathItem ist, dürfte in dem Zusammenhang erstmal egal sein). Das Ziel ist, daß das kleinste PathItem das Element *(openlist.begin()) ist, was im Rahmen meines Problems auch klappt.
In einer Funktion wird jetzt eine Instanz temp der Klasse PathItem mittels
openlist.insert(temp);
eingefügt. Und jetzt kommt das interessante: Durch meine zahlreichen Debugging-Anweisungen hab ich herausgekriegt, daß dieser Befehl ausgeführt wird und daß temp immer unterschiedlich ist (daran liegt es also nicht). Wenn ich mir anschließend über eine Debugging-Anweisung openlist ausgeben lasse, stelle ich allerdings fest, daß das erste temp danach in openlist auftaucht, das zweite nicht, das dritte wieder, das vierte nicht...
Dadurch endet der Algorithmus mit einem Segfault, was ich nicht so toll finde. Ich bin mir ganz sicher, daß es nicht an meinem Programm liegt (der ganze Rest arbeitet laut Debuggingausgabe ok). Weiß irgendjemand was dazu?
cu, Ulf
Am Sonntag, dem 21. Januar 2001 um 23:05:03, schrieb Ulf Lorenz:
gibt es irgendwelche Bedingungen/Hat irgendwer schon Erfahrungen gemacht, daß Klassen aus der STL Objekte mit insert nicht einfügen?
Folgendes Testprogramm funktioniert:
$ cat stlset.cc #include <set> #include <iostream> int main () { set<int> a; a.insert (1); a.insert (2); a.insert (2); a.insert (3); copy (a.begin (), a.end (), ostream_iterator<int> (cout, "\n")); return 0; } $ ./stlset 1 2 3 $
Konkret hab ich beim Programmieren das folgende Problem. Ich hab in eine Liste, die definiert ist als
std::set<PathItem, less<PathItem> > openlist;
(was PathItem ist, dürfte in dem Zusammenhang erstmal egal sein).
Glaube ich nicht. Der Blick in die noch feuchten Teeblaetter sagt mir, dass PathItem ein typedef auf char* ist. Zur Uebung darfst Du Dir jetzt ueberlegen, warum das nicht funktionieren kann. ;-) Wenn es nicht so ist, braeuchte ich mehr Informationen zur weiteren Diagnose.
Torsten
On Mon, Jan 22, 2001 at 08:37:30AM +0100, Torsten Werner wrote:
Folgendes Testprogramm funktioniert:
$ cat stlset.cc #include <set> #include <iostream> int main () { set<int> a; a.insert (1); a.insert (2); a.insert (2); a.insert (3); copy (a.begin (), a.end (), ostream_iterator<int> (cout, "\n")); return 0; } $ ./stlset 1 2 3 $
Das hab ich auch schon ausprobiert, aber mein eigentliches Programm funktioniert trotzdem nicht.
std::set<PathItem, less<PathItem> > openlist;
(was PathItem ist, dürfte in dem Zusammenhang erstmal egal sein).
Glaube ich nicht. Der Blick in die noch feuchten Teeblaetter sagt mir, dass PathItem ein typedef auf char* ist. Zur Uebung darfst Du Dir jetzt ueberlegen, warum das nicht funktionieren kann. ;-) Wenn es nicht so ist, braeuchte ich mehr Informationen zur weiteren Diagnose.
Der Blick auf deine feuchten Teeblätter ist heute etwas verschwommen :). PathItem ist eine rudimentäre Klasse zum Datenzusammenhalten inklusive Vergleichsoperator.
Ich versuch nochmal etwas, ansonsten poste ich mal den Code.
Torsten
Ulf
On Mon, Jan 22, 2001 at 07:20:51PM +0100, Ulf Lorenz wrote:
Ich versuch nochmal etwas, ansonsten poste ich mal den Code.
Also, ich hab noch mal was versucht und rausgefunden, woran es lag. Bei PathItem war der operator<() definiert, allerdings konnte es auftreten, daß bei
PathItem a,b;
weder a<b, noch b<a gilt. Scheinbar wurde das von set als a=b interpretiert, und das unterstützt set nunmal nicht. Seit ich das zu multiset geändert habe, klappt es ohne Probleme *freu*.
Ulf
Hallo Ulf,
ich bin damit zwar in diesem Thread nicht ganz richtig, aber Du erinnerst Dich sicher noch an Mittwoch. Du hattest mir da ein Buch zum C++ lernen empfohlen (Addison Wesley). Könntest Du mir bitte noch den exakten Titel schreiben bzw. im Idealfall die ISBN-Nummer? Ich habe auch meine Suchanfrage bei Lehmann's Fachbuchhandlung nur englischsprachige Titel bekommen, was zwar kein Problem aber auch keine Erleichterung meines "Lernprozesses ;)" wäre.
Matthias
On Fri, Jan 26, 2001 at 10:30:56PM +0100, Matthias Petermann wrote:
Hallo Ulf,
ich bin damit zwar in diesem Thread nicht ganz richtig, aber Du erinnerst Dich sicher noch an Mittwoch. Du hattest mir da ein Buch zum C++ lernen empfohlen (Addison Wesley).
Ich war's zwar nicht, aber ich hab' für Schulungen folgendes:
GoTo C++, Andre Willms, Addison Wesley
(Such' mal nach GoTo CPlusPlus, in manchen Katalogen steht das so drin.)
Dieses Buch behandelt zwar nicht _alles_, aber ausreichend viel, um erstmal anfangen zu können. Es enthält auch nicht allzu viele Fehler.
Für die STL (und C++-Standardlibrary) ist es recht überfliegend geschrieben. Was aber nicht verwundert, denn die S(T)L ist ziemlich umfangreich. Da kann ich ein anderes empfehlen:
The C++ Standard Library -- Reference and Tutorial, M. Josuttis, Addison Wesley.
(Gab's früher mal in Deutsch, jetzt nur in Englisch, aktuell und so schnell nicht in Deutsch zu erwarten (wenngleich Josuttis sicher eher D als E ist.)
Best regards from Dresden/Germany Viele Gruesse aus Dresden Heiko Schlittermann
Hallo,
erst einmal vielen Dank an Ulf und Heiko für die Büchertipps! Die Auswahl ist gerade bei C++ Büchern derart groß, dass ich für eure konkreten Empfehlungen mehr als dankbar bin. Ich werde wohl für nächste Woche mal eine Exkursion ins Buchhaus einplanen, denn aus den knappen Beschreibungen bei Lehmanns werde ich nicht ganz schlau. Trotzdem habe ich noch eine Frage zu dem "Go To C++"- Buch. In der Beschreibung steht, dass das Umsetzen komplexer objektorientierter Aufgabenstellungen an einem durchgängigen Beispiel für MS Visual C++ erklärt wird. In wie weit schränkt dieser Fakt die Benutzbarkeit des Buches für die Entwicklung unter GNU C++ ein? Werden dort nur grundlegende, standardisierte Librarys verwendet oder läuft das Beispiel auf die MS Foundation Classes hinaus?
Danke und noch einen schönen Sonntag,
Matthias
On Sat, Jan 27, 2001 at 12:08:21PM +0100, Heiko Schlittermann wrote:
(Such' mal nach GoTo CPlusPlus, in manchen Katalogen steht das so drin.)
-- ------------------------------------ Matthias Petermann --( )- wget http://linux.unixcity.de/matthias/key -O - | gpg --import gpg: 1E3D E373 0CCA AD8A D203 B210 8260 ED77 95D7 030D ------
On Sun, Jan 28, 2001 at 04:35:01PM +0100, Matthias Petermann wrote:
Hallo, denn aus den knappen Beschreibungen bei Lehmanns werde ich nicht ganz schlau. Trotzdem habe ich noch eine Frage zu dem "Go To C++"- Buch. In der Beschreibung steht, dass das Umsetzen komplexer objektorientierter Aufgabenstellungen an einem durchgängigen Beispiel für MS Visual C++ erklärt wird. In wie weit schränkt
Dann beschreiben die ein anderes Buch als ich besitze. Es ist ein Borland BCC55 dabei, Kommandozeile, nix mit Fenstern werder der einen noch der anderen Art.
dieser Fakt die Benutzbarkeit des Buches für die Entwicklung unter GNU C++ ein? Werden dort nur grundlegende, standardisierte Librarys verwendet oder läuft das Beispiel auf die MS Foundation Classes hinaus?
Nein, meins jedenfalls nicht.
Best regards from Dresden/Germany Viele Gruesse aus Dresden Heiko Schlittermann
On Sun, Jan 28, 2001 at 06:38:55PM +0100, Heiko Schlittermann wrote:
Nein, meins jedenfalls nicht.
Kannst ja mal die ISBN-Nummer senden, um das Buch eindeutig zu machen.
Ulf
On Sun, Jan 28, 2001 at 09:38:46PM +0100, Ulf Lorenz wrote:
Kannst ja mal die ISBN-Nummer senden, um das Buch eindeutig zu machen.
Ulf
...gute Idee :)
Dieses Buch ist das, das am treffendsten zu Heiko's Beschreibung passte. Was mich ein wenig stutzig macht ist das "X", dass an letzter Stelle der ISBN steht.
Matthias
<SCHNIPP> Go To C Plusplus Programmierung, m. CD-ROM Willms, Andre
1999. 767 S. m. Abb. 25 cm Addison-Wesley Longman, München 3-8273-1495-X
Themen dieses Buches sind Programmiertechnik und Programmier- sprache unter dem Aspekt der objektorientierten Programmierung. Diese Bereiche des Buches werden nicht für sich geschlossen vorgestellt, sondern Hand in Hand weiterentwickelt. Eine um- fangreiche Beispielanwendung für das objektorientierte Pro- grammieren wird mit Visual C++ gezeigt. Am Ende beherrschen Sie nicht nur die Programmiersprache C++, sondern besitzen auch das nötige Wissen, um fast jedes Programmierproblem adäquat zu lösen. </SCHNAPP>
On Sun, Jan 28, 2001 at 09:21:14PM +0100, Matthias Petermann wrote:
On Sun, Jan 28, 2001 at 09:38:46PM +0100, Ulf Lorenz wrote:
Kannst ja mal die ISBN-Nummer senden, um das Buch eindeutig zu machen.
Ulf
...gute Idee :)
ähmm, daß bezog sich eigentlich auf Heiko, damit er die ISBN-nummer seines Buches sendet.
Ulf
On Fri, Jan 26, 2001 at 10:30:56PM +0100, Matthias Petermann wrote:
Hallo Ulf,
ich bin damit zwar in diesem Thread nicht ganz richtig, aber Du erinnerst Dich sicher noch an Mittwoch. Du hattest mir da ein Buch zum C++ lernen empfohlen (Addison Wesley). Könntest Du mir bitte noch den exakten Titel schreiben bzw. im Idealfall die ISBN-Nummer? Ich habe auch meine Suchanfrage bei Lehmann's Fachbuchhandlung nur englischsprachige Titel bekommen, was zwar kein Problem aber auch keine Erleichterung meines "Lernprozesses ;)" wäre.
Ok, also ich hab hier eine deutschsprachige Version mit einer guten Übersetzung :).
Bjarne Stroustrup Die C++-Programmierprache (3. Auflage, evtl. gibt es eine neuere) Addison-Wesley
ISBN 3 8273 1296 5
Preis: 99,90DM
sind ca. 450 Seiten grundsätzliches zu C++, knapp 200 zur STL, 100 zu Design-Aspekten und nochmal knapp 100 Seiten Anhang. Eignet sich meiner Meinung nach sehr gut, wenn man schon einige Programmiererfahrung hat, ist recht niveauvoll.
Matthias
Ulf
lug-dd@mailman.schlittermann.de