@KT:Listing 9: shared_ptr, weak_ptr und unique_ptr @Li: std::vector< std::tr1::shared_ptr > sharedVec; std::tr1::shared_ptr sharedPtr( new std::string("initial")); sharedVec.push_back(std::tr1::shared_ptr( sharedPtr)); std::cout << "Values: sharedPtr sharedVec" << std::endl; std::cout << "Initial: " << " " << *sharedPtr << " " << *sharedVec[0] << std::endl; *sharedPtr="modified"; std::cout << "Modified: " << " " << *sharedPtr << " " << *sharedVec[0] << std::endl; std::cout << "use_count: " << sharedPtr.use_count() << std::endl; { std::shared_ptr localSharedPtr( sharedPtr ); std::cout << "use_count: " << sharedPtr.use_count() << std::endl; } std::cout << "use_count: " << sharedPtr.use_count() << std::endl; std::weak_ptr weakPtr( sharedPtr ); std::cout << "use_count: " << sharedPtr.use_count() << std::endl; std::unique_ptr uniquePtrFirst( new std::string("only one") ); // std::unique_ptr uniquePtrSecond( uniquePtrFirst); will not compile std::unique_ptr uniquePtrSecond( std::move(uniquePtrFirst)); std::cout << "uniquePtrFirst.get(): " << uniquePtrFirst.get() << " *uniquePtrSecond.get(): " << *uniquePtrSecond.get() << std::endl; @KE: