ループを使わずに配列の順序を逆にしてみた

ループを使わずに配列の順序を逆にする。という問題があったのでやってみた.

答えは再起呼び出し.

#include <iostream>
#include <algorithm>

void disp(int val){
	std::cout << val << std::endl;
}

template <class T>
void swap(T *a, T *b){
	T temp=*a; *a=*b; *b=temp;
}

template <class T>
void reverse(T *a, T *b){
	b--;
	if(a>=b)return;
	swap(a,b);
	a++;
	reverse(a,b);
}

int main(){
	int array[10]={1,2,3,4,5,6,7,8,9,10};
	
	std::for_each(array,array+10,disp);
	reverse(array,array+10);
	std::for_each(array,array+10,disp);

	return 0;
}

for_each使ってみたかっただけなんです><.reverse部分ではループ使ってない.

dispをテンプレートにしたときに,呼出側でdispみたいにしないといけないらしいので,今回はテンプレート化していない.
このプログラム,配列ならOKだけど,reverse_iteratorにも対応したいな〜.でもめんどいのでこの辺でやめとく.