在C语言中,快速失效迭代器应该如何失效

在C语言中,快速失效迭代器应该如何失效,c,design-patterns,iterator,C,Design Patterns,Iterator,我想在C中实现一个fail-fast迭代器,也就是说,如果列表 在迭代时修改 失败的位置肯定会出现在hasNext和next方法中,我将根据迭代器创建以来的修改次数进行检查。所以我想我知道它什么时候应该失败,但我不知道它应该如何失败 我考虑过assert(),但它只用于调试,所以可以吗?如何对其进行单元测试? 我最关心的是找到一种对这个功能进行单元测试的方法 // List Methods List* List_new(void); void List_delete(List** self);

我想在C中实现一个fail-fast迭代器,也就是说,如果列表 在迭代时修改

失败的位置肯定会出现在hasNext和next方法中,我将根据迭代器创建以来的修改次数进行检查。所以我想我知道它什么时候应该失败,但我不知道它应该如何失败

我考虑过assert(),但它只用于调试,所以可以吗?如何对其进行单元测试? 我最关心的是找到一种对这个功能进行单元测试的方法

// List Methods
List* List_new(void);
void List_delete(List** self);
int List_add(List* self, void* data);
size_t List_size(List* self);
void* List_head(List* self);
int List_removeHead(List* self);
ListIterator* iterator(List* self);

// ListIterator Methods
bool ListIterator_hasNext(ListIterator* self);
void* ListIterator_next(ListIterator* self);

这取决于您希望程序在此实例中执行(或能够执行)的操作

Assert可能不好,因为它会杀死程序,我怀疑它是否合适


您可以将大多数返回值移动到输出参数中,然后返回一个bool,指示操作是否有效,然后可以在单元测试中对其进行断言。

太好了!我将尝试这个方法,并将大量的“const”放在每个地方,以明确什么是输入,什么是输出。