2016-02-21 10 views
5

Innymi słowy, czy bezpieczne jest przechowywanie wskaźników na klawiszach z mapy? Czy jest możliwe, aby mapa kopiowała i przenosiła klucze podczas swojego życia, unieważniając w ten sposób istniejące wskaźniki?std :: map: czy może kopiować i przenosić klucze po ich wstawieniu?

Dokumenty mówią: "Iterator validity: No changes." Czy to oznacza, że ​​odpowiedź na moje pytanie brzmi "nie, nie można ich kopiować ani przenosić"?

+1

Który dokument? –

Odpowiedz

7

std::map szablon pojemnik zapewnia pojemnik węzła, co znaczy, że iteratory oraz odniesienia do elementu pojemnika nigdy nie są unieważniane, aż element zostanie usunięty z mapy. Tak więc możesz rozdawać adresy klucza elementu stronom trzecim, o ile mapa żyje, a element pozostaje w niej.

+0

Świetnie, dzięki za wyjaśnienie. Czy przypadkiem wiesz, gdzie jest to określone w dokumentacji? – Chris

+0

Czy wdrożenie implementacji indeksowanych iteratorów byłoby nieważne, aby zagwarantować poprawność, ale rzeczywiste elementy zostały przeniesione do pamięci? Jeśli nie, gdzie to jest powiedziane? – 6502

+0

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

Powiązane problemy