[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
メール
|
1-
101-
201-
301-
401-
501-
601-
701-
801-
901-
1001-
1101-
1201-
1301-
1401-
1501-
1601-
1701-
1801-
1901-
2001-
2101-
2201-
2301-
2401-
2501-
2601-
2701-
2801-
2901-
3001-
3101-
3201-
3301-
3401-
3501-
3601-
3701-
3801-
3901-
4001-
4101-
4201-
4301-
4401-
4501-
4601-
4701-
4801-
4901-
5001-
5101-
5201-
5301-
5401-
この機能を使うにはJavaScriptを有効にしてください
|
管理人の独り言(プログラミング関連)
252
:
◆rCEzuNnL0g
:2008/09/06(土) 23:35:07
出来たー
但しVec<>()のテンプレートの第二引数に1以下の値を渡すとコンパイラが暴走するよ。
----
#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>::type[size];
for(size_t j = 0; j < size; ++j){
p[j] = fnc<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>::_<10>::type p = Vec<char, 10>(2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
}
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板