Iterator 迭代器模式 笔记
2013-06-05 14:42
78 查看
GOOD:提供一种方法顺序访问一个聚敛对象的各个元素,而又不暴露该对象的内部表示。
为遍历不同的聚集结构提供如开始,下一个,是否结束,当前一项等统一接口。
#include <iostream>
using namespace std;
class IntStack
{
public:
IntStack() { m_nTop = 0; }
virtual ~IntStack() {}
void Push(int);
int Pop();
friend class IntStackIterator;
private:
enum { SIZE = 100 };
int m_nStack[SIZE];
int m_nTop;
};
void IntStack::Push(int nData)
{
if(m_nTop < SIZE)
{
m_nStack[m_nTop++] = nData;
}
else
{
cerr << "超出容量范围。" << endl;
}
}
int IntStack::Pop()
{
if(m_nTop > 0)
{
return m_nStack[--m_nTop];
}
return 0;
}
class Iterator
{
public:
Iterator() {}
virtual ~Iterator() {}
virtual int operator++() = 0;
virtual int operator++(int) = 0;
};
class IntStackIterator : public Iterator
{
public:
IntStackIterator(IntStack*);
virtual ~IntStackIterator();
int operator++();
int operator++(int);
private:
IntStack* m_pStack;
int m_nIndex;
};
IntStackIterator::IntStackIterator(IntStack* pStack)
{
m_pStack = pStack;
m_nIndex = 0;
}
IntStackIterator::~IntStackIterator()
{
if(m_pStack != NULL)
{
delete m_pStack;
m_pStack = NULL;
}
}
int IntStackIterator::operator++()
{
if(m_nIndex < m_pStack->m_nTop)
{
return m_pStack->m_nStack[++m_nIndex];
}
return 0;
}
int IntStackIterator::operator++(int)
{
if(m_nIndex < m_pStack->m_nTop)
{
return m_pStack->m_nStack[m_nIndex++];
}
return 0;
}
int main(int argc, char* argv[])
{
IntStack* pStack = new IntStack;
for(int i = 0; i < 5; ++i)
{
pStack->Push(i);
}
Iterator* pIt = new IntStackIterator(pStack);
for(int i = 0; i < 5; ++i)
{
cout << (*pIt)++ << endl;
}
return 0;
}
相关文章推荐
- 设计模式C++学习笔记之三(Iterator迭代器模式)
- Design Pattern学习笔记之迭代器模式和复合模式(the Iterator and Composite Pattern)
- 设计模式 笔记 迭代器模式 Iterator
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 步步为营 .NET 设计模式学习笔记 十一、Iterator(迭代器模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式 笔记 迭代器模式 Iterator
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 步步为营 .NET 设计模式学习笔记 十一、Iterator(迭代器模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式笔记12:迭代器模式(Iterator Pattern)
- 设计模式笔记12:迭代器模式(Iterator Pattern)
- 设计模式笔记-Iterator迭代器模式
- C#面向对象设计模式纵横谈 学习笔记18 Iterator迭代器模式(行为型模式)
- 设计模式学习笔记---迭代器模式iterator pattern(Java版)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 【设计模式】学习笔记12:迭代器模式(Iterator)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)