009
07.12.2009, 19:16 Uhr
Lotec
|
Zitat von 0xdeadbeef: |
Äh...einen Destruktor hat die Klasse sowieso. Wenn du keinen angibst, erstellt der Compiler einen für dich (abgesehen von POD-Structs), der die Member zerstört.
Wie dem auch sei, es wird so lange funktionieren, wie du die Klasse nicht polymorphisch benutzt. Sobald du etwa
C++: |
std::map<int, IterationNumber> *p = new MapTL<int>();
// ...
delete p; // <-- undefiniertes Verhalten
|
machst, geht es in die Hose.
Natürlich ist das ganze insofern gefährlich, als dass eine Ableitung geradezu dazu einlädt, solche Dinge zu machen.
|
Ich habs jetzt so umgestellt, dass std::map ein Attirbut der MapTL ist. Ist schon verrückt, was alles schief gehen kann bei C++...
Zitat von 0xdeadbeef: |
Oh, und std::map ist intern ein Baum, also ist das Durchlaufen aller Iteratoren denkbar langsam. Meinst du vielleicht
C++: |
iterator it = find(iter);
|
?
|
ne-ne... Primär dient es dazu, die Elemente schnell durch ihre Schlüsseln zu finden, eben mit iterator iter = find(key). Aber ab und zu muss ich durch die ganze map iterieren, um sie zu reinigen. Was meinst du eigentlich mit langsam? Klar, es sind rekursive Aufrufe drin usw. und das Ganze ist schon langamer als ein Array durchzulaufen, aber komplexitätstechnisch ist es auch nur lineare Zeit. Dieser Post wurde am 07.12.2009 um 19:23 Uhr von Lotec editiert. |