std::multiset::insert nur mit const?



  • Tag zusammen,

    gibt es eine Möglichkeit, dass mit die Methode std::multiset::insert() einen Iterator auf ein Nicht-const-Objekt liefert? Ich muss nach dem Einfügen unbedingt eine Referenz auf das eingefügte Objekt haben. Später kann ich das nicht mehr trennen, was aber nötig ist (nehme ja nicht umsonst ein std::multiset).

    Beispiel:

    #include <set>
    #include <iostream>
    
    int main() {
    	std::multiset<int>       s;
    	std::set<int>::iterator  iter( s.insert( 5 ) );
    
    	int *ptr( const_cast<int*>( &(*iter) ) );
    	*ptr = 10;
    }
    

    Den const_cast-Quark möchte ich mir sehr gerne ersparen.



  • Wenn Du einen Eintrag ändern möchtest, entferne ihn und füge den geänderten Wert wieder ein.

    Die Daten sind intern sortiert, wesshalb Du den Wert (Key) nicht einfach ändern kannst.

    Simon

    BTW: nimm doch den iterator typedef von multiset (nicht von set).



  • Du hast Recht, das macht perfekt Sinn. Ist eher ein Design-Problem in meinem Programm. Danke. 🙂


Anmelden zum Antworten