書き込みポイント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の例