深入模板编程笔记四
2014-11-15 18:09
162 查看
template <typename T> class my_vector { public: T* array; unsigned size; unsigned block_size; public: my_vector(unsigned bsz): array((T*)malloc(sizeof(T)*bsz)),size(0), block_size(bsz){} ~my_vector() {if (array) free(array);} void push_back(T const& elem) throw(std::runtime_error) { if (size == block_size) {//已有空间用完,申请更大空间 block_size *= 2; T* new_array = (T*)realloc(array, block_size*sizeof(T)); if (new_array!= NULL) array = new_array; else { //申请失败,内存耗尽 free(array); array = NULL; throw std::runtime_error("out of memory."); } } array[size++] = elem; } T& operator[] (unsigned i) {return array[i];} const T& operator[] (unsigned i) const {return array[i];} unsigned get_mem_size() const {return block_size*sizeof(T);} }; //这是一个用木板封装的容器
相关文章推荐
- 深入模板编程笔记一
- 深入模板编程笔记二
- 深入模板编程笔记三
- [读书]10g/11g编程艺术深入体现结构学习笔记(持续更新...)
- 深入.net平台和c#编程 学习笔记
- 笔记:深入解析MapReduce架构设计与实现原理 第3章 MapReduce编程模型
- (1-2)章深入.NET平台和C#编程 复习的时候 整理的笔记
- Java并发编程学习笔记 深入理解volatile关键字的作用
- 深入.NET平台和C#编程 第四章 学习笔记
- UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
- 深入.NET平台和C#编程 第一章 学习笔记
- UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
- VC深入编程内幕笔记
- 深入解析Java的设计模式编程中的模板方法模式
- 【VC编程】笔记2--SDK编程的模板程序/MFC消息映射机制的本质解析
- Java笔记十九.深入解析I/O编程之流的层次结构
- 深入.NET平台和C#编程 第三章 学习笔记
- 深入.NET平台和C#编程 第二章 学习笔记
- 27、深入理解计算机系统笔记,网络编程
- C++学习笔记6--高级强制类型转换 命名空间和模块化编程 C预处理器 链接和作用域 函数模板 类模板 内联模板 容器和算法