[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 20:36 / Filesize : 218 KB / Number-of Response : 953
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part78



1 名前:v(^・^)v mailto:sage [2010/02/13(土) 23:18:03 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part77
pc12.2ch.net/test/read.cgi/tech/1263556932/

263 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 17:57:01 ]
継続での脱出みたいなことってC++で出来ますか?
たとえばこんな関数があったときに、どこかでret=trueになったら
一番最初にfを呼び出した箇所へ飛んで関数を終わらせたい

bool f(){
bool ret=false;
//処理によってret=trueになったりならなかったり
for(int i=0;i<n;++i){ret|=f();}
return ret;
}
gotoで抜けられるのは今いる関数内のループだけだと思うので無理?

264 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:00:50 ]
>>263
無理です。


265 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:07:53 ]
>>263
たとえば、例外的なことがおきたときにプログラムの実行を中断したいというのであれば、
例外が使える。
だけど、例外は例外的な事以外に乱用すると非常に見通しの悪いプログラムになるから注意。


266 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:34:56 ]
>>263
bool f(){
//処理によってret=trueになったりならなかったり
for(int i=0;i<n;++i){if(f())return true;}
return false;
}

267 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:19:09 ]
makeって使ったことがないのですが、
勉強した方がいいのでしょうか。


268 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:24:24 ]
いい

269 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 23:25:15 ]
IDEに任せっきりでmakeってのから逃げまくっていたのですが、
やっぱり勉強します。

ありがとうございます。

270 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:14:10 ]
tbbを実用で使い出したけど、メモリ関係の例外が出まくるぞ。
いつもではなくたまに。どうみてもエラーになり得ないところで例外。
そのためにtbb_allocがついているのか。
メモリ管理をtbb専用で全部置き換えれば直るんですか。

271 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:29:16 ]
>270
>いつもではなくたまに。どうみてもエラーになり得ないところで例外。
使い方が間違ってて排他処理で失敗してるだけじゃないの?



272 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 00:49:38 ]
そうか。試しに全書き換えでやってみる。

273 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 01:16:49 ]
#define allocator scalable_allocator
とやると、
std::allocator がstd::scalable_allocatorになる。
std::allocator がtbb::scalable_allocatorにはどすればいい。
::がdefineにかけない。


274 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 01:19:09 ]
#define std tbbにしたらエラーでまくり。当然全関数対応しているわけはなく。

275 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 01:33:30 ]
namespace std {
 typedef xxx::myallocator myallocator;
}
#define allocator myallocator

276 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 01:47:52 ]
できないです

template<typename T> class scalable_allocator;

となっていて、テンプレート引数が必要と出ます

277 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 01:53:11 ]
単純なdefineの文字置き換えで出来ないかと考え中。
stdをstd0に書き換えて、tbbをstdにして、ここでヘッダを読み込み
std0をstdに戻せば、善さげなきはする。
別名で存在している関数をdefineで置き換えたらいけそう

278 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:06:20 ]
駄目だった 再定義とか出る

279 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:08:02 ]
バグの温床になりそうだな

280 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:25:01 ]
悪夢だ・・・

281 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:26:17 ]
アロケータの置き換えはTBBのチュートリアルにやり方が書いてある



282 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:44:48 ]
面倒になってきたので標準装備のみで0から作るぜ

283 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 02:57:58 ]
std::vector<int, tbb::scalable_allocator<int> >などとその都度指定する、
それをtypedefするというのは駄目なの?正統派だと思うのだけど。

C++0xなら
template<typename T>
using vector_tbb<T> = std::vector<tbb::scalable_allocator<T>>;
と書いて、vector_tbb<int>とかvector_tbb<std::string>とか書けるようになるんだけど、
まだ未来の話……。

284 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 06:26:39 ]
if文で真偽値を評価すると真になる要素がいくつあるか数えるのを短く書きたいです。

vector<int> a;
// ;;;;;;;

int n = 0;
for(int i = 0; i < a.size(); ++i)
if( a[i] )
n++;

これを、
int n = std::count( a.begin(), a.end(), ?? );
ぐらいに短く書きたいのですが、なにかいい方法あります

285 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 06:30:24 ]
ファンクタ使えば?

286 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 06:37:40 ]
int n = a.size() - std::count(a.begin(),a.end(),0);

287 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 07:02:32 ]
みなさまありがとうございます。


>>285
クラスを定義しようとすると、結局長くなってしまいますし、離れた場所に書くことになるため気に入りません。

>>286
それが良いですね。勉強になりました。

intの場合はそれでいいのですが、もうすこし一般化して、 if( a[i] >= 0 ) の場合などにも使える方法はありますか?

288 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 08:10:08 ]
>>287
関数内クラス
boost::lambda
c+0x lambda関数


289 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 08:49:16 ]
>>287
count_if(a.begin(), a.end(), bind2nd(not_equal_to<int>(), 0))
みたいなのをちょっとずつ変えれば

290 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 12:20:46 ]
トークン結合演算子##を利用して
どうにかならんかね?

291 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:00:32 ]
関数内にしかスコープのない関数って作れる?
void foo(){
std::cout << "foo\n";
}
の中で

void foo(){
void bar(){std::cout << "bar\n";}

bar();bar();bar();bar();
std::cout << "foo\n";
}

こんな風に。
普通に考えてC++では違反だと思うのだが、
どうにか回避するトリックとか。




292 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:03:15 ]
>>291
ローカルクラスを使う。
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-tips-1.html

293 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:27:52 ]
ローカルクラスは結構便利なんだけどなぜかあまり浸透してないよね

294 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:37:37 ]
だってtemplateで外部にクラス渡せないし

295 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:05:50 ]
名前空間やモジュールシステムを持たないJavaScriptのような言語ならともかく
C++ではあまり必要性がないと思う。ローカルクラスや関数内関数
クロージャはまた別だけど

296 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:08:02 ]
ローカルクラスはtemplate引数も使えない。
あと0xでlambdaの型が外部に渡せるのに未だ渡せないローカルクラスは生きている意味があるのかと問いたい。

297 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:13:18 ]
fainalなクラスとか?
ローカルクラスにできて他にできないことって特にないよなぁ
ローカルのほうが散らかさないで書ける場合はあるけど

298 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:17:58 ]
「外部に渡せる」の意味がわからん

299 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:18:33 ]
ローカルクラスは昔使ってたけど、関数が大きくなって読みにくくなるんで匿名名前空間に置くようになった。


300 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:27:08 ]
ローカルクラスはデストラクタで自動でリソース解放するのにたまに使ったり。
(=スマートポインタのデリーターみたいな感じ。)

それとC++0xからはテンプレート引数に渡せるようになるね。

301 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:29:21 ]
 × デリーター
 ○ カスタムデリーター
です。



302 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:35:29 ]
無名の名前空間だとヘッダに書かないといけないテンプレートクラスに使えないね


303 名前:291 mailto:sage [2010/02/22(月) 00:16:05 ]
>>292
ありがとうございます。


304 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:49:41 ]
std::string str[] = {
"A",
"B"
};
これってバグの元になる?
int i = sizeof(str) / sizeof(str[0]);
こうするときとかに。

305 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:52:44 ]
動的配列であってもその実体は内部にelementのpointerを持っているだけなので
中身のデータが違ってもインスタンスの大きさはそれぞれ同じ。

306 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:54:13 ]
>>305
即レスかつわかりやすい説明ありがとうございます。
不安がなくなりました。

307 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:58:51 ]
C99で絶望するがよい。

308 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:01:14 ]
素直にvector<string>使いなよ。

309 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:03:48 ]
>>304-306
何を心配してたのかわかんない。少し解説してもらえるとうれしい。

310 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:08:08 ]
std::string a = "asdf", b = "9999999999999999999999999999999";
って文字列の長さが違うからsizeof(a)とsizeof(b)で同じ数値になるの!?
std::stringで配列作っていいの!?!?!??!?!!!???わかんないです><;;;;;

→ のーぷろぶれむ


311 名前:304 mailto:sage [2010/02/22(月) 01:15:14 ]
>>310
ありがとう。
その通りでした。

>>308
あとあと編集しづらいかな見にくいかなと思ったので。



312 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:47:53 ]
クラス内にstatic constのint値を定義して,
#defineの代わりにしたいんですが,
このint値はそのクラスのインスタンスを生成してなくても,
メモリ上に存在するのでしょうか?
そうなると,大規模開発では避けるべきなのでしょうか?

313 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:51:08 ]
#defineされた値だとプログラム全体の最適化がされない限り書く度に別々のところに数値が配置されるけどね。

314 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 02:00:33 ]
グローバル変数ってlibファイルで共有?
モジュールで共有?


315 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:47:17 ]
>>312
最適化すりゃどうせ消える

316 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:00:22 ]
>>312
まあ理屈はそうだけども、
現実的にはその最適化がなされないような状況は
明示的にコンパイルオプションで止めろ!
と言わない限りおこんなinじゃない?


317 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:40:04 ]
staticなんだからインスタンスは関係ないんじゃ

318 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:56:37 ]
templateクラスのstatic変数ならあるいは

319 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:40:59 ]
hiphopのwindows binaryありますか。phpコードをc++に書き換え、phpから利用できるようになるようなんですが。
ソースコード。
github.com/facebook/hiphop-php

320 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 01:04:04 ]
来月出版の
C++テンプレートメタプログラミング
糞本かな?

えぴなんとかさんの書いた類の糞本レベル?

321 名前:デフォルトの名無しさん [2010/02/23(火) 05:41:33 ]
禿本の邦訳にも係わってる人だよ



322 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 12:14:03 ]
えぴなんとかさんってすごいのかどうかよくわからん
昔の掲示板ログとか見るととんちんかんな感じだよね
えぴなんとかさんが初心者だったころなのかもしれないけど

323 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 18:19:02 ]
これのことかな
episteme.wankuma.com/stlprog/index.html


324 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 18:48:30 ]
わんくま同盟ってなんか気持ち悪いよね
公開しているドキュメントでお世話になってはいるけど、近づきたくない感じ

325 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 19:14:15 ]
気持ち悪いというあいまいで感覚的な概念が気持ち悪い



326 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 19:41:10 ]
単に偉そうでむかつくんだろ

327 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 19:47:58 ]
「気持ち悪い」のはともかく、「よね」が意味わからん

328 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 20:52:33 ]
内輪ネタを表に出したがるあたりと偉そうなのはむかつくが同意は求めない

329 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 00:19:05 ]
えぴなんとかさんって
インなんとかさんみたいなもんか?

330 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 00:42:06 ]
ペンネームに機種依存文字を使うプログラマの人って…

331 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 00:50:37 ]
ビル☆ゲイツの悪口はそこまでだ



332 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 01:07:23 ]
C++学ぶのにいい本ありませんか?


333 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 01:08:02 ]
>>332 >>4-5

334 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 01:11:44 ]
>>330
今チェックしたんだけど
機種依存文字じゃなかったぞ

335 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 06:51:15 ]
>>332
こいつはマルチポストだから相手にしないように!


336 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 18:30:19 ]
単項演算子-のオーバーロードについて質問があります。
独習C++という本で勉強しているのですが、以下のようなサンプルコードがあります。(※一部省略)
class coord{
int x,y;
public:
coord(){x=0;y=0;}

coord operator-(coord ob2);//2項負符号
coord operator-();//単項負符号
};
//単項-をcoordクラスに対してオーバーロードする
coord coord::operator-(){
x=-x;
y=-y;
return *this;
}
上記の場合、
coord ob1;
coord ob2;
ob2=-ob1;
としただけで、ob1の内容が変わってしまうと思うのですが、
このサンプルコードは正しいのでしょうか?
以下のほうがいいと思うのですが。
//単項-をcoordクラスに対してオーバーロードする
coord coord::operator-()
{
coord temp;
temp.x=-x;
temp.y=-y;
return temp;
}

337 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 18:33:57 ]
俺もそのほうが良いと思う
一般に組み込み型と同じ挙動になるようにデザインするほうが良いと
EffectiveC++にも書いてあるし

338 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 18:40:12 ]
そしてconstを付けるべき

339 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 19:21:48 ]
>>336
君の意見は正しい。
coord coord::operator-()const;
とすれば納得できると思う。

340 名前:336 mailto:sage [2010/02/24(水) 19:57:51 ]
>337-339
ありがとうございました。
これで先に進めます。

341 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:20:04 ]

*thisを返すからいいんじゃないの?



342 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:23:33 ]
this->xが変わるからダメなんじゃないの

343 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:28:54 ]
プログラムに致命的なエラーがあり
(取り扱えない例外をキャッチしたなど。)
そこで即座に終了したい場合、
assert(0);
exit(1);
のどちらが望ましいのでしょうか?

また、この2つにはどんな違いがあるのでしょうか?

よろしくお願い申し上げます。

344 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:33:31 ]
>>342
ああ、すまない。ぼけてたorz
もう寝る…

345 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:42:17 ]
>>343
assertは、ここでこうなってるはずがない、というプログラマの意思表示
んで、それはリリースビルドだとなくなるロジック

346 名前:デフォルトの名無しさん [2010/02/24(水) 23:59:19 ]
インターフェースと実装を分離したいと思ってて、pImplイディオムを利用しようと考えています。
一般的なpImplイディオムは、コンストラクタでimpクラスをnewしていますが、
いま設計しているpImplを利用したクラスは、何度もインスタンス化されるので、newしたくありません。
また、Factory関数を作って、利用者側にわざわざ呼ばせたくありません。

つまり、クラスの利用者から、実装クラスを隠蔽し、かつインスタンス化時に何度もnewしないような方法はありますでしょうか?
(妥協して、メンバ変数だけインターフェース部に持ってきて、実装クラスをSingletonにする、など考えてみましたが、案の定イマイチでした)


347 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 00:22:00 ]
一つ一つ中身が違うならプールして再利用ぐらいしか思い付かないなぁ


348 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:11:41 ]
>>343
その用途だと abort() あるいは terminate() が正解だと思う。
assert() と exit() 含めて、それぞれの違いはライブラリのドキュメント読んでね。

349 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:14:23 ]
>>346
new したくないっていうのは動的メモリ確保のコストを嫌っての話だよね?
そういうことなら、外側のクラスに char impl_storage[max_size] みたいな領域だけ
置いといて、実装クラスでは new (impl_storage) impl(....) すればいいかもしれない。

350 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:16:15 ]
>>346
dlmallocなんて単純だからすぐ作れるし
自分でmalloc作ればいいよ

351 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:20:56 ]
>>346
まず、ふつうに new する状態でパフォーマンスに問題があって、次にそのボトルネックが
new にあるという確認を済ませ、さらに >350 の言うように dlmalloc などによる高速化を試みた後、
それでも問題が残るようなら >349 のような奇怪なコードを、十分なコメントを添えたうえであれば、
書いても良い。

それ以外は許さん。



352 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:51:00 ]
>346
実装インスタンスのnewコストを気にするんだったら、不要になったら再利用できるように簡単なGC作ったら?
実装インスタンス自体は利用者から見えないから、別にFactory関数で管理しても問題ないだろうし。
お手軽に実装するんだったらboost::shared_ptr + deleterかね。


353 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 02:01:58 ]
>>343
assertは開発作業中のマーキングや「しおり」のようなものだと考えたほうがいいと思う。
exitはatexitの登録関数やストリームI/Oの後始末をしてから終了する。
C用の例外の代替物と見るべきで、C++では使わないだろう。デストラクタは実行されないし。
terminate(abort)なら後始末もせずに割り込みを掛けて即座に終了するが、
そこまでしたい状況は考えにくい。
結局、例外をそのまま放っておいてmainでキャッチしてreturn 1;とかするのが
常道だと思う。

354 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 02:05:19 ]
>>343
取り扱えない例外ははじめからキャッチするなよ。
万一そんな状況がやむを得ないとすれば、 throw; で外に向けて投げとけばいいよ。
そうすれば勝手に terminate() するかもしれないし、誰かがキャッチしてくれるかもしれない。

355 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 03:30:24 ]
enum型を引数に持つときって参照渡しにした方がいいの?
構造体とは違うっぽいのでしなくてもいい?速度的に

356 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 03:38:12 ]
>>355
速度が気になるなら計測してみるがいい。

参照渡しがよくあるポインタと同様の実装だと考えると、 enum のサイズがポインタより
大きくなることはなさそうで、あまりメリットはなさそうな感じではある。

357 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 03:54:59 ]
>>351
配置newって嫌われ者なの?

358 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 05:48:41 ]
>>355
列挙型の実態が整数"ではない”実装を見たことがない。

359 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 09:35:37 ]
>>357
別に配置newは嫌いじゃないですが、必要ないところで使うような人は嫌いです。

360 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 10:53:34 ]
誰もつっこまないけどchar impl_storage[max_size]なんてしたらアライメントどうするんだよ。

361 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 10:55:15 ]
>>360 boost::aligned_storage あたりでおきかえる。



362 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 11:33:04 ]
じゃあ最初からboost::aligned_storageって書けよ

363 名前:349 mailto:sage [2010/02/25(木) 12:07:15 ]
>>362
boost::aligned_storage は標準ライブラリでもないし、コンパイラの拡張機能で指定した
ほうがいいかもしれないし、その場で適当な union 作ってしのぐのがいいかもしれないし、
そんな気持ちを込めて「〜みたいな領域」と書きました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<218KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef