したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

管理人の独り言(プログラミング関連)

251 ◆rCEzuNnL0g:2008/09/06(土) 23:25:43
>>250
-----
#include <iostream>
#include <cstdarg>

template<typename t>
struct Pointer{
template<size_t i>
struct _{
typedef typename Pointer<t>::_<i - 1>::type *type;
};

template<>
struct _<0>{
typedef typename t type;
};
};

template<typename t>
struct _Vec{
template<size_t i>
static
typename Pointer<t>::_<i>::type fnc(va_list arg){
typename Pointer<t>::_<i>::type p;
size_t size = va_arg(arg, size_t);
p = new typename Pointer<t>::_<i - 1>[size];
for(size_t i = 0; i < size; ++i){
p[i] = Vec<t, i - 1>(arg);
}
return p;
}

template<>
static
typename Pointer<t>::_<1>::type fnc<1>(va_list arg){
size_t size = va_arg(arg, size_t)
return new typename Pointer<t>::_<0>::type[size];
}
};

template<typename t, size_t i>
typename Pointer<t>::_<i>::type Vec(size_t size, ...){
va_list arg;
va_start(arg, size);
typename Pointer<t>::_<i>::type p;
p = new typename Pointer<t>::_<i - 1>::type[size];
for(size_t j = 0; j < size; ++j){
p[j] = _Vec<t>::fnc<i - 1>(arg);
}
va_end(arg);

return p;
}

int main(){
Pointer<char>::_<1>::type p = Vec<char, 1>(10, 20);
}


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板