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 —— 函数对象和回调(十四)
仿函数