前言
上一篇讲到设计一个 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 =