任何人都可以帮助我将这段代码从C++重写为C ...(它有模板... yeeee :)) 谢谢。重写C++模板C
template <class T>
void SWAP(T& t1, T& t2)
{
T tmp=t1;
t1=t2;
t2=tmp;
}
而这一次
template <class CMP, class Element>
void sh_qsort(Element* array, uint lo, uint hi)
{
some code...
}
和sh_qsort被称为像sh_qsort<TEST>(test_file, 0, 255)
其中TEST
是
struct TEST {
static int c(uint* A, int x, int y)
{
uint px = A[x];
uint py = A[y];
int r,s;
s = (px<py) ? SWAP(px,py),0x80000000 : 0;
byte* p = &f_buf[px];
byte* th = &f_buf[blocksize];
byte* q = &f_buf[py];
for(; (r=1,p<th) && ((r=(*p)-(*q))==0); p++,q++);
return r^s;
}
static void s(uint* A, int x, int y)
{
SWAP(A[x], A[y]);
}
};
以及如何重写这个结构在C。
简单而整洁...帮助:)
谢谢!
有一个更类似C的实现最简单的方法是使用'#define swap(x,y)'并告诉它该怎么做。我在宏观魔法方面并不重要,但如果您可以搜索宏功能和/或发布迄今为止尝试的内容,那么人们会更倾向于帮助您。这闻起来像功课。 – rubenvb 2011-03-03 10:23:11
你是否意识到C中没有这些特性的直接等价物?你不能简单地重写,你需要大幅改变函数的接口;并根据您的需求,解决方案将有很大的不同。 – 2011-03-03 10:23:23
该代码是可怕的。你可以从代码可读性开始,通过在代码中加入适当的缩进和空格,并让每条语句独立出来。然后制作直观,有意义的变量名称而不是单字母混淆。最后将复杂表达式分解成几个不太复杂的表达式。一旦完成,代码就可以用C重写了。 – Lundin 2011-03-03 11:05:05