C++迭代器模拟代码(学习记录)

本文记录了学习C++迭代器的过程,分享了通过代码模拟迭代器的实践心得,虽然未经大规模测试,但适用于理解迭代器的工作机制。
摘要由CSDN通过智能技术生成


学习使用,没大规模测试,通用改模板

#include <memory.h>#include <stdexcept>
#include <assert.h>
 
class CArrary
{
public:
        //迭代器类,保护成员
        class iterator
        {
        public:
                iterator& operator++()
                {
                        assert(m_data != m_end);
                        m_data++;
                        return *this;
                }
                iterator& operator--()
                {
                        assert(m_data != m_begin);
                        m_data--;
                        return *this;
                }
                iterator operator++(int)
                {
                        assert(m_data != m_end);
                        //------注意,临时变量保存,在构造
                        char* temp = m_data;
                        m_data++;
                        return iterator(temp, m_begin, m_end);
                }
                iterator operator--(int)
                {
                        assert(m_data != m_begin);
                        //------注意,临时变量保存,在构造
                        char* temp = m_data;
                        m_data--;
                        return iterator(temp, m_begin, m_end);
                }
                char& operator*()
                {
                        return *m_data;
                }
                bool operator==(const iterator& itr)
                {
                        return m_data == itr.m_data;
                }
                bool operator!=(const iterator& itr)
                {
                        return m_data != itr.m_data;
                }
 
        private:
              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值