stack.h

来自「VC视频对象的跟踪提取原代码(vc视频监控源码)」· C头文件 代码 · 共 83 行

H
83
字号
/////////////////////////////////////////////////////////////////////////////////                                                                           ////  Stack.h      Stack class which holds unsigned char* elements             ////                                                                           ////  Author    : Nils T Siebel (nts)                                          ////  Created   : Mon Jan 21 21:46:48 GMT 2002                                 ////  Revision  : 1.0 of Mon Jan 21 22:32:49 GMT 2002                          ////  Copyright : The University of Reading                                    ////                                                                           ////  Changes:                                                                 ////    nts: rev 1.0: initial working revision   Mon Jan 21 22:32:49 GMT 2002  ////                                                                           /////////////////////////////////////////////////////////////////////////////////#ifndef __STACK_H__#define __STACK_H__#include <cassert>#include "tracker_defines_types_and_helpers.h"  // for MARK, CLEAR_MARK, DEFAULT_STACKSIZEnamespace ReadingPeopleTracker{static const char *Stack_Revision = "@(#) Stack.h, rev 1.0 of Mon Jan 21 22:32:49 GMT 2002, Author Nils T Siebel, Copyright (c) 2002 The University of Reading";typedef unsigned char *cptr;class Stack{    unsigned char **data_stack;    unsigned char **stackptr;    unsigned char **stacktop;    public:    Stack(unsigned int size = DEFAULT_STACKSIZE)	{	    data_stack = new unsigned char*[size];	    stackptr = data_stack;	    stacktop = &data_stack[size];	}        ~Stack ()	{	    delete data_stack;	}        inline bool is_empty() const	{	    return (stackptr == data_stack);	}        inline void push(const cptr &p)	{	    assert (stackptr < stacktop);  // if not we must increase `size' (or DEFAULT_STACKSIZE)	    	    if (stackptr < stacktop)		*(stackptr++) = p;	}        inline void pop(cptr &p)	{	    assert (stackptr > data_stack);  // avoid stack underflow	    if (stackptr > data_stack)		p = *(--stackptr);	}    inline void test(const cptr &p)	{	    if (*(p) == MARK)	    {		push(p);		*(p) = CLEAR_MARK;	    }	}};} // namespace ReadingPeopleTracker#endif

⌨️ 快捷键说明

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