std::set und std::map bleiben die Objekte immer an der gleichen speicherstelle ?



  • hola leute

    wenn ich nun ein std::set oder std::map verwende und dieses mit objekten fuelle, bleiben da die objekte immer an der selben speicherstelle, egal ob ich nun neue hinzufuege oder objekte lösche ?
    ich muesste naemlich pointer auf die objekte in einem vector speichern. bringt jedoch nur sinn wenn die sich nicht mehr aendern.

    Meep Meep



  • technisch gesehen ist es üblich - der Knoten im unterliegenden Binärbaum wird einmal angelegt und später nur sein left/right/parent-Zeiger an die Bedürfnisse angepasst. Aber im Ernstfall würde ich mich nicht darauf verlassen.



  • Meep Meep schrieb:

    wenn ich nun ein std::set oder std::map verwende und dieses mit objekten fuelle, bleiben da die objekte immer an der selben speicherstelle, egal ob ich nun neue hinzufuege oder objekte lösche ?
    ich muesste naemlich pointer auf die objekte in einem vector speichern. bringt jedoch nur sinn wenn die sich nicht mehr aendern.

    Da würdest du dich von der Implementierung abhängig machen. Schon über die Verwendung von Smartpointern nachgedacht (in diesem Fall z.B. boost::shared_ptr), die du in beiden Container verwendest?

    cu André


Anmelden zum Antworten