直觉上来说,既然是一个指针的数组,而且要传给别人,那用std::vector<boost::shared_ptr<T>>最合适了,然后传个const&给别人,搞定。 不过看到瑞典同事有人用boost::ptr_vector,这个新鲜的玩意儿不常见,研究一下,原来是Boost.Pointer Container的一部分,用来保存heap-allocated objects,有
问Qt等效于boost::ptr_vector?EN您可以从QObject派生列表中指针所显示的对象,并添加一个基于QObect的...
自定义一个类A, A类成员声明: class A { public: typedef boost::ptr_vector<MyClass> MyCla…不...
问boost::ptr_vector和boost::any的问题EN当中用蓝色标记出的部分(layout, local_size_x, local_size...
boost::ptr_vector专门用于动态分配的对象,它使用起来更容易也更高效。 boost::ptr_vector 独占它所包含的对象,因而容器之外的共享指针不能共享所有权,这跟 std::vector<boost::shared_ptr<int> > 相反。 除了boost::ptr_vector之外,专门用于管理动态分配对象的容器还包括:boost::ptr_deque, boost::ptr_list,...
scoped_array 轻巧方便,没有给程序增加额外负担,但是 scoped_array 功能有限,不能动态增长,也没有迭代器支持,不能搭配 STL 算法,仅有一个纯粹的“裸”数组接口。在需要动态数组的情况下我们应该使用 std::vector 。例如:boost::shared_ptr 主要特点 boost.smart_ptr 库中最有价值,最重要的组成部分。支持...
scoped_ptr 从名字就可以看出,这种智能指针只限于作用域内使用,无法转移内置指针的管理权(不支持拷贝、=赋值等) 但是作用也很显然,例如: void test() { int* p = new int(3); ... delete p; } 假设...之中发生了异常,那么p就无法被delete,造成了内存泄漏。 使用...
std::vector<boost::shared_ptr<int> > v; v.push_back(boost::shared_ptr<int>(new int(1))); v.push_back(boost::shared_ptr<int>(new int(2))); } 1. 2. 3. 4. 5. 6. 7. 8. 9. 多亏了有 boost::shared_ptr,我们才能像上例中展示的那样,在标准容器中安全的使...
intrusive_ptr不常用 waek_ptr主要是解决循环引用的问题 boost库在vs2008的配置,下载boost库后 2.scoped_ptr 智能指针本身是栈上对象 eg:P87\01.cpp #include <boost/scoped_ptr.hpp> #include <iostream> using namespace std; class X { public: ...
ptr_vector ptr_list ptr_deque ptr_array ptr_set ptr_multi_set ptr_map ptr_multimap std::tuple 该结构是一个有固定数目元素的容器,每个元素类型可以不同;类似pair,只是里面的元素更多,可将pair可以看作tuple的特例,tuple是pair的泛化。 常用函数 ...