2016-02-21 1 views
5

Mit anderen Worten, ist es sicher, Zeiger auf Schlüssel von einer Karte zu speichern? Oder ist es für die Karte möglich, Schlüssel während ihrer Lebensdauer zu kopieren und zu verschieben, wodurch vorhandene Zeiger ungültig werden?std :: map: Kann es Schlüssel kopieren und verschieben, nachdem sie eingefügt wurden?

Die Dokumentation sagt: "Iterator-Gültigkeit: Keine Änderungen." Heißt das, die Antwort auf meine Frage lautet "Nein, sie können nicht kopiert oder verschoben werden"?

+1

Welche Dokumente? –

Antwort

7

Die std::map Behälter Vorlage stellt einen node-basierten Behälter, was bedeutet, dass Iteratoren und Verweise auf ein Containerelement ungültig gemacht werden niemals bis das Element aus der Karte gelöscht wird. Sie können also Schlüsseladressen an Dritte weitergeben, solange die Karte lebt und das Element darin verbleibt.

+0

Großartig, danke für die Klärung. Wissen Sie zufällig, wo dies in den Dokumenten angegeben ist? – Chris

+0

Wäre es für eine Implementierung nicht möglich, Index-basierte Iteratoren zu verwenden, so dass die Gültigkeit garantiert ist, aber die tatsächlichen Elemente im Speicher verschoben werden? Wenn nicht, wo ist das angegeben? – 6502

+0

@Chris: [assoziativ.reqmts]/9. –

Verwandte Themen