C++ 如何递归调用以结构数组作为参数的函数

C++ 如何递归调用以结构数组作为参数的函数,c++,arrays,recursion,struct,quicksort,C++,Arrays,Recursion,Struct,Quicksort,我想使用快速排序按特定成员对结构数组进行排序。 这是我的结构: struct points { int x,y,apart; }; 以及快速排序功能: void quicksort(points* a,int points::*member,int left, int right) { int i=left, j=right, pivot=a[(i+j)/2].*member; while(i<j) {

我想使用快速排序按特定成员对结构数组进行排序。 这是我的结构:

    struct points
{
    int x,y,apart;
};
以及快速排序功能:

 void quicksort(points* a,int points::*member,int left, int right)

{
       int i=left, j=right, pivot=a[(i+j)/2].*member;
       while(i<j)
         {
             while(a[i].*member<pivot)
             i++;
             while(a[j].*member>pivot)
             j--;
                if(i<=j)
                  {
                      points tmp=a[i];
                      a[i]=a[j];
                      a[j]=tmp;
                      i++;j--;
                  }
         }
       if(left<j)
       quicksort(a,&points::*member,left,j);
       if(i<right)
        quicksort(a,&points::*member,i,right);
}
void快速排序(点*a,int点::*成员,int左,int右)
{
int i=左,j=右,pivot=a[(i+j)/2].*成员;

而(我比你想象的要容易,像这样

if(left<j)
   quicksort(a,member,left,j);
if(i<right)
   quicksort(a,member,i,right)

if(left我假设您想执行类似于“按x排序”、“按y排序”的操作作为函数的输入

在这种情况下,您不能使用始终指向特定实例变量的指针


在这种情况下,更好的方法可能是使用传递函数,如
int get_sort_param(const struct points&p)
,并在排序算法中调用它,只要你是排序值。

他没有使用指针,而是成员指针。完全不同。
if(left<j)
   quicksort(a,member,left,j);
if(i<right)
   quicksort(a,member,i,right)