[] boost:: shared_ptr , . / ( , ), (, ) , № 5. № 2, (: auto_ptr ).
, № 5.
1: boost:: shared_ptr, /, .
, , , std:: list, std:: set, std:: map, / node, ? , - , - .
2: , , . , , . ref count, .
, , . , , , , -, node.
3: , node allocate() deallocate().
STL- , deallocate. , , , . , , malloc/free, , , .
4: , , , .
, , . , () , .
№ 5: .
, . map<int, ExpensiveElement*> map<int, shared_ptr<ExpensiveElement> > map<int, ExpensiveElement>.
, , , , ( node ). , .
, -, ( ctor ExpensiveElement). ! [] insert:
map<int, ExpensiveElement> my_map;
my_map[7].do_something();
! , , / .
ExpensiveElement , , ( ) .
map<int, ExpensiveElement> my_map;
ExpensiveElement element(...);
my_map[7].swap(element);
, ExpensiveElement. , ctor pimpl, , swap pimpls ExpensiveElement. ExpensiveElements , .
, ExpensiveElement ctor?
, . , , () . ctor pointee, , . , , , ; , boost:: shared_ptr, . , .
, ?
. , ( ), .