ptr_vector
来源:互联网 发布:mock.js官网 编辑:程序博客网 时间:2024/06/03 20:58
<pre name="code" class="cpp">#ifndef __INCLUDE_PTR_VECTOR_H__#define __INCLUDE_PTR_VECTOR_H__#include <vector>#include <memory>using namespace std;template <typename T >class ptr_vector : public std::vector<T* >{ public: ~ptr_vector() { clear(); } void clear() { typename std::vector<T* >::iterator it; for(it = this->begin();it != this->end(); ++it) { delete (*it); } std::vector<T* >::clear(); } void push_back(T *const & val) { std::auto_ptr<T> ptr(val); //将val用auto_ptr接管所有权 std::vector<T*>::push_back(val); // operator new ; placement new ptr.release(); } void push_back(auto_ptr<T> &val) { std::vector<T*>::push_back(val.get()); val.release(); }};#endif //__INCLUDE_PTR_VECTOR_H__#include <iostream>#include <vector>#include "ptr_vector.h"using namespace std;class CTest{ public: CTest() { cout<<"CTest()"<<endl; } CTest(const CTest &test) { cout<<"CTest(const CTest &test)"<<endl; } ~CTest() { cout<<"~CTest()..."<<endl; }};int main(){ ptr_vector<CTest> vec; CTest *t1 = new CTest; CTest *t2 = new CTest; CTest *t3 = new CTest; vec.push_back(t1); vec.push_back(t2); vec.push_back(t3); return 0;}
1 0
- ptr_vector
- boost::ptr_vector
- boost::ptr_vector<T>
- 指针容器: boost::ptr_vector ptr_container
- ptr_vector-一个指针的容器
- 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
- 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector
- [置顶] 从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr<class>、实现Ptr_vector .
- google官方架构MVP解析与实战-(从零开始搭建android框架系列(3))
- (OK) Creates Docker-based Virtual PC containers for use inside GNS3 as end hosts.
- 找人代写安卓端DICOM查看器
- Memcached实现机制
- C#学习之逆波兰公式简单实现
- ptr_vector
- 实用技巧——获取验证码的倒计时
- 深度学习领域相关资料
- 假设有n个布尔变量x1, ..., xn,输出其所有可能的真值集合
- Android 更新UI的两种方法——handler和runOnUiThread()
- Swagger实践和总结
- 基于DFS的拓扑排序
- 不容错过,最全的安卓架构合集-(从零开始搭建android框架系列(2))
- APP 屏蔽 触发事件