这是我刚刚写的冒泡排序函数:
template <class iter>
void bubble_sort(iter begin, iter end, int (*cmp)(void *, void *)) {
bool didSwap;
do {
didSwap = false;
for (iter temp = begin; (temp + 1) != end; ++temp)
if ((*cmp)((temp+1), (temp))) {
std::swap(*(temp+1), *temp);
didSwap = true;
}
--end;
} while (didSwap);
}
我想知道这样的事情是否可以在 C 中完成。比较函数可以正常工作,只要它不与标准 stl 容器(如双端队列、向量、列表等)一起使用。但它是我iter begin
的iter end
我很担心。既然你不能用 void 做指针运算,我怎么能做到这一点?是否有可能做到这一点?