, die bewusst Shared_ptr Einbauten ist,
, dass Ihre Frage genau dort beantworten. Um sich der Interna bewusst zu sein, müsste eine solche Sammlung mit ziemlicher Sicherheit Teil der intelligenten Zeigerbibliotheken von Boost sein. Leider gibt es so etwas nicht.
Dies ist in der Tat ein Nachteil für intelligente Zeiger. Ich würde empfehlen, Datenstrukturen zu verwenden, die die Anzahl der intern erstellten Kopien begrenzen. Die Neuzuweisungen von Vector werden schmerzhaft sein. Vielleicht wäre eine Deque, die eine chunked-basierte Zuweisung hat, nützlich. Bedenken Sie auch, dass Vektorimplementierungen dazu neigen, in exponentiell ansteigenden Blöcken neue Speicher zu erhalten. Sie verteilen also nicht alle 10 Elemente neu. Stattdessen können Sie mit 128 Elementen beginnen, dann reserviert sich der Vektor 256 und bewegt sich dann auf 512, 1024 usw. Jedes Mal verdoppeln Sie, was benötigt wird.
Kurz gesagt gibt es boost's ptr_vector oder Vorzuweisen Ihrer Datenstrukturen mit genügend Platz, um internes Kopieren zu verhindern.
Im C++ 0x-Entwurf hat shared_ptr bereits dieses Verhalten. –
Na dann gehts los! :) – MSN