如何递归调用具有结构数组作为参数的函数
how to call recursively a function that has an array of structs as parameter
我想使用快速排序按特定成员对结构数组进行排序。这是我的结构:
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);
}
问题出在这两行代码中:
if(left<j)
quicksort(a,&points::*member,left,j);
if(i<right)
quicksort(a,&points::*member,i,right);
它给了我一个错误:在"*"令牌之前预期为非限定 id|
我不知道当我递归调用它时如何指定我要按其排序的成员......如果有任何意义,请帮助我。谢谢
比你想象的要容易,就像这样
if(left<j)
quicksort(a,member,left,j);
if(i<right)
quicksort(a,member,i,right)
我假设你想做这样的事情:"按x排序","按y排序"作为函数的输入?
在这种情况下,您不能使用指针,因为它始终指向特定的实例变量。
在这种情况下,更好的方法可能是使用像 int get_sort_param(const struct points & p)
这样的函数传递,并在排序算法中调用它,只要你是排序值。
相关文章:
- 从函数中全局删除并重新实例化数组结构,而无需在编译时知道数组的大小
- 如何使用函数的输出初始化 const 数组结构字段?
- 传递数组结构、ofstream 和 interger 以运行
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 将文本文件读取到数组结构中
- C/C++中数组结构和数组结构的通用接口
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- C++ 使用数组结构创建平衡的二叉搜索树
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- 使用 vector 在 c++ 中声明 3D 数组结构
- 数组结构无法正确打印
- 如何在C++中访问数组结构内部的数组结构
- CIN进入数组结构似乎什么也没输入
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- wlanapi-将WlanFreeMemory释放其WLAN_INTERFACE_INFO数组结构
- 显示数组结构 c++
- C++ 使用函数访问数组结构的方法是什么?
- 将庞大的数组结构复制到 GPU
- 如何封送包含字符矩阵的数组结构
- C++多维数组结构的对齐