线性表-数组描述补充 迭代器(C++)

补充线性表数组实现的迭代器部分

知识点:

typedef是C语言中的一个关键字,它的主要作用是为一种数据类型定义一个新的名字(别名)。

在 C++ 的 STL(Standard Template Library)中,迭代器是连接容器和算法的桥梁。根据迭代器的功能和特性,STL 将迭代器分为以下五种类别:

  1. 输入迭代器(Input Iterator):只读,支持单向遍历。

  2. 输出迭代器(Output Iterator):只写,支持单向遍历并写入元素。

  3. 前向迭代器(Forward Iterator):支持单向遍历,并允许多次遍历同一序列(即支持多次读取)。

  4. 双向迭代器(Bidirectional Iterator):支持双向遍历,即可以向前也可以向后逐个遍历元素。

  5. 随机访问迭代器(Random Access Iterator):支持在常数时间内访问序列中的任意元素,并提供了丰富的算术运算能力。

ptrdiff_t 类型变量通常用来保存两个指针减法操作的结果。

代码:

template<typename T>
class iterator
{
public:
    typedef bidirectional_iterator_tag iterator_category;
    typedef T value_type;
    typedef ptrdiff_t difference_type;
    typedef T* pointer;
    typedef T& reference;

    iterator(T* thePosition = 0)
    {
        position = thePosition;
    }

    T& operator*() const
    {
        return *position;
    }

    T* operator->() const
    {

        return &*position;
    }

    iterator& operator++()
    {
        ++position;
        return *this;
    }

    iterator operator++(int)
    {
        auto old = *this;
        ++position;
        return old;
    }

    iterator& operator--()
    {
        --position;
        return *this;
    }

    iterator operator--(int)
    {
        auto old = *this;
        --position;
        return old;
    }

    bool operator!=(const iterator right) const
    {
        return position != right.position;
    }

    bool operator==(const iterator right) const
    {
        return position == right.position;
    }

protected:
    T* position;
};

在类arrayList中增加下面两个pubilc函数:

 class iterator;
    iterator begin()
    {
        return iterator(m_pElement);
    }

    iterator end()
    {
        return iterator(m_pElement + m_iListSize);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值