Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Allocatoren und new, delete

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 <
000
23.07.2004, 14:55 Uhr
(un)wissender
Niveauwart


Man eine Frage an die ANSI-Kenner:
Wenn man die globalen Operatoren new und delete überschreibt, muss man dann für STL-Container einen Allocator schreiben?
Oder funktionieren die Default-Allocatoren garantiert ohne new, etc., sondern mit malloc, free?
Ich habe so ein bisschen ein Henne-Ei-Problem, da ich einen Speichermanager schreiben muss, beim implementieren von dem möchte ich aber schon STl-Container verwenden.
Wenn diese mit ihren Allocatoren aber von new, etc. abhängig sind, dann geht das wohl nicht ohne eigene Allocatoren...
Wißt ihr mehr?


Bearbeitung:

Im speziellen möchte ich std::map verwenden oder sollte es besser std::set sein?
Was ist schneller?
Garantiert std::map eigentlich logarithmische Such-, Einfüge- und Löschoperationen?


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 23.07.2004 um 14:58 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.07.2004, 17:26 Uhr
virtual
Sexiest Bit alive
(Operator)


Gemäß ISO Norm benutzt std::allocator den Operator ::operator new für sein allocate. (vgl. Satz 20.4.1.1.3). Dh wenn Du den Globalen new Operator überlädst, wirkt sich das auch auf speziell diesen Allocator aus.

Was map/set angeht: nach ISO (Abschn. 23.2.1) elementare einfüge und Suchoperationen logarithmisch, nicht jedoch die erase Operationen. Was das entfernen angeht: das hängt davon ab, wie Du entfernst (bei key, by iterator?)
--
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
002
24.07.2004, 14:40 Uhr
(un)wissender
Niveauwart


Danke für die Antwort!
Ich würde per key entfernen.
Warum macht das einen Unterschied, ob ich per Iterator oder per key entferne?
Wie sieht das eigentlich mit dem Iterieren durch std::map aus, wenn ich z.B. ein Element suche, dass eine Bedingung erfüllt? Wäre es besser std::map::find zu nehmen mit einem Unären Prädikat?


Bearbeitung:

Statt std::map hätte ich auch an hash_map gedacht, aber da ich nicht weiß, wieviele Elemente eingefügt werden müssen (zumindest ungefähr) ist eine Hashtabelle wohl ungeeignet.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 24.07.2004 um 14:42 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: