枯木逢春雨 2017-02-06 03:03 采纳率: 33.3%
浏览 711

有人能给稍微详细解释下这段代码不?!

从没正儿八经用过C++,最近看人家的一个嵌入程序代码,
看不懂啊。。。求高人废神,帮我解释下这段代码。

    template<typename T, size_t N>
    class Container
    {
    private:
        size_t m_iCnt;
        T m_Data[N];
    public:
        Container(){m_iCnt = 0;};
        ~Container(){};
        bool Push(T& In)
        {
            for(size_t i = 0; i < m_iCnt; i++)
            {
                if(In == m_Data[i])
                    return false;
            }
            if(m_iCnt < N)
            {
                m_Data[m_iCnt] = In;
                m_iCnt++;
                return true;
            }else
                return false;
        };
        bool Pop(T& Out)
        {
            if(m_iCnt > 0)
            {
                m_iCnt--;
                Out = m_Data[m_iCnt];
                return true;
            }else
                return false;
        };
        bool IsEmpty(void)
        {
            return 0==m_iCnt;
        };
        bool IsFull(void)
        {
            return N==m_iCnt;
        };
        size_t Count()
        {
            return m_iCnt;
        };
    };
  • 写回答

2条回答 默认 最新

  • insping 2017-02-06 03:20
    关注
     template<typename T, size_t N> //定义模版,及常说的泛型
    class Container
    {
    private:
        size_t m_iCnt;//游标
        T m_Data[N];//长度为N 的数组
    public:
        Container()
        {
            m_iCnt = 0;//构造函数
        };
        ~Container() {};//析构函数,它会在每次删除所创建的对象时执行
        bool Push(T& In)//入栈
        {
            for(size_t i = 0; i < m_iCnt; i++)//已存在则不入栈
            {
                if(In == m_Data[i])
                    return false;
            }
    
            if(m_iCnt < N)
            {
                m_Data[m_iCnt] = In;
                m_iCnt++;
                return true;
            }
            else
                return false;
        };
        bool Pop(T& Out)//出栈
        {
            if(m_iCnt > 0)
            {
                m_iCnt--;
                Out = m_Data[m_iCnt];
                return true;
            }
            else
                return false;
        };
        bool IsEmpty(void)//判空
        {
            return 0 == m_iCnt;
        };
        bool IsFull(void)//判满
        {
            return N == m_iCnt;
        };
        size_t Count()//当前长度
        {
            return m_iCnt;
        };
    };
    
    

    特殊的栈.

    评论

报告相同问题?