重写C

的C ++模板 任何人都可以帮助我将这些代码从C ++重写为C ...(它有模板...... yeeee :)) 谢谢。
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中重写这个结构。 简单而整洁......帮助:) 谢谢!     
已邀请:
假设
sh_qsort()
实际上是一个快速实施,你需要做的就是将ref6ѭ重构为比较函数,如expected7ѭ所预期的那样。 从编译时通用代码通过模板到运行时通用代码通过
void *
通常会带来性能损失,您可以通过使用所谓的“X-macros”来使用预处理器来模拟模板。但是,可能没有必要打扰:因为
TEST::c()
足够复杂,所以它可能不会被内联,你只需要支付使用由ѭ7执行的运行时通用交换。     
对不起家伙,这是http://encode.ru/threads/1230-On-compressing-series-of-ones-and-zeroes的结果。 我写了他试图翻译的程序。 无论如何,在http://ctxmodel.net/files/BWT.cpp中有一个更像C的实现     

要回复问题请先登录注册