迭代器模式(C++)

本文介绍了一个使用C++实现的简单栈类group,该类包含push和pop方法用于元素的压入和弹出,并定义了迭代器类Iterator来遍历栈中的元素。示例代码展示了如何创建group实例并使用迭代器进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <string>
#define CAP 100
using namespace std;

class group
{
public:
    group():pc(0){}
    virtual ~group(){}
    friend class Iterator;
    void push(string m)
    {
        if (pc<CAP)
            vec[pc++]=m;
    }
    string pop()
    {
        if (!isempty())
            return vec[--pc];
    }
    bool isempty()
    {
        if (pc<=0)
        {
            return true;
        }
        return false;
    }

private:
    int pc;
    string vec[CAP];
};

class absIterator
{
public:
    absIterator(){}
    virtual ~absIterator(){}
    virtual string operator++()=0;
    virtual string operator++(int)=0;
};

class Iterator : public absIterator
{
public:
    Iterator(group *gup):index(0),p_gup(gup){}
    virtual ~Iterator(){}
    string operator++()
    {
        return p_gup->vec[++index];
    }

    string operator++(int)
    {
        return p_gup->vec[index++];
    }

private:
    group* p_gup;
    int index;
};

int main()
{
    group *gp=new group;
    gp->push("sadfs");
    gp->push("werwer");
    gp->push("28934759");

    Iterator* it=new Iterator(gp);
    for (int i=0;i<3;i++)
    {
        cout<<(*it)++<<endl;
    }
    delete it;
    delete gp;

    system("pause");
    return 0;
}

转载于:https://www.cnblogs.com/tiandsp/archive/2012/06/28/2567402.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值