書き込みポイントC++学習記録充数
1474 ワード
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
using namespace std;
int fcmp(const void* elem,const void* elem2);
void sample1();
void sample2();
int _tmain(int argc, _TCHAR* argv[])
{
sample1();
cout << "*******************" << endl;
sample2();
return 0;
}
template <class T>
struct plus{
T operator()(const T& x,const T& y)const{return x+y;}
};
template <class T>
struct minus{
T operator()(const T& x,const T& y)const{return x-y;}
};
void sample2()
{
plus<int>plusobj;
minus<int>minusobj;
cout << plusobj(3,5) << endl;
cout << minusobj(3,5) << endl;
cout << plus<int>()(43,50) << endl;
cout << minus<int>()(43,50) << endl;
}
void sample1()
{
int ia[10] = {32,92,67,58,10,4,25,52,59,54};
for(int i =0;i <10;i++)
{
cout << ia[i] << " ";
}
cout << endl;
qsort(ia,sizeof(ia)/sizeof(int),sizeof(int),fcmp);
for(int i =0;i <10;i++)
{
cout << ia[i] << " ";
}
cout << endl;
}
int fcmp(const void* elem1,const void* elem2)
{
const int* i1 = (const int*)elem1;
const int* i2 = (const int*)elem2;
if(*i1 < *i2)
return -1;
else if(*i1 == *i2)
return 0;
else if(*i1 > *i2)
return 1;
}
伝達関数ポインタとfunction callの例