【C++】STL(Standard ..
263:デフォルトの名無しさん
08/03/14 22:15:57
>>259
クラスの役割にかかわらず名前がつけられるなんて思わないでください。
264:オガちゃん萌え ◆tyvkWCNtzY
08/03/15 17:21:41
>>259
クラス名決める前に設計段階で静的モデルからクラス図作るからその段階で関数オブジェクトだろうがクラスだろうがメソッドだろうが役割に適した名前になるんじゃないの?
設計改善してコードリファクタリングの過程でまた適した名前にすると思うんだが?
STLとは関係ないし
使い捨てツール作るなら、名前なんかテキトー
動けばよろし
265:デフォルトの名無しさん
08/03/15 17:37:28
ちょっとした関数オブジェクトの事だろ
他言語なら匿名メソッドとかラムダですませちゃうような奴
そんなん設計段階で無い事の方が多い
266:デフォルトの名無しさん
08/03/15 21:04:14
はーやく来い来いC++0x
267:デフォルトの名無しさん
08/03/15 22:12:04
>>259
by
268:デフォルトの名無しさん
08/03/18 01:34:41
先日放送されたクローズアップ現代(NHKの番組)によると、
日本のプログラマ人口は20万人だそうです(かなり不足して
いるらしい)。この20万人の中で、C++の言語機能を一通り
理解して、STLやBoostなどのライブラリをそれなりに使い
こなすことのできるプログラマは何人ぐらいだと推測しますか?
あなたは20万人の中で上位何パーセントの層に属しますか?
269:デフォルトの名無しさん
08/03/18 01:41:05
マ板で聞いてこいやボケが
270:デフォルトの名無しさん
08/03/18 01:49:52
今は高度なソフトウェアの需要が少ないので
(そういう会社の数が激減したと言うか)
国内でスキルを持っていても活躍の場があまりない気がする。
271:デフォルトの名無しさん
08/03/18 01:53:09
>>269
やっぱり?でもマ版に入り浸っている人じゃなくて、
具体的なC++の質問に答えられる人にききたいんです。
272:デフォルトの名無しさん
08/03/18 01:58:25
C++経験者が30%、うち上記条件を満たす人間が30%と感覚で決めつけたとして
20*0.3*0.3=1.8くらいとかだったらいいなぁ・・・
273:デフォルトの名無しさん
08/03/18 02:02:42
boostともかく、STL使わないC++って、どういう使い方してたら発生するんだろう。
C++経験あったらSTLも使ってるんじゃないの? (単純な疑問文です。)
274:デフォルトの名無しさん
08/03/18 02:11:44
MFCオンリーなんて人もいるんじゃね?
275:デフォルトの名無しさん
08/03/18 02:16:14
なるほど。
276:268
08/03/18 02:19:12
>>273
STLを使ってるといってもいろいろなレベルがあります。
vectorぐらいは誰でも使っていると思いますが、
コンテナとアルゴリズムを駆使して、コンパクトで
エレガントなプログラムを書くとなるとどうでしょうか?
>>268では "それなりに使いこなすことのできる" 人の数
を問題にしています。
277:デフォルトの名無しさん
08/03/18 03:55:52
STLのアルゴリズムは必ずしも最適解ではないからなぁ
278:デフォルトの名無しさん
08/03/18 04:54:27
>>268
2000人もいないだろ
279:デフォルトの名無しさん
08/03/18 05:10:49
わがまま言ってんじゃねえ
マ板に行け
280:デフォルトの名無しさん
08/03/18 09:06:30
STLやBoostを使えるのが、プログラマ人口の上位とは限らんすぃ
281:デフォルトの名無しさん
08/03/18 10:10:38
しかし、C言語しか使えない、もしくは、C/C++両方使えないのは、下位ケテーイ。
Boostって組み込みじゃ氏んでもツカエンよな。
282:デフォルトの名無しさん
08/03/18 10:34:45
C や C++ が必要とされる分野って、コンパクトでエレガントなコードよりも
効率が良くて高速なコードが要求されることが多いような気がする。
両立できればいいんだろうけどさ。
283:デフォルトの名無しさん
08/03/18 10:39:42
つまり、C/C++でエレガントなコードが書けたら上位けてーい。
284:デフォルトの名無しさん
08/03/18 10:40:29
C や C++ が必要とされる分野って、
開発環境がそれしかサポートしてないだけ
285:デフォルトの名無しさん
08/03/18 10:46:29
つまり、今の組み込みの分野。
C++はじまた。
M$/V$オワタw
286:デフォルトの名無しさん
08/03/18 19:49:08
>>268
活躍の場って組み込み系か?
DB系だとCなんかよりJava VB C#のほうがラクだし需要あるし
ダカラナニ?って感じなんだが。
仮にその上位ってやつだったとして
給料が高くなる保障があるわけでもないし
くだらない話題だと思わないわけでもないかもしれない可能性がある
287:デフォルトの名無しさん
08/03/18 22:12:54
組み込みでC++使うにはSTLやBoostを使いこなす事とは別ベクトルのノウハウが要るよ
288:デフォルトの名無しさん
08/03/18 23:14:02
言語に特化した知識だけじゃたかが知れてる。
でも・・・C++かわいいよC++
289:デフォルトの名無しさん
08/03/18 23:14:44
ダメな子ほどかわいい(ぼそ
290:デフォルトの名無しさん
08/03/18 23:19:20
STL、Boostがあるからなんとか付き合っていけるんです。。。
291:デフォルトの名無しさん
08/03/18 23:21:46
STL、Boost使ってるけど、「shared_ptrを自分で書け」って言われても多分書けない俺はゴミ?
292:デフォルトの名無しさん
08/03/18 23:28:22
プログラマとライブラリアンは全然別だから気にすんな。
293:オガちゃん ◆tyvkWCNtzY
08/03/18 23:39:50
STL/boostは可汎的なライブラリで、これそのものを設計、開発するならそりゃ相当のスキルを要するかも?この世にまだこれらが無かったって前提で
最善の選択肢とは限らないし
だけど可汎的だから使うのはさほど大変じゃないと思う…が、使いこなすのはやはり難しいかも
JAVAのステータスがどんどん上がってC++のオブジェクト指向開発してるPRJ減ってきたような
C++でも構造体をpackしてmemcpyしてるのざらだもんなあ
今のPRJはユースケース駆動モデル(Rational統一プロセス)でOOPに加えてAOP的発想あるが…
スレ違いスマソ
294:デフォルトの名無しさん
08/03/19 03:27:01
テンプレートが絡むとソースが美しくないんだよなぁ、なんか。
295:デフォルトの名無しさん
08/03/19 04:13:55
おまえさんの美意識は知らんが、
型指定が冗長だからtypedefかヘルパー関数の嵐になるのは仕様。
C++0xのautoで解決されるのも仕様。
既存のライブラリをC++0x用にせっせと書き直す作業が待っているのも仕様。
296:デフォルトの名無しさん
08/03/19 07:23:45
解決はされないんじゃないかなあ。
メンバ変数に書く際には auto じゃどうしようもないだろうし。
297:デフォルトの名無しさん
08/03/19 09:42:06
template typedefが欲しい
298:デフォルトの名無しさん
08/03/19 10:15:40
>>295
既存のライブラリをわざわざC++0xでしか通らないように書き換えたりするの?
299:デフォルトの名無しさん
08/03/19 10:20:21
>>295
コイツは。。
300:デフォルトの名無しさん
08/03/19 15:42:21
この言語って機能が多すぎて大人数でプログラム組むの大変じゃない?
301:デフォルトの名無しさん
08/03/19 15:45:27
なんで?
302:デフォルトの名無しさん
08/03/19 15:50:05
多分MFCの話じゃね?それならそのとおり。
でも純粋C++なら安定部品を作ればよいだけ。
303:デフォルトの名無しさん
08/03/19 16:22:00
一口に「C++使える」と言っても、人によってその差は大きいから、
できる人からできない人まで集まってしまうという点では大変だと思っている。
同じようなレベルの人同士でならそう大変でもないはず。
304:デフォルトの名無しさん
08/03/19 17:28:32
まるで自分はできるとでも言ってるかのよう
305:デフォルトの名無しさん
08/03/19 18:01:01
CとC++の差が分かってない人がほんと増えた気がする
だから困るかっていうと困るほどのものでもないんだが
306:デフォルトの名無しさん
08/03/19 18:02:16
>>305
C++がUNIXモンリーで単なるC言語のプリプロセッサだったころの、
クラスって何、
の時代しってんのかぁ?ゴルァ。
307:デフォルトの名無しさん
08/03/19 18:05:18
俺が憶えた頃は、まだ一部のコンパイラでは
C++から一旦Cのコード吐いてからコンパイルしてたな。
もちろん例外処理なんて粋なもんは無かった。
308:デフォルトの名無しさん
08/03/19 18:06:45
まるで見当違いな>>306の突っ込みはいかがなものかと思う今日この頃
>CとC++の差が分かってない人がほんと多かった気がする
~~~~~~~~
なら分かるんだけどね、ってどうでもいいスレ違い続けてんじゃねえ!ゴルァ。
309:デフォルトの名無しさん
08/03/19 18:09:53
いちいちコメントしないと気がすまない奴らばかりだな
STLの話しろや
310:デフォルトの名無しさん
08/03/19 18:10:51
イテレータンが無いとSTLの話できない椰子らw
311:デフォルトの名無しさん
08/03/19 18:14:28
できるできないとかどんだけ春なんだよ。
できて当たり前。
できないのは単にやってないか馬鹿だから。
312:デフォルトの名無しさん
08/03/19 18:17:11
STL、boostに関しては、それはいえない。
一通りやり終えるまでどんだけ。
313:デフォルトの名無しさん
08/03/19 18:17:16
でもさSTLとかも使ってないと忘れるよな。
おれ深く勉強したけど、もう1年くらいやってないから
忘れてるわC++ アハハハ
314:デフォルトの名無しさん
08/03/19 18:19:51
STLでなくても、1年あれば何だって忘れる。
315:デフォルトの名無しさん
08/03/19 19:00:49
スマートポインタが用意されているのに使わない人がいるとちょっとあれーと思ってしまう。
316:デフォルトの名無しさん
08/03/19 19:12:57
shared_ptrはBoostだから使わなかった、使えなかったという人がいたら、
TR1の普及で使うようになってくれるといいな。
317:デフォルトの名無しさん
08/03/19 19:19:42
Boostがなくてもメイヤーズの本見て作っておけばいくらでも使えたはず。
318:デフォルトの名無しさん
08/03/19 19:54:44
Boost/TR1が多数の現場で使えるようになるまで
何年かかることやら
319:デフォルトの名無しさん
08/03/19 20:46:08
shared_ptr っぽいものは boost とは別のライブラリに用意されてるけど
ほとんどの人が使ってない罠。
まずは啓蒙からだな・・・。
320:デフォルトの名無しさん
08/03/19 20:51:21
shared_ptr使わないなんてあり得ないな、おれは。自分でdeleteなんて嫌だよ。
もうそんな時代ではない。細部を理解する必要はあるけど。それこそメイヤーズ
みたいな貴重な本があるし。
321:デフォルトの名無しさん
08/03/19 20:55:19
Boost だから使えない、というような微妙な状況のときは、
自家製の refcount_ptr とか適当に作っちゃうなぁ。
代入や解放をスレッドセーフにしたいときとかも。
322:デフォルトの名無しさん
08/03/19 20:56:42
でも、scoped_ptr や auto_ptr で済む状況も多いと思う。
shared_ptr まで必要になるのって意外と少ない気がする。
323:デフォルトの名無しさん
08/03/19 21:00:51
Boostだって素人が作ってるわけではないし、むしろエキスパートが作ってる
んだから何が不満なんだよと言いたい。それとも何処の馬の骨とも分からないやつ
が作った自作ライブラリのほうが安全なのかよと。上司に言いたい。
324:デフォルトの名無しさん
08/03/19 21:05:42
こういった場合安全性よりライセンスが問題になることが多いが、
boost のライセンスってゆるゆるだよね?
325:デフォルトの名無しさん
08/03/19 21:13:21
場合によっちゃあソースコードレビューの対象にせざるを得ないから
(& Bootst はレビューしたくないから) 自前で書く、ということもあるな。
326:デフォルトの名無しさん
08/03/19 21:14:49
あれだけレビューされてる boost を
もう一度レビューするのも車輪の最発明と大して変わらない作業のような。
327:デフォルトの名無しさん
08/03/19 21:16:08
ライブラリのプロが書いたソースを一般レベルのプログラマがレビューするのって
滑稽じゃね?と上司に言いたい。
328:デフォルトの名無しさん
08/03/19 21:18:08
STL もレビューしてんの?
あんなの読みたくもないが。
329:デフォルトの名無しさん
08/03/19 21:56:08
勉強になっていいじゃん >327
330:デフォルトの名無しさん
08/03/19 22:12:25
まあ勉強会としてはありかもしれない,、。
331:デフォルトの名無しさん
08/03/19 22:34:26
VS付属とSTLPortの実装を比べた事はあったなー。おもしろかった
332:デフォルトの名無しさん
08/03/20 05:11:22
小ささと速度を求めて、shared_ptr => intrusive_ptr => 俺スマートポインタ、と移行したことならある。
intrusive_ptr::operator=()が、いわゆる「スワップ技法」使ってるんだけど、これがBCB6だと遅くて。
こういう「局地的な場面」でまでboostを絶対視するのはいかんってことだね。
概ね信じろ、しかし盲信はするな、と。まぁ当たり前のことなんだけど。
333:デフォルトの名無しさん
08/03/20 05:25:05
ローカルな話題を堂々と振られるのもあれだな
334:デフォルトの名無しさん
08/03/20 05:30:12
「使う」話は遍くローカルだよ。
335:デフォルトの名無しさん
08/03/20 05:55:08
ローカルの事情で使いものにならないこともあると
言いたいのだろうけどそんなのはローカルの事情でしかないだろう。
一々ローカルにかまってたら標準の意味がないだろうよ。
336:デフォルトの名無しさん
08/03/20 06:14:08
>>332はローカルな事情をタネにして
>概ね信じろ、しかし盲信はするな
っていう一般的な意見を述べてるだけだろ
話題自体はローカルじゃないし、標準がどうあるべきだという話もしてないと思う
337:デフォルトの名無しさん
08/03/20 06:31:42
>>336
その結論に持っていくネタがなんだかなって話だろ?
俺も小ささとか速度で難癖つけるのはどうもずれているような気がする。
誰も速度が速いとかオールラウンドに使えるという話はそもそもしていないんじゃね。
338:デフォルトの名無しさん
08/03/20 06:34:34
>>335
> ローカルの事情で使いものにならないこともあると言いたいのだろうけど
いや、boostの実装には「手を抜いている」部分もあり、必ずしも細部までエキスパートの優れた仕事って
わけではない、という話。
つまり「ローカルの事情の話」ではなく「ローカルの事情を通して知ったboostの実装の話」ね。
だから「boostの話はスレ違いだ」は受け入れるけど、「上司の意向の話」以上にずれた話題と思われるのは心外だなw
そこから来る結論は>>336の通り。初心者がboostへの信頼を信仰にまで高めちゃいそうな流れだったから、
思考停止だけはしちゃいけないよね、というレスが事例付きで一つくらいあったほうがバランス良いと思ったんだ。
339:デフォルトの名無しさん
08/03/20 06:41:18
あ、すまんもう一つレスが入ったか。
>>337
難癖ではないよ。boost大好きだし。
> 誰も速度が速いとかオールラウンドに使えるという話はそもそもしていないんじゃね。
いや、>>332もそういう話はしてない。
「エキスパートが作ってるという話」「ライブラリのプロが書いたソースだという話」の一環として書いた。
エキスパートとかプロっていう表現が踊り出すと(この表現自体は正しい)、ある種の人間に
変な思考を植え付ける結果になることがよくあるんだ。
冷静に判断しなきゃいけないところで「boostのほうが凄いに決まってる!だってエキスパートが作ったんだもん!」
「だってライブラリのプロが書いたんだもん!」みたいなね。
そんな馬鹿は放っておけばいいという意見もあるだろうけど、でも俺は今回、信じすぎは良くないからね、
という一言があったほうが、流れとして適切だと判断したから書いたわけ。
340:デフォルトの名無しさん
08/03/20 07:18:46
車輪を再発明するよりSTLやboostで合うなら使っていこうよ
レビューされているぶん、俺たちが会社で書く似たようなコードより信頼性は高いだろう
これだけの話だろ
車輪が環境に合わない場合は自作するしかないけど(>>333 の場合)
自分で書くよりは信頼性が高いだろうというだけの話が
何故信仰や絶対という話になるのか理解に苦しむな…
341:デフォルトの名無しさん
08/03/20 07:20:39
リンクミス >>332 の場合
342:デフォルトの名無しさん
08/03/20 07:35:59
>>340
そう、それだけの話。
で、>>332も「それだけの話」なんだけど(boostは概ね信頼できるという「事実」に対して、
必ずしも我々を越えちゃいないという「事実」を例示付きで添えただけ)、妙に突っ込む人がいて長くなってる。
343:340
08/03/20 07:41:09
>>342
俺も突っ込んでる一人なんだが…w
344:デフォルトの名無しさん
08/03/20 07:47:11
>>343
見ればわかるけど・・・。
345:デフォルトの名無しさん
08/03/20 07:50:01
この環境ではスピードが遅くて使い物にならん!だから自作した!
boostは盲信するな!絶対視するな!
こんなイミフな展開にツッコミ入れない人間がどこにいるの。ワロス
346:デフォルトの名無しさん
08/03/20 07:52:42
イミフな展開になるように言い換えてるからじゃね?
そもそも>>332一つなら「展開」でも何でもないよ。単発だもの。「展開」は皆で「作った」んだよ。
347:デフォルトの名無しさん
08/03/20 07:54:29
なんかもう、1レスずつ突っ込み方が違っちゃってて、
数撃ちゃ当たる状態だな。そんなに必死に「やり込めたく」なるのかなぁ、俺のレス。
348:デフォルトの名無しさん
08/03/20 08:12:22
初心者です。STLのエラーメッセージが黒魔術で困っています。
皆さんはどのように理解してデバッグなさっていますか?
349:デフォルトの名無しさん
08/03/20 08:30:04
Effective STL に「STLのエラーを読めるようにしよう」みたいな項目がある。
要約すると、 std:basic_string< 〜 > とかを string に置換して読むこと、
こういうエラーが出たときはこういうミスを犯している可能性が高いっていう対応を知ること。
俺はエラーメッセージは読まずにえらーが出てる最初の行だけ見て直すけどw
350:デフォルトの名無しさん
08/03/20 09:34:19
>>348
エラーメッセージは見るな
自分のソースを見ろ
351:デフォルトの名無しさん
08/03/20 09:35:11
C++ Templateにも追い方が少し書いてあったと思う
352:デフォルトの名無しさん
08/03/20 09:36:01
初心者って絶対自分のコード疑わずに
コンパイラのせいにするよなぁ
C++どころかCの頃からそうだったなぁ
353:デフォルトの名無しさん
08/03/20 09:46:10
言語に関らずそうだよ
354:デフォルトの名無しさん
08/03/20 10:49:36
VC++だとテンプレートの中でエラー・警告が出たら、
その呼出元も表示してくれるので、
ひとまず自分のソースコードのどこの行が悪いのかはわかる。
あとはにらめっこの始まりなんだけどね。
355:デフォルトの名無しさん
08/03/20 12:23:57
とりあえずエラー行を見る。
それで大体の場合は分かる。
それで分からない場合、
次はテンプレートの型とエラーの種類を見る。
長ったらしいテンプレート引数は別に見なくていい。
それで分からない場合にはいよいよテンプレート引数を見るけど、
大体はその中で自分で作ったクラスが悪さしていることが多いのでそれをまず見る。
それでもダメな時は全体を見る。
356:デフォルトの名無しさん
08/03/20 13:12:39
const指定が間違ってるとか
名前照合に失敗してるとか
そういうことが多いような
357:デフォルトの名無しさん
08/03/20 13:19:10
自作関数オブジェクトをアルゴリズムに適用するときとかね
358:デフォルトの名無しさん
08/03/20 13:29:42
>>356
constの有無程度なら「constがある/ない」で警告してくれればいいんだけど、型を変換できないと言われてtypedefしてない型を延々出されると何事かと思う。
もう慣れたけど。
359:デフォルトの名無しさん
08/03/20 13:57:09
STLの内部で使ってるの型を吐き出してくれるから、
VS付属→STLPortとか実装を取り替えると同じエラーでもメッセージがぜんぜん違ってくれる素晴らしい罠。
360:デフォルトの名無しさん
08/03/20 14:02:01
さてconceptはまだですか?
361:デフォルトの名無しさん
08/03/20 20:42:46
boostを盲進、過信するのはやや問題があるとは思う
特に納品物というか成果物としては。いくらboostのライセンスが軽いとはいえ。
boostの一部がTRで採用されて0xに反映されたら標準ライブラリとみなせるだろうけど…
いっぽうで、ツール類作るときは積極的に使用する。
tokenizerとかregexとか、bindなんか使うとやみつきになる
その点、STLはまずコンパイル・リンクエラーなってる場合はほぼ間違いなく自分のコードに問題あり
もしくは、VC++とかBorlandC++とかそういうコンパイラ
でも、テンプレートが展開されたエラーは原因を見つけるのに慣れないと苦労するのも確か。
362:デフォルトの名無しさん
08/03/20 20:53:02
>>361 は標準ライブラリを盲信、過信していると思う。
363:デフォルトの名無しさん
08/03/20 20:54:40
と凡人プログラマが申しております。彼は自分のプログラミング能力が
ライブラリ作成者よりも優れていると申しております。
364:デフォルトの名無しさん
08/03/20 20:55:03
そういうのを盲信って言うんだよw
365:デフォルトの名無しさん
08/03/20 21:07:18
見事に釣られてしまったようです。
366:デフォルトの名無しさん
08/03/20 21:11:49
>>362
361だが、過信してはいないつもりだが、エラーの要因はまず自分のソースを疑うね
その点はboostでも同じだよ
まぁ、そう考えればSTLはバグがないとまでは言わなくとも(実際にある)、自分のソースを疑うってだけだ
だから過信、盲進してるかもな
ただ、boostはコンプライアンス上の問題やらでdefect発生時にどうなのよ?ってだけだよ
技術的な観点では、俺にとってboostはSTLのサブセットだよ。なにせ、boostの開発に携わってるのは
C++標準化の連中なんだから
それに、>>363のいうようにあらゆるケースや検証をして世の中に出てきたSTLと、必要なテストしかしてない
自分の作成したコードが正しいなんて言う根拠はどこにもない
で、>>362はSTLよりも優れたテンプレートを作っていると?w
367:デフォルトの名無しさん
08/03/20 21:18:08
boostはhppって拡張子が嫌い。
368:デフォルトの名無しさん
08/03/20 21:20:04
hppはまだいい
ippってなんじゃらほい
369:デフォルトの名無しさん
08/03/20 21:23:05
現行STLやboostのメンバー見れば凄いのが揃ってるのはわかる。
コンパイラ作成者やM$のデヴェもいる。
370:361
08/03/20 21:32:54
>>367
俺、boost信者になってからは寧ろ好きになったw
だけど、自分のコードはやはり .h を拡張子にしたいね。前プロジェクトではboost使いまくりーの、
.hppを拡張子にしまくりーのだったがw
371:デフォルトの名無しさん
08/03/20 21:40:51
>>366
>boostの一部がTRで採用されて0xに反映されたら標準ライブラリとみなせるだろうけど…
標準ライブラリと見なせることとコードの信頼性に何か関連性はあるのかね、と思ったのよ。
372:デフォルトの名無しさん
08/03/20 21:45:03
>>371
で、boost使ってて何かトラブったことあんの?
373:デフォルトの名無しさん
08/03/20 21:51:19
>>371
すくなくともベンダがリリース前にテストしたという信頼性は担保されるだろ
374:デフォルトの名無しさん
08/03/20 21:54:34
.h はCとの互換性を考えてあるヘッダのみに使って欲しいなあ
C++専用のヘッダは hpp とか hh とか hxx とか使って欲しい
# emacsで開くとc-modeになってしまったという経験がある
# もちろんファイルの先頭にモードを書いておけば済む話だけども
375:デフォルトの名無しさん
08/03/20 21:57:05
要件を満たすための全てのテストが通れば、boostを使っていようが自分で作ったライブラリを使っていようがok
自分で書いたコードが正しいと確信するための作業をboostにも適用すればいいと思う
…標準ライブラリもいろいろで、C++の仕様見てないんじゃないかと疑いたくなるようなのもあるよ
376:デフォルトの名無しさん
08/03/20 22:05:07
>>372
逆。
標準ライブラリと見なせなくても boost には標準ライブラリと同等の信頼性はあると思っている。
377:デフォルトの名無しさん
08/03/20 22:14:20
boostっていっても信頼性は一様じゃないと思うが
Boost.PPの滅多に使われないマクロあたりに嫌なバグが潜んでたとしても驚かないな
378:デフォルトの名無しさん
08/03/20 22:27:47
>>374
# vimのcpp用indentスクリプトの貧弱さは泣けてくる
379:デフォルトの名無しさん
08/03/20 23:22:49
まあ、昔からあってさらに頻用されてるやつは十分信頼性あると思うけどね。
380:デフォルトの名無しさん
08/03/20 23:27:46
っつー訳で
auto_ptr
は使うなと
381:デフォルトの名無しさん
08/03/20 23:39:18
>>374
はげど!
C互換もないのに.hって何だよ?と。
しかしライブラリを見てたらだんだん
ヘダファイルに拡張子なくてもよくね?と思えてきた
382:デフォルトの名無しさん
08/03/20 23:40:52
>>381
エディタで開くときに面倒・・・ただそれだけ。
383:デフォルトの名無しさん
08/03/20 23:46:18
ファイルを分類したいときも拡張子が無いと困るな。
384:デフォルトの名無しさん
08/03/20 23:47:13
拡張子に縛られてるOSは大変だな。
385:デフォルトの名無しさん
08/03/20 23:55:42
ファイル実体内にメタデータ仕込むとかも論外だけどな
386:デフォルトの名無しさん
08/03/20 23:58:24
ファイルシステムに組み込むよな、普通。
387:デフォルトの名無しさん
08/03/21 00:03:46
>>385
それってファイル壊してない?そんなOSがあんの?
388:デフォルトの名無しさん
08/03/21 00:03:49
拡張子だと気軽に書き換えられるからちょっと楽かも
389:デフォルトの名無しさん
08/03/21 00:08:28
xxx.tiff
↓
xxx.jpg
「劣化しますがよろしいですか?」
(OK) (キャンセル) (pngにする)
そんなOSがあったら、使いたくはないが、触ってみたい。
390:デフォルトの名無しさん
08/03/21 00:10:13
マックバイナリというものがあってだな
391:デフォルトの名無しさん
08/03/21 00:12:35
boostの主要な部分って、仕様は固定されてるの?
結局、そこが一番問題じゃないかね。
392:デフォルトの名無しさん
08/03/21 02:08:23
そういや、std::auto_ptr使うような場面でboost::shared_ptr使った時、
実行コスト的にはやっぱり不利になるんかな?
大した違いじゃ無いだろうけど、ちょっと気になる。
393:デフォルトの名無しさん
08/03/21 05:31:04
なる
394:デフォルトの名無しさん
08/03/21 07:07:25
shared_ptr の初期化にはメモリ確保が余分に必要。
参照カウンタが0になった時にはメモリの解放が余分に必要。
395:デフォルトの名無しさん
08/03/21 09:32:33
>>387
9までのMac OSってそうじゃないの?
396:デフォルトの名無しさん
08/03/21 10:08:28
>>394
あと削除子保持するコストも必要だと思う。
397:オガちゃん萌え ◆tyvkWCNtzY
08/03/21 19:34:49
Windowsならともかく、UNIX系は拡張子なんて慣例で付けるものでどうでもいい
が、やはりC++とCのヘッダファイルを区別するのに、hとhxxにしときたい
JAVAとかC#プログラマとかはC/C++でc/cpp、hのペアのファイル直すのがめんどいらしい
398:デフォルトの名無しさん
08/03/21 20:20:44
>>395
違うよ。
いわゆるMacBinaryはデータフォークとは明確に分離してる。
まあ、他のプラットフォームにしてみれば異質なものに代わりはないけど。
399:デフォルトの名無しさん
08/03/21 20:48:12
execが最初の2byteでシェルスクリプトを判断するようなものかな?
どうでもいいけど
400:デフォルトの名無しさん
08/03/22 02:44:49
どっちかと言うと、ファイルのプロパティとしてファイル名やパーミションやタイムスタンプがあるように、
ファイルタイプとクリエータがある感じ。
MacBinary形式と言うのは、これらのプロパティを128バイトのヘッダとし、その後にデータフォークと
(必要なら)リソースフォークを連結した特殊なファイル形式のこと。
401:オガちゃん萌え ◆tyvkWCNtzY
08/03/22 10:16:01
>>400
ファイル名、タイムスタンプ、権限や属性はファイルシステムで管理しているがMacは違うの?
ところで、list.sort()やalgorithmのsort条件を関数オブジェクト使って決めると思うが、
関数オブジェクトという言葉が通じない人が多い
operator()のオーバーロードってことではファンクタというほうがわかりやすいのだろうか?
402:デフォルトの名無しさん
08/03/22 14:22:24
関数オブジェクト自体は理解してるの?
ちなみに自分はファンクタという言い方はあとで知った。
403:デフォルトの名無しさん
08/03/22 14:53:28
関数オブジェクトって関数をオブジェクト化したみたいで好きじゃないな。
コード上で関数のように使えるだけで、関数とは全く関係ないのに。
404:デフォルトの名無しさん
08/03/22 15:19:09
作るのが面倒って点に関してはあまり好きじゃないが、
やってることはエレガントだとは思う。
405:デフォルトの名無しさん
08/03/22 17:22:14
クラスと何が違うのかわかんね
406:デフォルトの名無しさん
08/03/22 17:44:24
特別学級みたいなもんです
407:オガちゃん萌え ◆tyvkWCNtzY
08/03/22 20:16:13
>>402
ファンクタを理解しているか?って言われれば、理解しきっていると言えるほど俺は自信ないw
Cの時によく使った関数ポインタのような、イベントハンドリングのロジックを外部化したり、コールバックなんか
に使うもんだという理解が強いかな
あとは、ポリモーフィズムとして同一で処理ロジックだけカスタマイズするときにファンクタとすることが多い
話は変わるが、組込み系ではメモリシステムをラップすることが多いとおもうが、
operator new()、operator delete()、operator new []()、operator delete []()なんかをオーバーロードするときは
EffectiveC++なんかを読み返してしまうよ…
メモリシステムといってそこでリークやオーバーフロー、未初期化アドレスアクセスなんかしてたら偉いことに
なってしまうし
そもそも、自分はC++、STLを理解しきっているとは思ってないよ
先週その典型例があった、C++といいつつCでマクロを書いたのだが、printf()をラップして可変引数をログ出力
するってやつ。stdarg.hの使い方を分かってなかったw
そういう>>402は?
408:デフォルトの名無しさん
08/03/22 20:22:45
stdarg.h 使うってことはマクロじゃないんでない?
まあ、その関数をさらにマクロでラップしてるんだろうけど。
409:402
08/03/22 20:26:05
いや、402は、「あんたが理解してるか?」の意味じゃなくて、
「関数オブジェクトという言葉が通じない人は関数オブジェクトの存在を知らないから通じないんじゃない?」っていう意味です。
関数オブジェクトという用語を知らずに関数オブジェクトを使うかなあって思ったから。
自分も理解しきってないよ。簡単な関数オブジェクト作れるレベル。
410:デフォルトの名無しさん
08/03/22 20:51:00
なんで雑談してんの?
411:デフォルトの名無しさん
08/03/22 23:17:29
相談が無いからだろう
相談できる雰囲気でもないがね
412:デフォルトの名無しさん
08/03/23 00:44:28
何で雑談しているのかを聞く それも雑談なんじゃね?
自分の胸に聞くのがはえーんじゃね?
413:デフォルトの名無しさん
08/03/23 01:03:59
>>407
ひょっとして有名人?
関西でPGでかつどうしてんの?
414:デフォルトの名無しさん
08/03/23 01:10:46
とりあえず2期のオガちゃんは萌えた。
415:オガちゃん萌え ◆tyvkWCNtzY
08/03/23 20:37:34
>>409
ざらにいるんじゃないか、ファンクタを知らないPGは
だけど、今のPRJはユースケース駆動モデルでOOPかつAOP的コンセプトを多分に取り入れてる
から、ファンクタや関数オブジェクトの名前すら知らないようではさすがにPGとして使えない
デザインパターンの幾つかを理解しているくらいは最低求められる
とはいいつつも、知らずにそういうパターンを使っているってことは経験あるとおもうよ
大抵はライブラリとして用意されてるものを別途作って無駄なことやってることになるんだろうけどねw
>>410-412
まぁ固いこと言わないでマターリやろうよ
>>413
いや、有名人でもなんでもないよw
出身地は関西だが、都内で仕事してるしさ
>>414
オガちゃんいいよな!
416:オガちゃん萌え ◆tyvkWCNtzY
08/03/23 20:41:16
>>408
可変引数を使うのにstdarg.hを使ったよ
va_start()やらはマクロを通して最終的にコンパイラ組込み型だからさ
ログ吐き用とはいえ、%SSっていう変なリテラルを敢えて作って、UTF-16の文字列をUTF-8(ASCII)
に変換してログ出しするってのを作ったわけなのだが、案外はまってしまったw
417:デフォルトの名無しさん
08/03/24 12:37:23
緒方賢一に萌えるスレはここですか?
418:デフォルトの名無しさん
08/03/27 00:46:11
そうです。
419:デフォルトの名無しさん
08/04/16 01:48:57
vectorにデータを追加した時にメモリ確保に失敗した場合、検出する方法ってありませんか?
newでいうbad_allocの例外をキャッチするような感じ。
420:デフォルトの名無しさん
08/04/16 02:12:07
bad_alloc捕まえれば?
URLリンク(hpcgi1.nifty.com)
421:デフォルトの名無しさん
08/04/16 02:18:03
>>420
な、なんだこの低レベルなやり取りは…
422:419
08/04/16 02:26:03
>>420
お!
VC2005で確認しました。
STLでもbad_allocスローしていたんですねw
あざ〜す♪
423:デフォルトの名無しさん
08/04/16 02:58:35
アホすぎる
424:デフォルトの名無しさん
08/04/16 03:43:19
VC6 ではデフォルトで new が bad_alloc 投げなくて
アクセスバイオレーションになるのは有名な話だけどね。
425:デフォルトの名無しさん
08/04/16 07:17:17
で?何処にVC6だという前提が示されていたの?
426:デフォルトの名無しさん
08/04/16 08:01:17
なんだこの意味不明の質問
427:デフォルトの名無しさん
08/04/16 20:34:00
で、どこにVC6でないという前提が示されていたの?
とでも言ってほしんだろうか
おまえらもっと仲良くしろよ
タダでさえ過疎ってんのに
428:デフォルトの名無しさん
08/04/16 21:03:38
424 は 豆知識としてとらえるのが普通だと思うんだけどな。
419の環境がどうとかじゃなくて。
429:デフォルトの名無しさん
08/04/16 22:01:51
常識人は一人だけ。残りは全員アホ。
そんな微妙すぎるリンクを貼った>>420がまず意味不明。
>>424の内容はもっともだが、VC6世代なら誰でも知ってる常識レベル。
なぜあえてそこだけピックアップして言及したのか意味不明。
何にカチンと来たのか、その後の煽り合いも意味不明。
つまりお前ら全員意味不明。
430:デフォルトの名無しさん
08/04/16 22:17:11
なぜあえて、というところは>>419>>420>>422の「bad_alloc がスローされるんだ♪」
という流れを見ての、ちょっとした老婆心じゃね?
431:デフォルトの名無しさん
08/04/17 00:17:46
>>429
要するに、君は色んなことの意味がことごとくわからない人、なわけだよね。
可哀相だけど、馬鹿につける薬って無いらしいから・・・合掌。
432:デフォルトの名無しさん
08/04/17 02:22:42
おまえら昔はぬるぽ返してたんだよとか
今でもnothrowとかできるんだよとか
ちゃんと教えてやれよ
433:デフォルトの名無しさん
08/04/17 02:28:35
この程度で煽りに見えるとか
434:デフォルトの名無しさん
08/04/17 07:10:34
VC だとぬるぽは VC6 までだね。
だからこそ STL で >>424 が起こる訳だが。
435:デフォルトの名無しさん
08/04/17 07:23:43
>>433
ま、煽りではあると思うよ、実際。
煽りと感じないことをアピールして煽り耐性自慢してもしょうがない。
436:デフォルトの名無しさん
08/04/17 19:15:49
仲良くしようよ。
437:デフォルトの名無しさん
08/04/17 20:11:21
friend関数を
438:デフォルトの名無しさん
08/04/18 11:08:29
窓から
439:デフォルトの名無しさん
08/04/18 11:12:05
こんにちは
440:デフォルトの名無しさん
08/04/18 12:20:53
やあ、おぜうさん
441:デフォルトの名無しさん
08/04/18 18:48:43
まあ、ごきげんやう
442:デフォルトの名無しさん
08/04/20 12:21:42
よひてんきですね
443:デフォルトの名無しさん
08/04/20 12:47:47
庭にはてふてふも飛んでます
444:デフォルトの名無しさん
08/04/22 13:36:50
std::list::erase の引数の型は std::list::const_iterator の方が適切ですよね?
445:デフォルトの名無しさん
08/04/22 13:42:02
なんで?
446:デフォルトの名無しさん
08/04/22 14:58:19
std::list::erase() に渡した反復子の参照先が将来的に変更されることがないからです。
447:デフォルトの名無しさん
08/04/22 15:09:25
constなポインタでもdeleteできるから、
それもある意味整合性があると言える気がする。
448:デフォルトの名無しさん
08/04/22 20:57:09
同じタイプのmapが2つあったときに、
片方のmapにもう片方のmapの要素を全部移動する方法ってありませんか?
swapみたいにコピーしないで済む方法があればいいんですが。
449:デフォルトの名無しさん
08/04/22 23:28:33
swapじゃダメな理由は?
450:デフォルトの名無しさん
08/04/22 23:29:25
joinしたいからswapじゃダメなんじゃね
451:デフォルトの名無しさん
08/04/22 23:38:01
>>449
450さんの言われたとおりです。
限定的にしか使わないクラスをsecondにしてるので
operator=オーバーライドしてコスト下げるしかないかなぁとは思っています。
Boostとかであればそれでもいいんですが。
452:デフォルトの名無しさん
08/04/22 23:39:45
second をポインタにして、
実体はリストに保持しておくとか。
453:デフォルトの名無しさん
08/04/29 01:25:04
STLportのVC9正式対応版はよくれ
454:デフォルトの名無しさん
08/05/05 17:27:47
typedef std::iterator<std::bidirectional_iterator_tag, char> MyIterator;
MyIterator it;
*it = 'A';
これは、何がいけないんでしょうか?
455:デフォルトの名無しさん
08/05/05 17:38:17
int* p;
*p=0;
これのどこがいけないと思いますか?
456:デフォルトの名無しさん
08/05/05 17:44:16
なぜ質問に質問でこたえるのですか?
457:デフォルトの名無しさん
08/05/05 17:58:26
質問に質問で答えてはいけないのですか?
458:側近中の側近 ◆0351148456
08/05/05 18:03:57
>>454
(っ´▽`)っ
itの記憶領域確保しろよ☆
it = new MyIterator('A');
かな?
459:デフォルトの名無しさん
08/05/05 18:11:05
え?
460:デフォルトの名無しさん
08/05/05 18:13:01
>>455>>458
そういう問題じゃないだろ
そもそもstd::iterator<>はインスタンスを作ることを意図したクラスじゃないし、
operator*も定義されてない
461:デフォルトの名無しさん
08/05/05 18:19:39
>>460
いや、阿呆なのは458だけでしょ。
>455の例えはよくわかる。
462:デフォルトの名無しさん
08/05/05 18:23:11
俺にはさっぱり分からん
463:側近中の側近 ◆0351148456
08/05/05 18:23:46
>>461
(っ´▽`)っ
そうだよ。(っ´▽`)っがヴァカなだけだよ
464:側近中の側近 ◆0351148456
08/05/05 18:26:04
(っ´▽`)っ
だってC++よくわからないんだも〜ん☆
465:デフォルトの名無しさん
08/05/05 18:26:07
m9('A')
466:デフォルトの名無しさん
08/05/05 19:29:39
>>454
じゃあ、どんな動作を期待しているのか述べてみよう。
467:デフォルトの名無しさん
08/05/05 20:51:15
>>461
胴囲
468:デフォルトの名無しさん
08/05/07 21:58:26
>>455の例えは全然わからんな。
何が言いたいの?
469:デフォルトの名無しさん
08/05/07 22:01:40
何も指してないイテレータを参照剥がししてどうすんだ?
わかりやすくポインタで例えてやろうかあぁ?
470:デフォルトの名無しさん
08/05/08 06:00:33
もし>>469なら、やっぱり的外れだろ
std::iterator<>はそもそもイテレータじゃないんだから
471:デフォルトの名無しさん
08/05/08 07:23:47
ぼくにも分かりやすいようにガンダムで例えてください
472:デフォルトの名無しさん
08/05/08 11:49:01
ガンダムの格納庫はあるのに、
肝心のガンダムがない
473:デフォルトの名無しさん
08/05/08 12:48:04
std::string とかでぬるぽ使えないのはなんで?
474:デフォルトの名無しさん
08/05/08 12:49:07
>>473
どういう動作をさせるためにどうやって使いたいのかわからない。
475:デフォルトの名無しさん
08/05/08 14:19:39
>>474
const char * にNULLを渡すか空文字を渡すかで動作が違う関数があると、
それをstd::stringでラップするときに微妙に困るじゃない。
476:デフォルトの名無しさん
08/05/08 14:36:20
boost::optionalの出番か?
477:デフォルトの名無しさん
08/05/08 15:07:11
>>475
class my_string : public std::string {
bool m_is_null;
public:
my_string() : m_is_null(true) {}
operator=(const char* p) { if (p==NULL) set_null() else set_string(p); }
operator=(const std::string& s) { set_string(s); }
void set_null() { m_is_null = true; clear(); }
void set_string(const std::string& s) { m_is_null = false; *this = s; }
bool is_null() { return m_is_null; }
}
478:デフォルトの名無しさん
08/05/08 19:30:54
>>477
実は同じのを作って使ってるんだ。でもありがとう。
479:デフォルトの名無しさん
08/05/08 19:58:46
Concrete Containerをplubic継承www
480:デフォルトの名無しさん
08/05/08 20:02:34
と笑う人もいるので、抽象化して
template <class T> Nullable : public T
{
...
};
などしておいてはどうだろうか
481:デフォルトの名無しさん
08/05/08 20:14:25
仮想デストラクタのないクラスはpublic継承しちゃだめだろ常識的に考えて・・・
482:デフォルトの名無しさん
08/05/08 20:16:28
delete されるような場面でアップキャストしなけりゃ良いんじゃね?
483:デフォルトの名無しさん
08/05/08 20:16:43
すると笑う人は笑わないのか?
484:デフォルトの名無しさん
08/05/08 20:26:28
結局boost::optional自作になるのか
485:デフォルトの名無しさん
08/05/08 20:42:08
なんで継承したがるんだ
486:デフォルトの名無しさん
08/05/08 21:01:00
楽にかつ安全に特徴を追加する方法って無いのかねぇ…
487:デフォルトの名無しさん
08/05/08 21:33:02
普通にオーバーロードを活用すればいいんじゃね? >486
488:デフォルトの名無しさん
08/05/08 22:14:23
std::string * でいいような…それかboost::optional<std::string>
489:デフォルトの名無しさん
08/05/09 01:12:47
const char *でいいだろ・・・
490:デフォルトの名無しさん
08/05/09 02:04:55
話は逸れるけど、逆にnullが存在し得る参照型Stringを持つJava/C#を触ると、
nullの存在がうっとおしいと思うときがあるから不思議。
491:デフォルトの名無しさん
08/05/09 07:19:30
ぬるぽ
492:デフォルトの名無しさん
08/05/09 08:13:15
>>490
そうそう、無効値としてnullか""のどちらにするか結構悩む。
493:デフォルトの名無しさん
08/05/09 11:55:38
std::iterator は仮想デストラクタないけど public 継承していいんですか?
494:デフォルトの名無しさん
08/05/09 13:04:18
EBOがあるからいいんじゃないか?
495:デフォルトの名無しさん
08/05/09 13:06:26
間違えたw
気にしないで・・・。
496:デフォルトの名無しさん
08/05/09 13:17:01
>>493
typedefしかしてないクラスだから、public継承しないと意味無いと思うけど。
497:デフォルトの名無しさん
08/05/09 15:25:34
このほうが安全じゃない?
class my_iterator : private std::iterator<Tag, Type> {
typedef std::iterator<Tag, Type> super_t;
public:
using super_t::iterator_category;
using super_t::value_type;
using super_t::difference_type;
using super_t::pointer;
using super_t::reference;
};
498:デフォルトの名無しさん
08/05/09 18:20:17
std::iterator や std::unary_function のようなクラスは
protected な非仮想デストラクタが定義されていればいいのに。
499:デフォルトの名無しさん
08/05/09 18:23:23
>>498
自分が何言ってるかわかってるのかw
500:デフォルトの名無しさん
08/05/09 18:53:04
それ自身インスタンス化することないし、基本クラスとして使うこともないし
いいじゃないの?
501:デフォルトの名無しさん
08/05/09 19:07:08
データメンバもメンバ関数もないクラスにアップキャストしても
何もいいこと無いからな
502:デフォルトの名無しさん
08/05/09 19:56:40
マーカインタフェースという概念があってだな。
503:デフォルトの名無しさん
08/05/09 20:22:33
>>499
C++ Coding Standardsの50項目目に紹介されている。
504:デフォルトの名無しさん
08/05/09 20:30:15
URLリンク(www.open-std.org)
で提案している人がいますね。
反論もあるようです。
505:デフォルトの名無しさん
08/05/09 21:04:17
反論の根拠ってなんでしょうか。
506:デフォルトの名無しさん
08/05/09 21:04:56
>>504に書いてある
507:505
08/05/09 21:13:02
そこの部分だけ一回で理解できなかったのですが、理解できました。ありがとう。具体的なケースはよく分かってませんが。
508:デフォルトの名無しさん
08/05/10 02:18:22
URLリンク(www.wakhok.ac.jp)
ここを見て、stringのメンバ関数findの実装が知りたいと思い、
stringファイルの中を検索してみたんですが見つかりません(環境はVC2008EE)。
find関数は廃止されちゃったんですか?
509:デフォルトの名無しさん
08/05/10 02:27:12
VC++ならコードを書いて、右クリックの定義へ移動が便利。
510:508
08/05/10 02:36:53
thx
xstringファイルに定義されていました。
インクルードの経路が複雑・・・。
511:デフォルトの名無しさん
08/05/10 11:21:32
>>482
>ほとんどの台は左第一停止で引き込み100%だったっしょ。(チェリーバーは順押しで引き込み100%)
いや、だから「すげー細かい」ってことだったんで・・・
スーパーヘビーメタルについては「リプor緑/リプ/リプ」がJacInなんで引き込み100%かと・・・
URLリンク(www.pachinko-club.com)
ミラクルUFOに関してはわからず・・・
>初BET枚数の異なる2種類ボーナス △ デビルメイクライ3 ロデオ 4種類REGの内、1つが1枚、他は2枚
リオパラダイスがBIG/REGでBET枚数違ったような・・・(リオが3月でDMCが6月)
512:デフォルトの名無しさん
08/05/10 12:34:56
業界初スレか。珍しい誤爆だなあ。
513:デフォルトの名無しさん
08/05/10 15:50:42
ごめんなさいorz
514:デフォルトの名無しさん
08/05/10 19:18:19
やっべ何言ってるかさっぱり分からんw
うちらも外から見たら同じなんだろうけど
515:デフォルトの名無しさん
08/05/10 22:31:28
>>514
> うちらも外から見たら同じなんだろうけど
むかしガイドライン板に「一度も行ったことない板に行ってみるスレ」ってのがあって、
この板を覗いた奴の感想は「わけわからん。半分ぐらい日本語じゃない」だったなw
516:デフォルトの名無しさん
08/05/10 23:07:22
マジでまったくわからんなw
まぁ、俺はこの板の内容も半分以上わからんが
517:デフォルトの名無しさん
08/05/11 02:54:05
そういわれるといかにも初心者丸出しな質問でさえ高度に見えてくるぜ
518:デフォルトの名無しさん
08/05/13 01:01:43
す、すいません・・・
STLをかじり始めの者なのですが、質問があります。
std::ofstreamだのstd::wofstreamだのをいじってみたのですが、
どうしてもユニコードでファイル出力ができません。
std::setlocale("japanese")とやってみると、どうやらshift-jisの
テキストが出力されてしまうみたいなんですが・・・。
STLを利用してユニコードのテキストファイルを出力するには
どうすればいいのでしょうか?よろしくお願いします。
ちなみにVC9を使用しております。
519:デフォルトの名無しさん
08/05/13 01:28:34
>>518
ストリームをテキストモードで開いているとUnicodeからANSIへの変換が暗黙のうちに行われます。
バイナリモードで開くとこの変換は行われません。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4969日前に更新/192 KB
担当:undef