首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将模板函数传递给模板函数

将模板函数传递给模板函数
EN

Stack Overflow用户
提问于 2017-09-28 08:37:00
回答 1查看 76关注 0票数 0

这个问题中的很多可能在现实世界中使用是不切实际的,但我把它作为一个学习过程来做。

我已经开始了一个项目,记录每种类型的排序算法及其效率。我一直在用c++编写每个排序算法作为模板函数,如下所示:

代码语言:javascript
复制
template <class T>
void bubble_sort(T arr[], int numItems) {
    for (int i = 0; i < numItems; i++) {
        for (int j = 0; j < numItems - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                T temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

我希望我的驱动程序在几组数据上测试每个算法的效率,并希望通过创建一个测试每个排序算法的模板函数来进一步推广我的过程,但我不知道如何做到这一点。以下是我的想法,但它不起作用:

代码语言:javascript
复制
template<typename F, typename T>
double test(F arr[], int numItems, T func) {

    clock_t start, finish;
    start = clock();
    T(arr, numItems);
    finish = clock();

    return (double)(finish - start) / CLOCKS_PER_SEC;

}

测试的内容并不重要,但我希望能够像这样传入排序函数:

代码语言:javascript
复制
    double duration = test<int>(arr, numItems, bubble_sort<int>);

任何帮助构建这个函数的人都会更好;

EN

回答 1

Stack Overflow用户

发布于 2017-09-28 09:04:49

我想您必须在test()中调用func(),如下所示

代码语言:javascript
复制
func(arr, numItems);

而不是

代码语言:javascript
复制
T(arr, numItems);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46459176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档