1 名前:デフォルトの名無しさん [04/09/14 07:16:41] ここでは他のC++スレよりもより一層と高いレベルでの情報交換・体験談などを行うスレです。 我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。
445 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 01:58:38 ] いいか、おまいら。 いくらC++を極めても嫁は見つからないんだ。 ただ頭が禿げるだけだ。それを忘れるな。
446 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 02:01:06 ] そういやSE or PGでハゲってみたことないんだが。 実際少ないんかねえ。
447 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 02:13:33 ] スキルの毛の数は反比例する傾向にある。
448 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 03:21:43 ] >>441 どんな流れ? 都合が悪いからありもしない流れをでっちあげたってのは無しね。
449 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 03:31:33 ] 髪の毛の流れを読みきった奴が真の勝利者だと思う
450 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 03:49:03 ] 量が少ないとバーコードになるから 簡単に流れが読める
451 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 07:27:51 ] >>423 調べてみました。こんなの初めて知りました。おいらは上級者と思っていたのが恥ずかしい...
452 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 07:32:57 ] >>450 君はこちら側の人間ではないようだ。
453 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 10:00:50 ] >>452 よう、ハゲチャビン。
454 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 15:21:32 ] 選ばれた上級者だけがハゲるからな gaped bufferはemacsで使ってたやつだ C++じゃなくても普通に使える
455 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 18:58:25 ] NUEのエディタは(Gapped) Double Linked Line Bufferだった。
456 名前:デフォルトの名無しさん [2005/09/03(土) 18:59:31 ] 最近、いい感じに禿げてきた
457 名前:442 mailto:sage [2005/09/03(土) 19:28:56 ] >>444 元ネタは Let's Boost の人のブログ。 再帰関数をメモ化したりする汎用的な仕組み、のような感じか?
458 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 20:21:51 ] >>457 さんくす。Boostでしたか。
459 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 20:33:47 ] フィボナッチ数列みたいに再帰で何度も使う数値をメモしておくってことかな。 一般化したという点で面白いね。
460 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 00:12:00 ] Boost使うヤツは、ヘタレ。 上級者なら、あまりにも高度すぎて自分にしか使用できない 自作ライブラリを使うのが常識だろ?
461 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 00:42:34 ] >>419-423 ありがと。 聞いたこともない用語が出てきたので満足です。 C++を使いこなすことを目標にします
462 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 00:46:55 ] >>461 おいらを目標に頑張れや。
463 名前:デフォルトの名無しさん [2005/09/04(日) 22:48:26 ] こんばんわ、質問があります。 環境C++6.0 windowsxp 今、ハードディスクやCDの容量を調べるプログラムを組んでいます。 GetDiskFreeSpaceExをつかって、ハードディスクの使用量と空き容量は入手できたのですが、 焼かれたCDの空き容量が0になってしまうのです。マイコンピュータのCDドライブのところから、 プロパティを開くと空き容量が表示されるのですが、プログラムでそれを入手することが出来ないのです。 基本的な質問ですが、知恵をお貸し願えませんでしょうか? よろしくお願いします。
464 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 22:53:47 ] >>463 なんでプログラムできない奴って日本語できないんだろ? つうかスレ違いだろうが
465 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 23:44:15 ] >>410 すげえ。ぬるぽがついにC++にも。
466 名前:デフォルトの名無しさん mailto:sage [2005/09/05(月) 00:20:48 ] >>465 ガッ!
467 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 00:56:10 ] ギッ!
468 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:29:54 ] ヌッ!
469 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 04:48:36 ] ぬ ぽ る
470 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 18:17:00 ] >>469 ガッ
471 名前:デフォルトの名無しさん mailto:sage [2005/09/07(水) 22:41:12 ] >>469 は「ぬ ぽ る」な訳だが
472 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 21:59:53 ] つ縦読み
473 名前:デフォルトの名無しさん [2005/10/24(月) 10:40:55 ] 小数点2位以下を四捨五入したいのですが、もっともシンプルでかつ高速なコードを教えてください。
474 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 11:22:57 ] >>473 何もしなくても四捨五入して表示されるが printf("%.2f", 1.235);
475 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 11:24:32 ] あ、C++スレなのに失礼
476 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 12:33:02 ] double round45(double val, int digit) { char buf[20]; sprintf(buf, "%.*f", digit, val); return atof(buf); }
477 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 17:57:54 ] このスレまだあったんだ
478 名前:デフォルトの名無しさん mailto:age [2005/11/04(金) 15:34:31 ] 【C++】template 統合スレ -- Part6 pc8.2ch.net/test/read.cgi/tech/1101384692/1001 の後継スレとして使わせて貰うことにしました。
479 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 18:59:53 ] >>442-443 これってチョットいじっただけじゃコンパイルとおらない? typeのミスマッチっていわれるんだけど。
480 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 19:34:59 ] >>479 とりあえず call_me を this->call_me にすれば?
481 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 20:05:54 ] >>480 だめみたい。 thisをつけると、const class fib<normal> has no member named call_meっていわれちゃう。 templateのしたクラスのcall_meを呼んでくれないみたい
482 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 21:11:50 ] >>481 class fib : Fix<fib> => class fib : Fix< fib<Fix> > これで、 ttp://www.comeaucomputing.com/tryitout/ のコンパイラでは通った。
483 名前:デフォルトの名無しさん mailto:sage [2005/11/05(土) 07:47:56 ] >>482 gccでは通らないぽい。どこがおかしいのやら
484 名前:デフォルトの名無しさん mailto:sage [2005/11/05(土) 23:54:35 ] template <template <class> class Fix> class fib : protected Fix< fib<Fix> > だな。public継承でもいいけど。 要はダウンキャストもprivate継承ではできない
485 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 07:39:13 ] typedef Fix<fib<Fix> > ct; … …ct:call_me(…
486 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 09:47:16 ] >>484 >>485 サンクス。できました
487 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 10:38:13 ] COMについての質問はここでいいですか?
488 名前:487 mailto:sage [2005/11/06(日) 18:13:45 ] 自己解決しました
489 名前:デフォルトの名無しさん [2005/11/07(月) 11:50:43 ] ポインタの静的型と、仮想関数の振る舞いについて教えてください。 struct A { virtual void f(); }; struct B { virtual void f(); }; struct C: public A, public B {}; C* pc = new C; pc->f(); // (1) A::f() と B::f() のどちらか分からないのでコンパイルエラー A* pa = pc; pa->f(); // (2) A::f() がコールされる B* pb = pc; pb->f(); // (3) B::f() がコールされる struct D: public A, public B { virtual void f(); }; D* pd = new D; pd->f(); // (4) D::f() がコールされる pa = pd; pa->f(); // (5) D::f() がコールされる pb = pd; pb->f(); // (6) D::f() がコールされる struct C の仮想関数テーブルの f() のエントリはどうなっているのでしょう? 派生クラスが仮想関数をオーバライドしない場合、このエントリは基底クラスの 関数ポインタがそのままコピーされると思います。しかし、A::f と B::f のど ちらを採用すべきかコンパイル時に決定できないはずです。 ところが上記(2)のように、動的型が struct C であっても、静的型を struct A とするとコンパイルが通り A::f() がコールされます。動的型の struct C の仮 想関数テーブルの f() のエントリは決定できていないはずなのに、何故 (2)(3) のような呼び分けができるのでしょう? 実際 struct D のように f() をオーバライドすると、静的型に関係なく動的型 の仮想関数がコールされるので、f() のエントリは1つだと思うのですが。 どういうカラクリになっているのでしょう?
490 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 12:12:19 ] >>489 「fのエントリは二つあって、Dでは両方が同じ関数を指している。」という実装しか思いつかないな。 調べてみる。
491 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 13:12:52 ] #include <iostream> #include <cassert> struct A { virtual void f(){ std::cout << "A::f\n";} }; struct B { virtual void f(){ std::cout << "B::f\n";} }; struct C : A, B {}; struct D : A, B { void f(){ std::cout << "D::f\n";} }; int main(void) { C c; D d; A *pca = &c; B *pcb = &c; A *pda = &d; B *pdb = &d; typedef void (*pfun_t)(); pfun_t pcfa = **(pfun_t **)pca; pfun_t pcfb = **(pfun_t **)pcb; pfun_t pdfa = **(pfun_t **)pda; pfun_t pdfb = **(pfun_t **)pdb; pcfa(); pcfb(); pdfa(); pdfb(); assert(pdfa != pdfb); } 結果(g++-mingw): A::f B::f D::f D::f よって、C/D共にfには二つのエントリがあって、 Dの場合は、二つの異なるD::fのラッパが入っていると判る。
492 名前:デフォルトの名無しさん [2005/11/09(水) 00:29:56 ] Pentium4にやさしいプログラミング手法を教えてください
493 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 03:52:17 ] >>492 C++じゃなくてアセンブラになっちゃうけど消費電力を抑える為に halt や nop を多用するのがいいと思うよ。
494 名前:デフォルトの名無しさん [2005/11/09(水) 04:40:12 ] __asmでnopを入れればいいのですか?
495 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 05:17:38 ] >>494 アホを真に受けるなよw ったく知ったかぶり君は迷惑だよね。
496 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 06:54:19 ] >>495 もし>>493 を知ったかぶりと思っているなら お前の日本語読解力の方がずっとアホだと思うよ。
497 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 08:19:55 ] >>492 ifは極力使わない。 forをつかえ。
498 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 09:21:08 ] for(int i = 0; condition && i < 1; ++i){ ..... }
499 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 04:55:32 ] BOOLよりboolを使ったほうが処理速度が速くなるっていうのは本当ですか?
500 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 05:05:31 ] いいえ、それだけの情報ではなんともいえません。
501 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 05:13:00 ] BOOL(4バイト)とbool(1バイト)のことです
502 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 06:30:30 ] うがー、それだけの情報ではなんともいえません。
503 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 06:55:30 ] 環境によって違うということですか? vc7.1でコンパイルしたんですが win2000です
504 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 07:51:15 ] >>499 >>503 BOOLかboolかで速さが違うかどうかはわからないが、 BOOLはintのtypedefで、boolはC++組み込み型だからbool(true/false)を使う方がよい。
505 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 07:58:03 ] なるほど、そうなのですか ありがとうございました
506 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 08:25:29 ] BOOL は真偽値じゃない とりあえずMSDN行って GetMessage()の戻り値見てくれば解る あんな代物とbool型を同一視したら相当痛いミスを連発することになる。 MSのAPIの引数と戻り値以外には使わないほうが良い。 さらにsizeof(bool)は1と決まっているわけじゃない。 コンパイラによってはsizeof(bool)==4の場合もある。
507 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 08:51:22 ] ただ、現実問題として、boolは0/1しか取らないから 整数型やポインタ型の値をboolに代入しようとすると、若干の演算が必要になる。 例えば、戻り値が0か0以外かが判定できれば良いだけの場合でも int型の関数だと return n; で足りるところを bool型の関数にすると return n != 0; に相当するコードが必要になる。 そのため、VC++では最適化の警告が出せるようになっている。
508 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 09:55:29 ] >>501 普通、bool はintと同じサイズ( =BOOLと同じサイズ )になるぞ。
509 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:05:22 ] 「普通」の意味がわからんが、BCB6ではintが4でboolが1だな。
510 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:18:26 ] >>509 アレ? borland でもデフォルトでは bool は int と同じサイズだったと思うが・・・ bool を1バイトにするっていうコンパイルオプションが指定されてない?
511 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:28:00 ] boolを使うと、ビットセット系のニモニックが生成されて分岐が省略できる可能性もある。 >507が指摘したケースだと、どうせ呼び出し側でも判断が入るから二重ロジックに成るかも知れんが、 inline関数なら逆に呼び出し側を巻き込んで最適化されるから同じことだね。
512 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:49:04 ] っていうかboolの実装って普通0か1のどちらかっていう判断してる? 俺は0(false)か、0以外の全て(true)のどちらかっていう判断だと思った。 void Hoge(bool hoge) { if (hoge == true) {} } みたいな時、hoge != false(0) としてのコードを吐くのが普通じゃないの? だからこそ我々はC時代のように "BOOLVAR == TRUEと書いてはいけない。BOOLVAR != FALSEと書け" みたいなルールに縛られず boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
513 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 14:20:37 ] >>507 > ただ、現実問題として、boolは0/1しか取らないから trueかfalseです。!に対してそれぞれが逆元。 integral promotionがあるとそれぞれ1と0になる。 ちなみにここは上級者スレです。
514 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 16:08:18 ] >>508 実装依存ということは承知してるが、 GCC4 も VC7.1 も sizeof(bool)==1 なわけだが。 こんなのも。 ttp://gcc.gnu.org/ml/gcc-bugs/2001-07/msg00186.html それと、bool より BOOL を(パフォーマンスの理由で) 推奨してる環境もあるにはある。個人的には嫌だけど。
515 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 17:33:35 ] >>512 >boolvar == true っていうコードも合法になるもんだと思ってたんだけど。 合法ですが、間抜けです。
516 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 19:57:32 ] >>514 Microsoft Specific In Visual C++4.2, the Standard C++ header files contained a typedef that equated bool with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1. This can cause memory corruption problems if you have defined structure members of type bool in Visual C++ 4.2 and are mixing object files (OBJ) and/or DLLs built with the 4.2 and 5.0 or later compilers. ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclang/html/_langref_bool.asp
517 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 00:51:31 ] >>514 最近は sizeof(bool)==1 が主流なのか。知らなかったお。(^ω^) >それと、bool より BOOL を(パフォーマンスの理由で) >推奨してる環境もあるにはある。個人的には嫌だけど。 それもちょっと微妙だね。sizeof(bool)==1 な処理系ならCPUが苦手な バイトアクセスでもメモリアクセス量が減る bool のほうが多分トータルの パフォーマンスでは上だろうし。
518 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 04:24:45 ] >>517 まあ、CPUが苦手どころか 4 バイト未満の整数型をダイレクトに 扱う命令を持ってないからで。しかも無駄なメモリアクセスは極力 省いてキャッシュレイテンシまで時に考えなきゃならんような環境の ことなんで、無視していいかと。 つうか、素直に sizeof(bool)==4 にしろよ、ってスマン愚痴だ。
519 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 07:22:23 ] vector<bool>なんてのを想定したんじゃない? > sizeof → 1 bitsetってのもまあ微妙なアレだし
520 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 08:02:00 ] メモリが遅いって話ならそれこそ最大限コンパクトにして キャッシュに乗ってる可能性を高くしたほうがいいじゃん
521 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 08:19:22 ] vector<bool> は特殊化されているので関係ない
522 名前:デフォルトの名無しさん [2006/01/22(日) 14:12:46 ] o(%)。 // ○(%)oジュワッ
523 名前:デフォルトの名無しさん [2006/02/08(水) 11:15:21 ] 上級者の会話か?
524 名前:仕様書無しさん mailto:sage [2006/02/08(水) 11:18:47 ] >>523 (脳内)上級者の集うスレでは?
525 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:49:16 ] >>523 上級者が集まったからと言って上級な会話をするとは限りませんし、 上級者にしかその真意がわからない上級な会話なのかもしれません。
526 名前:デフォルトの名無しさん [2006/04/28(金) 09:41:06 ] 上級者はいなくなったようですね
527 名前:デフォルトの名無しさん [2006/04/28(金) 11:12:31 ] 上級者というからにはもっとこうOS技術とか、デッドロックの事例とその解決とかについて 議論するのではないのか?
528 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 14:47:19 ] >>527 デッドロック回避にはオーストリッチアルゴリズム。マジお勧め。
529 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 15:19:59 ] レース状態やスタベーションについての議論もしよう。
530 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 16:08:20 ] >>528 なにもしないってかw
531 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:14:50 ] レース下着でマスターベーションについて
532 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 04:44:48 ] OS 技術が上級? 酔ってるから超ウケた。 上級な OS 技術と、当たり前すぎてあほらしい OS 技術があると思うのだが。
533 名前:デフォルトの名無しさん [2006/04/29(土) 06:06:22 ] 酔ってるな
534 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 15:12:17 ] >>527 それはあえて言うなら「プログラミング上級者」とかの類であって「C++上級者」とはズレがあるのでは?
535 名前:デフォルトの名無しさん [2006/04/30(日) 02:32:53 ] ではC++上級者は何ができるのですか?
536 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 02:51:36 ] Cでも書けるコード/アルゴリズムを 「C++らしく」書くことが出来ます。たぶん。 俺は上級者じゃないので無理です。
537 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 06:21:32 ] 上級者 初級者でもわかるコードを書く 初級者 上級者でもわからないコードを書く
538 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 09:48:40 ] ここは「上級者とは何か」を議論するスレですか?
539 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 10:28:11 ] 自らの上級しゃっぷりをアピールするスレです。
540 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 11:13:52 ] 初心者が微妙にスレ自体をひがんでるな そんな暇があったら勉強しなよ
541 名前:デフォルトの名無しさん [2006/04/30(日) 11:47:14 ] 夢の相互リンク プログラム技術上級スレ pc8.2ch.net/test/read.cgi/tech/1141409198/l50
542 名前:デフォルトの名無しさん [2006/04/30(日) 19:51:31 ] 自称上級者の集まるスレってここでしょうか?
543 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:34:38 ] そうですね、例えばあなたとか…
544 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:35:48 ] 俺、俺だよ俺!
545 名前:デフォルトの名無しさん [2006/05/06(土) 20:23:30 ] pngのCRCの計算をするコードを教えてください。