C++ STL 迭代器的简单模拟
来源:互联网 发布:mac重命名的快捷键 编辑:程序博客网 时间:2024/05/01 06:37
下面的代码只是在简单的模拟STL的迭代器的实现机制,当然具体的vector实现远比下面的复杂。
同时为了尽量的简单,我对很多细节的问题没有处理,通过这段代码只是想告诉大家:STL 迭代器的实现技巧。
#include<iostream> using namespace std; /* *开 发 者:卡农 *开发时间:2010-10-1 *描 述:vector迭代器的简单模拟 */template<class T> class _vector{ public: typedef T* iterator;//迭代器就是在这里实现的 /* *构造一个vector *参数:n vector里面元素的数量 */ _vector(int n){ this->data=new T[n]; this->beginP=this->data; this->endP=this->data; } /* *添加一个元素到vector的末尾 *参宿:val 添加的元素的值 */ void push_back(T val){ *this->endP=val; this->endP++; } /* *得到一个迭代器 *返回:指向最后一个元素的迭代器 */ iterator begin(){ return this->beginP; } /* *得到一个迭代器 *返回:指向第一个元素的迭代器 */ iterator end(){ return this->endP; } //虚构函数 ~_vector(){ delete(this->data); } private: //我为了尽量的简单我屏蔽了默认构造函数,拷贝构造函数 , 赋值函数 _vector(){} _vector(const _vector<T> & other){} _vector & operator=(const _vector<T> &){} private: iterator beginP; //第一个元素 iterator endP; //尾部,也就是最后一个元素的下一个元素 T * data; }; //测试 int main(){ _vector<int> * obj=new _vector<int>(10); for(int i=0; i<5; i++){ obj->push_back(i+1); } //是不是STL的迭代器一模一样呀 _vector<int>::iterator iter=obj->begin(); while(iter!=obj->end()){ cout<<*iter++<<endl; } delete(obj); return 0; }
转自:http://www.cnblogs.com/kanong/archive/2010/10/01/1840640.html
- C++ STL 迭代器的简单模拟
- C++STL的简单使用
- STL List容器 简单模拟
- ural 2002. Test Task 简单模拟 stl map的使用
- 简单模拟STL库中string的实现
- c++STL的迭代器
- c++stl库list简单的实现
- [C++] STL Map的简单用法
- C++STL全排列的简单实现
- cf 599 C (模拟+STL)
- CF - 724C 模拟 + STL
- 【STL】迭代器与List的模拟实现
- 【STL】list迭代器的模拟实现
- hdu1702 STL的模拟,
- 生产者-消费者 C的简单模拟
- C语言模拟简单的计算器
- STL模拟实现迭代器
- 简单的文件系统模拟C/C++(操作系统)
- 各种数据库使用JDBC连接的方式
- 应用笔记3816 ds 1302 估算涓流充电实时时钟的超级电容备份时间
- JBPM入门学习
- 最短路径 (yp)
- JBPM简介
- C++ STL 迭代器的简单模拟
- 数据库性能优化主要包括哪些方面?
- 胆颤心惊的patch过程
- magic_quotes_gpc 设置为ON 可是却不起作用的原因。
- sqlserver 多表关联 更新
- WIFI学习之二:wifi 流程
- 精通有状态vs无状态(Stateful vs Stateless)—Immutable模式之姐妹篇
- HTTP协议详解
- 闪回(flashback)