我应该通过哈希表(指向数据链表的指针数组)和一些支持函数(即插入元素、删除表)编写 C++ STL 容器映射(关联数组)的 C 实现......我已经成功编写了所有这些,除了一个,它是foreach(table, function_ptr)
函数,它为表中的所有数据调用传递的函数(打印内容......)。
我有点卡在这里,因为我不知道应该传递什么参数function_ptr
,所以它是通用的。就目前而言,我认为这是不可能的。
如果我只想将指针传递给 printf,这很容易,原型foreach
看起来像这样
foreach(table_t *t, int (*function_ptr)(const char *fmt, ...))
我会为每个这样的数据节点调用它
function_ptr("%s, %d\n", node.key, node.data)
但是如果我使用它并且有一天改变主意,我想传递我自己的函数,我将不得不更改调用函数的代码和foreach
函数。
有没有简单的方法来做这样的事情?