76 stl(四)
来源:互联网 发布:c语言课程设计题目 编辑:程序博客网 时间:2024/06/13 12:51
//ptr_vector.h#ifndef _PTR_VECTOR_H_#define _PTR_VECTOR_H_#include <vector>#include <memory>template <typename T>class ptr_vector :public std::vector<T*>{public: ~ptr_vector() { clear(); } void clear() { std::vector<T*>::iterator it; for (it = begin(); it != end(); ++it) delete *it;//释放指针指向的内存 std::vector<T*>::clear();//仅仅只释放指针变量本身 } void push_back(T* const &val) { std::auto_ptr<T> ptr(val); //将val用auto_ptr接管val所有权 std::vector<T*>::push_back(val);//operator new placement new ptr.release();//如果内存分配没有出现异常,ptr需要释放所有权 }};#endif//main.cpp#include<iostream>#include<memory>#include<vector>using namespace std;//#include"DebugNew.h"//#include "Node.h"#include "ptr_vector.h"class Test{public: Test() { cout << "Test ..." << endl; } Test(const Test& other) { cout << "Copy Test ..." << endl; } ~Test() { cout << "~Test ..." << endl; }};int main(void){ /*vector<Test*> v; Test* t1 = new Test; Test* t2 = new Test; Test* t3 = new Test; v.push_back(t1); v.push_back(t2); v.push_back(t3);*/ ptr_vector<Test> v; Test* t1 = new Test; Test* t2 = new Test; Test* t3 = new Test; v.push_back(t1); v.push_back(t2); v.push_back(t3); return 0;}
0 0
- 76 stl(四)
- STL(四):list
- STL入门基础(四)
- STL摘要四(traits--特性)
- STL学习(四)阶段简单总结
- STL学习(四)stack容器学习
- STL 笔记(四) 迭代器 iterator
- STL容器(四)——hash_map
- C++STL模板容器(四)
- STL学习记录(四):Vector
- STL 笔记(四) 迭代器 iterator
- STL 中的容器们(四)
- Effective STL 第一章:容器(四)
- STL之map实现(四)
- C++学习笔记(四)之 STL
- STL(四)泛化技术基础
- STL(四) deque 双端队列
- STL(四)-DEQUE
- Swift NSArray、NSMutableArray问题
- Jython操作MySQL数据库
- 数据库NOT EXISTS的理解
- 关于SQL中exists和not exists的使用
- string类的查找函数
- 76 stl(四)
- ios 修改项目名称 修改类名
- Object 类研究
- 关于数组的一些方法
- unix网络编程笔记(三)
- 你与论文达人只差一个MathType的距离
- 猴子选大王 华为OJ
- java对象的创建及访问定位
- Rendering Problems