⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.cpp

📁 《c++ 实践之路》光盘中的源代码
💻 CPP
字号:
// (c) Bartosz Milewski 2000
#include "stack.h"
#include <cassert>
#include <iostream>

void IStack::Push (int i)
{
	assert (_top < maxStack);
	_arr [_top] = i;
	++_top;
}

int IStack::Pop ()
{
	assert (_top > 0);
	--_top;
	return _arr [_top];
}

StackSeq::StackSeq (IStack const & stack )
	: _iCur (0), _stack (stack) // init reference
{}

bool StackSeq::AtEnd () const
{
	return _iCur == _stack._top;  // friend: can access _top
}

void StackSeq::Advance ()
{
	assert (!AtEnd()); // not at end
	++_iCur;
}

int StackSeq::GetNum () const
{
	return _stack._arr [_iCur]; // friend: can access _arr
}

int main ()
{
	IStack TheStack;
	TheStack.Push (1);
	TheStack.Push (2);
	TheStack.Push (3);

	for (StackSeq seq (TheStack);
		 !seq.AtEnd();
		 seq.Advance() )
	{
		std::cout << "    " << seq.GetNum() << std::endl;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -