【发布时间】:2014-04-14 21:20:38
【问题描述】:
如何将函数指针指向以模板作为参数的函数? 我正在尝试创建一个指向该函数的指针
template<typename BaseType>
int indexOfLargest(const BaseType list[], int startIndex, int endIndex) {
if (startIndex < 0 || startIndex > endIndex)
return -1;
int indexOfMax = startIndex;
for (int index = startIndex + 1; index < endIndex; index++)
if (list[index] > list[indexOfMax])
indexOfMax = index;
return indexOfMax;
}
还有这个功能
template<typename BaseType>
int indexOfSmallest(const BaseType list[], int startIndex, int endIndex) {
if (startIndex < 0 || startIndex > endIndex)
return -1;
int indexOfMin = startIndex;
for (int index = startIndex + 1; index < endIndex; index++)
if (list[index] < list[indexOfMin])
indexOfMin = index;
return indexOfMin;
}
所以我可以避免在每次迭代时执行 if 语句。
template<typename A0, typename A1, typename A2, typename A3, typename A4>
void sortArrayData(A0 a0[], A1 a1[], A2 a2[], A3 a3[], A4 a4[],
const int recordCount, int order) {
int indexOfNext;
for (int index = 0; index < recordCount - 1; index++) {
if (order == 1)
indexOfNext = indexOfSmallest(a0, index, recordCount);
else
indexOfNext = indexOfLargest(a0, index, recordCount);
swap_v(a0[index], a0[indexOfNext]);
swap_v(a1[index], a1[indexOfNext]);
swap_v(a2[index], a2[indexOfNext]);
swap_v(a3[index], a3[indexOfNext]);
swap_v(a4[index], a4[indexOfNext]);
}
}
-- 另外,我在网上或其他程序员那里找不到任何答案。
谢谢
【问题讨论】:
标签: c++ templates pointers function-pointers