Ich finde es immer seltsam, zu behaupten, Java hätte keine Zeiger, wenn (Java)Referenzen im Prinzip genauso funktionieren. Klar die die Syntax anders und man hat GC vs. Smartpointer und die Zeigerarithmetik fällt vielleicht raus (wobei man die ja in normalen Klassen eh nie benutzt), aber ansich ist es doch das selbe Prinzip mit den selben Problemen.
Zum eigentlichen Problem: Ich habe ausgezeichnete Erfahrungen damit gemacht, unique_ptr's in Container zu packen. Die bilden sehr schön ab, dass es zu jedem Zeitpunkt immer genau einen Besitzer des Objektes gibt (in diesem Falle also der Container), man darüber hinaus aber beliebig viele Referenzen (also C++-Pointer) auf das Objekt haben kann. Dieses '1 Besitzer'-Konzept bringt einen nicht nur dazu, dass man seine Programme besser strukturiert, es verhindert auch Memory Leaks.
Vermutlich ist es aber ganz hilfreich, sich erst ein wenig über die Move-Konzepte zum Verschieben (statt Kopieren, dann hätte man ja 2 Besitzer) schlau zu machen. Vielleicht hilft da ein alter Thread von mir, in dem einige hilfreiche Artikel verlinkt sind (
http://zfx.info/viewtopic.php?f=4&t=2770).