最有价值的!最有用的引用计数型智能指针,可以被拷贝和赋值,可以作为STL容器的元素;
1,基本用法:
#include <boost/smart_ptr.hpp> #include <assert.h> using namespace boost; int main() { shared_ptr<int> sp(new int(10)); assert(sp.unique()); shared_ptr<int> sp2 = sp; assert(sp == sp2 && sp.use_count() == 2); *sp2 = 100; assert(*sp == 100); sp.reset(); assert(!sp); return 0; }
2,make_shared用法:
#include <boost/smart_ptr.hpp> #include <vector> #include <boost/make_shared.hpp> using namespace std; using namespace boost; int main() { typedef vector<shared_ptr<int> > vs; vs v(10); int i = 0; for (vs::iterator pos = v.begin(); pos != v.end(); ++pos) { (*pos) = make_shared<int>(++i); cout<<*(*pos)<<", "; } cout<<endl; cout<<v[9].use_count()<<endl; cout<<"v[9]="<<*v[9]<<endl; shared_ptr<int> p = v[9]; cout<<v[9].use_count()<<endl; *p = 100; cout<<*v[9]<<endl; return 0; }
输出:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
1
v[9]=10
2
100