容器与迭代器,C实现《第二篇,迭代器》

本文是关于C语言中迭代器的设计与用法的探讨。迭代器被视为容器的索引,可以获取当前位置的内容并进行移动。文章介绍了迭代器的接口设计,如`iterator_reference`、`iterator_dereference`、`iterator_move`等,并提供了简单的使用说明。
摘要由CSDN通过智能技术生成

前言

上一篇讲到设计一个 type_value_t 统一代替C中的数值类型,以及其使用方法。而这篇文章记录一下自己设计的迭代器。

迭代器
  • 迭代器,我理解上,就是一个容器的索引。
  • 能获取当前位置的内容。
  • 具有移动的功能。

基于以上几点,设计迭代器如下:

typedef struct _iterator iterator_t;
struct _iterator {
    iterator_t (*move)(iterator_t, int step);
    void* reference;
    void* container;
};
  • move 是迭代器移动的接口。
  • reference 是当前容器节点的指针。
  • container 是相关的容器。
迭代器用法
#define iterator_reference(iter) (iter.reference)
#define iterator_set_reference(iter, refer) (((iter).reference=(refer))?(iter):(iter))
#define iterator_container(iter) (iter.container)
#define iterator_dereference(iter) (*((type_value_t*)iterator_reference(iter)))

#define iterator_assign(to, from) (iterator_dereference(to)=iterator_dereference(from))

#define iterator_exchange(t1, t2) do { \
    type_value_t t = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值