首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这里的size()和程序中第一的不一样吧?该怎么处理

2012-02-15 
这里的size()和程序中第一的不一样吧???4.15栈类实例在关于递增递减操作符的讨论结束时我们介绍了栈stack

这里的size()和程序中第一的不一样吧???
4.15   栈类实例
在关于递增递减操作符的讨论结束时我们介绍了栈stack   的抽象来说明这些操作符
的前置和后置格式我们将用一个iStack   类即只支持int   型元素的栈的设计与实现的简
要过程来结束本章
栈是计算机科学的一个基本数据抽象它允许以后进先出LIFO   的顺序嵌入和获取
其中的值栈的两个基本操作是向栈中压入push   一个新值以及弹出pop   或获取
最后压入的那个值其他一些操作包括查询栈是否满full()或空empty()   以及判断栈的
长度size()——即包含多少个元素我们的初始实现只支持int   型的元素下面是其公有接
口的声明
#include   <vector>
class   iStack   {
public:
iStack(   int   capacity   )
:   _stack(   capacity   ),   _top(   0   )   {}
bool   pop(   int   &value   );
bool   push(   int   value   );
bool   full();
bool   empty();
void   display();
int   size();
private:
int   _top;
vector <   int   >   _stack;
};
为了演示递增递减操作符的前置和后置形式的用法我们为iStack   栈选择了固定长度的
实现我们将在第6   章结尾时将其修改为可动态增长的我们把元素存储在一个int   型的
vector   中它的名字为_stack   _top   含有下一个可用槽的值push()操作会向该槽压入一个值
_top   的当前值反映了栈中元素的个数同此size()只需简单地返回_top
inline   int   iStack::size()   {   return   _top;   };
如果_top   等于0   则empty()返回true   如果_top   等于_stack.size()   则full()返回true
inline   bool   iStack::empty()   {
return   _top   ?   false   :   true;   }
inline   bool   iStack::full()   {
return   _top   <   _stack.size()-1   ?   false   :   true;
}


——————————————————————————————————
这段程序中有size()的定义:inline   int   iStack::size()   {   return   _top;   };
但是后来的这段代码中用的函数size()不是上面定义的意思吧?????

[解决办法]
_stack.size() 是STL里vector的接口!
inline int iStack::size() 是iStack类的接口!
细心点!

热点排行