关于c++Primer书上4.15栈类实例的问题
前几天看到c++Primer(第三版)4.15栈类实例,按照源码输入c++.net2003,发现其中问题,怎么也得不到书上写的输出结果,请大家指点一下(有书的朋友验证一下),看看是怎么回事,不知道是我错了?还是书的问题……..,由于新手还望大家不吝指教,谢谢!!!!!。
iStack头文件:
#include <vector>
using std::vector;
using std::cout;
using std::endl;
class iStack
{
public:
iStack(int capacity):_stack(capacity),_top(0) {}
bool pop(int &value);
bool push(int value);
inline bool full()
{return _top?false:true;} //这一句,由于_top被初始为0了,full()不就永远返回true了吗?
inline bool empty()
{return _top<size()-1?false:true;}//_top是不是应该永远比_top-1大?
void display();
inline int iStack::size(){return _top;};
private:
int _top;
vector<int> _stack;
};
bool iStack::pop(int &top_value)
{
if(empty())//是不是empty()应该返回真,if返回false,下面的语句执行不到?
return false;
top_value=_stack[--_top];
cout<<"iStack::pop():"<<top_value<<endl;
return true;
}
bool iStack::push(int value)
{
cout<<"iStack::push("<<value<<")\n";
if(full())
return false;
_stack[_top++]=value;//由于_top被初始为0,上面的if永远为真,直接return了,下面这些语句就执行不了了
return true;
}
void iStack::display()
{
if(!size())
{
cout<<"(0)\n";
return ;
}
cout<<"("<<size()<<")(bot:";
for(int ix=0;ix<_top;++ix)
cout<<_stack[ix]<<" ";
cout<<":top)\n";
}
// 栈类实例.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "iStack.h"
using std::cout;
using std::endl;
int main()
{
iStack stack(32);
stack.display();
for(int ix=1;ix<51;++ix)
{
if(ix%2==0)
stack.push(ix);
if(ix%5==0)
stack.display();
if(ix%10==0)
{
int dummy;
stack.pop(dummy);stack.pop(dummy);
stack.display();
}
}
return 0;
}