c_cpp 使用(1)仿函数,(2)函数指针和(3)c风格qsort来分析排序速度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 使用(1)仿函数,(2)函数指针和(3)c风格qsort来分析排序速度相关的知识,希望对你有一定的参考价值。

#include <stdio.h>      
#include <time.h>  
#include <math.h>  
#include <vector>
#include <cstdlib>
#include <algorithm>
using namespace std;

inline bool comp1(double a, double b) {
    return a > b;
}

inline int comp2(const void *a, const void *b) {
    double x = *reinterpret_cast<const double*>(a);
    double y = *reinterpret_cast<const double*>(b);
    if(x<y) return 1;
    if(x>y) return -1;
    return 0;
}

int main()
{
    double a[1000000];
    for(int i=0; i<1000000; i++) a[i] = i*(rand()%100);
    
    clock_t t = clock();

    //sort(a, a+1000000, greater<double>());                // fastest
    //sort(a, a+1000000, comp1);                            // fast
    qsort(a, sizeof(a)/sizeof(int), sizeof(int), comp2);    // slowest
  
    t = clock() - t;
    printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);

}

以上是关于c_cpp 使用(1)仿函数,(2)函数指针和(3)c风格qsort来分析排序速度的主要内容,如果未能解决你的问题,请参考以下文章

C++智能指针shared_ptr 定位删除器(仿函数)

C++高级开发之可调用对象functionbind

C++高级开发之可调用对象functionbind

C++高级开发之可调用对象functionbind

C++ template —— 函数对象和回调(十四)

仿函数