#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;
}
簡單的迭代器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.