#include <iostream>
using namespace std;
class IntStack
{
private:
enum {ssize = 100};
int stack[ssize];
int top;
public:
IntStack() : top(0){}
//~IntStack(){}
void push(int i)
{
if (top <ssize)// 这个是判断条件,
stack[top++] = i;
}
int pop() // 每pop一次堆栈里边就少一个数据,
{
if (top > 0) // 这个是判断条件,
return stack[--top];
}
friend class IntStackIter;
};
class IntStackIter // 这个是做堆栈的迭代器,迭代器不会改变堆栈里边的数据,只能讲数据读取出来看,
{
private:
IntStack& s;
int index; // 索引,
public:
IntStackIter(IntStack& is) : s(is), index(0) {}
int operator++() // 操作符重载前加加,
{
if (index < s.top)
return s.stack[++index];
}
int operator++(int)
{
if (index < s.top)
return s.stack[index++];
}
};
int main()
{
IntStack a;
a.push(8);
a.push(9);
a.push(10);
a.push(11);
IntStackIter it(a);
for (int i = 0; i < 4; i++)
cout << it++ << endl; // 前加加输出9 10 11 还有一个随机数,后加加输出8 9 10 11
return 0;
}
简单的迭代器
最新推荐文章于 2024-10-20 14:34:49 发布