Die Idee mit einer Erklärung, wie das ist, wenn Sie ein Element aus dem Behälter erhalten möchten, Sie nicht halten einen Verweis oder Zeiger auf das Element in dem Behälter, erstellen Sie eine Kopie davon (aus der Referenz kehren diese Methoden zurück). Die Funktion zurück, für back()
und front()
, sind sekundäre Bedenken und wahrscheinlich das Problem zu verwirren - auch die Errata entfernt die Erwähnung von ihnen.
Container können neu zugeordnet werden (besonders vector
), wobei Sie nicht unbedingt vom Container benachrichtigt werden, die Elemente werden in den Speicher verschoben und plötzlich haben Sie einen ungültigen Verweis oder Zeiger.
Berücksichtigen Sie die Zeit des Hinweises, bevor Sie Semantik und bewegliche Objekte verschieben usw. Aber das allgemeine Prinzip gilt weiterhin, halten Sie keine Referenzen oder Zeiger auf Objekte, die ungültig werden könnten.
"Wert Semantik" ist ein starkes Thema, das nicht nur durch die Standardbibliothek, sondern das gesamte C++ läuft.
Wo ist das in dem Buch? Ich möchte versuchen, es zu finden –
Dies ist das Zitat aus dem Artikel 3. Kopieren billig und korrekt für Objekte in Containern. –
Es ist eine Weile her, seit ich Effektive STL gelesen habe, aber entweder Scott Myers sagte mehr dazu, und dieser Kontext ist nicht in der Frage, oder das Buch wird nicht für C++ 11 und darüber hinaus aktualisiert. – StoryTeller