1 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:26:08 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.40【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1184717430/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
515 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 09:43:12 ] ::memcpy(arg, m_array, sizeof(float) * 100));
516 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 09:47:54 ] std::copy(&m_array[0], &m_array[100], &arg[0]);
517 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:12:35 ] >>513 >float hoge = new float[100]; コンパイルできるコードを提示しなさい。 >arg = m_array; それは、仮引き数にメンバ変数の値を代入しているだけなので、仮引き数の寿命とともに無に帰します。
518 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 11:13:18 ] >>515 そんなコードを書く香具師は野垂れ死に値すると思います。
519 名前:513 [2007/08/21(火) 11:55:54 ] 皆さんいろいろありがとうございます。 >>517 >コンパイルできるコードを提示しなさい。 float* hoge = new float[100]; でした。 >それは、仮引き数にメンバ変数の値を代入しているだけなので、仮引き数の寿命とともに無に帰します。 というわけで、分かっておられると思いますが渡してるのはポインタでして 寿命は関係あるんですかね? >>514 これもちょっと理屈が分かりません。 なぜ配列に別名をつけてることになるんですか? 配列の名前って先頭のポインタをさしてるんじゃなかったでしょうか? >>518 一行で済むのでforで要素を一つずつコピーするよりは>>515 >>516 はいいかなと思ったんですが、 どうして>>515 はダメなんですか?
520 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:04:44 ] >>519 >寿命は関係あるんですかね? その仮引き数の寿命は、その関数を抜けるまでです。 ポインタがポイントしている先のことは言及していませんね。 もう少し、ポインタ変数と言うものを理解しておいた方が良さそうです。 >なぜ配列に別名をつけてることになるんですか? ポインタ変数にポインタ変数の値を代入するだけでは、 ポイント先の複写は行なわれません。 もう少し、ポインタ変数(ry >どうして>>515 はダメなんですか? どうしてダメじゃないと思うんですか?
521 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:06:18 ] >>519 > どうして>>515 はダメなんですか? float配列ならば動くけど、一般のオブジェクトの配列なら破滅的。 たとえば、string配列をmemcpyしたらどうなると思う?
522 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:17:40 ] float で大丈夫ならダメとは言えないだろ。もっといい方法があるってだけで。
523 名前:デフォルトの名無しさん [2007/08/21(火) 12:24:46 ] >>520 >ポインタ変数にポインタ変数の値を代入するだけでは、 >ポイント先の複写は行なわれません。 いま気づきました。狂ってました。すいません。 要するに考え方として 「呼ぶ側で作った配列を渡してm_arrayの中身をコピーして貰ってくる」んじゃなくて 「ポインタを渡してm_arrayの先頭のアドレスだけ貰ってくる」っていうような 感じの書き方はできないんですかね? 呼ぶ側で、m_arrayの先頭のアドレスとサイズだけ分かれば 中身にアクセスできそうに思うのですが。 例えば、クラスメンバで持っているprivateな普通のオブジェクトインスタンスのポインタなんかの場合は わざわざ中身をコピーしないでアドレスだけGet〜とかで貰って使ったりするじゃないですか? >どうしてダメじゃないと思うんですか? 試したらとりあえずうまくいったんで・・・ >>521 わかりません。floatでは一応動きましたが、なんでダメなんでしょうか。 サイズ指定した範囲をコピーすればうまく動くと思うのですが。
524 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:29:27 ] >>523 > 「ポインタを渡してm_arrayの先頭のアドレスだけ貰ってくる」っていうような > 感じの書き方はできないんですかね? なんでできないと思うの?
525 名前:デフォルトの名無しさん [2007/08/21(火) 12:31:36 ] >>524 書き方が分からないんで そういう書き方が出来るなら教えてください、 ってことなんですが。
526 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:34:01 ] やっぱりポインタ変数とポイント先の関係がわかっていないような……
527 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:35:28 ] floatやint、char[]ならmemcpyしても問題ないが、下みたいなクラスだと問題が出てくる class hoge { char *str; int length; }; main() { hoge* v1, v2; v1 = new hoge; v1->str = new char[100]; memcpy(v2, v1, sizeof(hoge)); strcpy(v1->str, "v1"); strcpy(v2->str, "v2"); printf("v1.str is %s.\nv2.str is %s", v1->str, v2->str); }
528 名前:デフォルトの名無しさん [2007/08/21(火) 12:41:40 ] >呼ぶ側で、m_arrayの先頭のアドレスとサイズだけ分かれば >中身にアクセスできそうに思うのですが。 思いついて下のようにやったらうまくいったようなのですが、 これってなんか危険だったりしますか? float* hoge = new float[100]; hoge = foo->GetArray(); Cfoo:Cfoo() { float m_array = new float[100]; } float* Cfoo:GetArray(){return m_array;}
529 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:47:45 ] >>528 最初のnew float[100]で確保したメモリはどうやって解放するんだい?
530 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 12:52:23 ] >>528 配列のコピーをしたいんじゃなかったのか?
531 名前:デフォルトの名無しさん [2007/08/21(火) 12:58:48 ] >>527 理解にしばらく時間を要します。 脳のクロックが著しく劣っているのですいません。 >>529 これでもうまくいったっぽいですが、これならOKですか? float* hoge; hoge = foo->GetArray(); Cfoo:Cfoo() { m_array = new float[100]; } float* Cfoo:GetArray(){return m_array;} >>530 すいません、コピーというか、m_arrayの中身を どうにかして呼ぶ側で使えれば何でも良かったのですが。
532 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:00:55 ] floatの計算速度ってdoubleよりも遅いんですか?
533 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:02:09 ] >>528 巧くいってない巧くいってない。 >>531 だから、なんでコードの断片載せるんだって。 で、なんでまたfooはポインタなんだ?
534 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:03:27 ] >>532 足し算などは同じ。超越関数などは速い可能性が高い。 しかし、他の方への変換が入ったりすると遅くなることもある。 結論:一概には言えない。
535 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:06:07 ] もうスマートポインタコンテナとかRange conceptとか使う方がいいよ
536 名前:513 [2007/08/21(火) 13:14:09 ] つまりはどうしたらいいのでしょうか?もうわけ分かりません。 やりたいことはCfooのメンバとしてもってるfloatの配列m_arrayの中身を コピーするなりポインタを貰うなり、どういう方法があるのか分かりませんが 正しい方法で使いたいってことなんですが。 元の中身を書き換える必要はありません。知れればいいです。 で、とりあえず531で動いてますが、これは危険でしょうか。 要素数は別個貰うなりすれば分かるので その範囲内だけアクセスするなら大丈夫そうなんですが、ダメですか。
537 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:16:58 ] >>536 特に問題はないんじゃないの
538 名前:デフォルトの名無しさん [2007/08/21(火) 13:28:14 ] >>537 そうですか。ではひとまずこれでやっときます。 どうもお騒がせしました。
539 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:36:29 ] 書き換えないなら戻り値はfloat *ではなくconst float *にするべきだな。 それ以前に、Cfooを何故ポインタにしているかを知りたいんだが。
540 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 13:52:24 ] floatならSSEで高速化しやすい
541 名前:513 [2007/08/21(火) 13:53:03 ] >>539 >書き換えないなら戻り値はfloat *ではなくconst float *にするべきだな。 なるほど。 >Cfooを何故ポインタにしているかを知りたいんだが。 特に理由はないですが、 newしたCfooのポインタをメンバとして持ってるだけです。 ポインタで持ってるほうがいろいろ別のクラスに連れまわしたりするとき便利かなと。 むしろなぜそこが気になるのか知りたいんですが。
542 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:03:17 ] >>541 >むしろなぜそこが気になるのか知りたいんですが。 半ば個人的な興味だ。無条件にnewしたがるJava出身者が身近にいるもんでね。 # しかも、悪いことにdeleteする癖はついてないと来たもんだw
543 名前:513 [2007/08/21(火) 14:06:22 ] >>542 はい、まさに私のことです。
544 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:10:56 ] W
545 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 14:16:01 ] >>542 BCB使いもnewする癖が‥‥
546 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 15:40:21 ] OOっぽく書こうとするとそうなるんじゃないかな C++的にはスマートポインタを使え、ということになるんだが いずれにせよ常にownershipを意識している必要はあるね
547 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 16:02:26 ] ローカルなオブジェクトまでnewを使い始めたらもう、末期症状だ。 # オブジェクトは全てグローバルに管理されているとしたら、それはそれで難だけど。
548 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 16:03:31 ] >>545 VCL使ってると確かにnew癖つくなw
549 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 18:22:21 ] カウンタ付けて自動でdeleteするclassくらい自作しろ
550 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 21:25:00 ] 何で既にあるもん作りなおさにゃならんのん・・・
551 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 22:27:07 ] boostの名前あげるとboost厨ウゼェとか言われるから
552 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 00:16:08 ] std::tr1::shared_ptrならいいのか?
553 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 04:50:10 ] 俺はboost::intrusive_ptrが好きだが、めんどい人にはめんどいだろうな。
554 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 10:37:52 ] もうIUnknown/comdef.hでいいよw
555 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:21:10 ] int main (int argc, const char * argv[]) { char string[] ="Hello,World"; char copystring[13]; stringcopy (string,copystring); printf("%s¥n",copystring); return 0; } void stringcopy (char *buff,char *copy){ int i = 0; while(buff[i]){ copy[i] = buff[i]; i++; } copy[i] = '¥0'; } でwhile(buff[i]){…}を for(i=0;buff[i] == 0;i++) copy[i] = buff[i]; とすると動かないんですけれど、何故ですか?
556 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:25:25 ] >>555 条件逆にして動くとでも思ってんの?
557 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:29:42 ] for(i=0;buff[i] == 0;i++){ printf("loop %d\n",i); copy[i] = buff[i]; } ってやってみたら、なにか気づくかも
558 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 12:36:13 ] わかった! for(i=0;buff[i] != 0;i++) ってすると動くぞ!
559 名前:デフォルトの名無しさん [2007/08/22(水) 12:49:13 ] Containerというクラス名をAAというクラス名にしたら、 Container.h:9: an anonymous union cannot have function members Container.h:26: abstract declarator `<無名 class>' used as declaration Container.h:26: anonumous 名前空間の集合体は static でなければなりません
560 名前:デフォルトの名無しさん [2007/08/22(水) 12:50:45 ] >>559 すいません、間違えて「書き込む」ボタン押してしまいました。 Containerというクラス名をAAというクラス名にしたら、 AA.h:9: an anonymous union cannot have function members AA.h:26: abstract declarator `<無名 class>' used as declaration AA.h:26: anonumous 名前空間の集合体は static でなければなりません というエラーが出てきたのですが、このエラーの意味が理解できません。 教えてください。
561 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 13:12:06 ] エスパー募集するんでもなければコード貼れよ。
562 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 13:16:23 ] >>560 最初のエラーだけとってみれば 無名共用体には関数メンバを持つことができない というエラー。 だから名前だけじゃなくて何か意味または構造が変わるような修正をしてると 思うけど、情報が不足してるのでこれ以上のことは分からない。
563 名前:デフォルトの名無しさん [2007/08/22(水) 13:42:53 ] >>559 です。 自己解決しました。 ContainerからAAに名前を変えたときに、 #ifndef CONTAINER #define CONTAINER #include "Container.h" #endif も #ifndef AA #define AA #include "AA.h" #endif としていたためにエラーが出ていました。 情報の足りない質問で申し訳ありませんでした。m(_ _)m
564 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 13:51:53 ] >>563 まあ、解決したのはよかったけど、 そもそものソースの構造がおかしいんじゃないのか? 普通は Container.h の中で全体を Container.h ----------------- #ifndef CONTAINER #define CONTAINER 〜 #endif ----------------- としてくくるんであって、includeする側では、二重取り込み防止マクロなんて書かないだろ。
565 名前:でいびす [2007/08/22(水) 16:08:55 ] VC++5.0でファイルリードをやってます。 その時、読込んだ値を文字として認識できるか 調べたいのですが、やり方を教えてもらえませんか? ループしながら、1文字づつ調べたいです。 ちなみに、文字列には半角の日本語と全角の日本語が混在しています。 お願いします。
566 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:23:15 ] 文字として認識ってのがあいまいだけど _ismbbprint あたり使えるか調べて見れ
567 名前:でいびす [2007/08/22(水) 16:51:43 ] >>566 _ismbbprintは使えませんでした。 ビルドが通らなかったです。
568 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:55:13 ] ttp://msdn2.microsoft.com/ja-jp/library/6d27cy2z(VS.80).aspx
569 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 16:59:27 ] なんだってVC++5.0なんてもんを使ってるんだ
570 名前:でいびす [2007/08/22(水) 17:04:29 ] >>569 古いプログラムをカスタマイズする事になったので使ってます。
571 名前:でいびす mailto:sage [2007/08/22(水) 17:11:52 ] >>570 古いプログラムをカスタマイズする事になっても使う必要ありません。
572 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 17:23:18 ] いやー、そうとも限らんぞー
573 名前:でいびす mailto:sage [2007/08/22(水) 17:24:06 ] >>570 いやー、そうとも限らんぞー
574 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 17:25:49 ] VC++5.0ってSTLがはじめてバンドルされた版だよな 無理やり使ったが、今にして思えばひでえ出来だった
575 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 19:20:05 ] new が失敗した時に NULL を返すことを前提にプログラムしてたりするんだろうなあ。
576 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 19:22:18 ] new が失敗した時に NULL を返すことを前提にプログラムしてたりしてます。
577 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 19:42:58 ] new(nothrow)使えば問題なし
578 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 19:45:10 ] newハンドラ使えば問題なし
579 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 20:49:37 ] set_new_handler じゃなくて _set_new_handler で、 new ヘッダじゃなくて eh.h で宣言されてたんだっけ。 bad_alloc は VC5 で宣言されてたっけ?
580 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:01:23 ] >>565 VCだと昔から日本語対応の関数はあって、どこかのバージョンで _ismbXXXX のようなマルチバイト系関数であることを明示するような 関数名になったはず。 それがVC++5.0かどうか知らないが、でもだから対応する関数はあるはず。 で、ぐぐると以下のサイトに適度に古そうな関数名がならんでいるので 試してはどうだろうか。 ttp://www.geocities.co.jp/SiliconValley-Bay/7437/c/is.htm
581 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:08:46 ] UTF-8だったりEUC-JPだったりISO-2022-JPだったりする可能性は? というのは余計なお世話か。
582 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:12:02 ] 文字コードについては>>565 が勝手に判断するでしょ。 だいたいVC++5.0の時代のアプリにShift_JIS以外使ってるとも思えないけど。
583 名前:でいびす mailto:sage [2007/08/22(水) 21:14:17 ] VC9使うことにしますた
584 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:09:24 ] VC++はソースのエンコードすら指定できない糞コンパイラ
585 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:13:51 ] >>584 はVC++はソースのエンコードすら指定できないコンパイラと思っている糞
586 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:20:15 ] できるの? clにそれらしいオプションが見当たらないからできんのかと思ってた
587 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:24:34 ] >>585 どうやって指定するの?
588 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:31:21 ] >>585 おれもきになる
589 名前:デフォルトの名無しさん [2007/08/22(水) 22:40:08 ] std::vector<foo> hoge という変数があるとして、 これを関数の引数に渡すときはhogeのポインタを渡した方が hoge自体を値渡しするより動作は速いですか?
590 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:41:32 ] その通りだが、せっかくC++なのだからリファレンス渡しするか iteratorを渡せ
591 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:43:22 ] 何すかそれ
592 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:45:33 ] void hogehoge(std::vector<foo>& rhoge);
593 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:48:03 ] >>591 void swap_ptr(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } void swap_ref(int &a, int &b) { int tmp = a; a = b; b = tmp; } main() { int m = 1, n = 2; swap_ptr(&m, &n); swap_ref(m, n); } swap_ref()がリファレンス渡し。 この場合は入出力引数だが、入力だけでいいんならconstつけろ。
594 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:50:19 ] >>590 サンクスコ
595 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:55:22 ] >>593 サンクスコ
596 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 23:12:21 ] ドトネトのMicrosoft.VisualC.CppCodeProviderってもしかしてclのかわりに C++コンパイルできんのか マネージドじゃないと無理かな
597 名前:デフォルトの名無しさん [2007/08/22(水) 23:37:33 ] vector<CHoge>::iterator itr; このitrが指してる要素の中身のアドレスを取りたいときは どうやって書けばいいんですか? CHoge* p_hoge; p_hoge = &itr; とか書いたら怒られました。
598 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 23:40:54 ] p_hoge = &*itr;
599 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 23:42:12 ] CHoge* p_hoge = &*p_hoge; vectorなら鼻からbegin()/end()を使わず、 &v[0]と&v[0] + v.size()でポインタを得て、 それをイテレータとしても使うという手もある。
600 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 23:42:39 ] >>598 出来ました。サンクスコ
601 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:12:40 ] 鼻から悪魔に見えた
602 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:13:32 ] >>584 エンコードの指定は出来ないが、 BOMが付いてればUnicode LE/BEやUTF-8はそれで判定する。 BOMがなければANSI文字コードとみなしている。 javacやunix系のコンパイラはUTF-8にBOMが付いてると処理してくれないものが多く、 双方で利用しようとすると結構めんどい。
603 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:13:53 ] 悪魔から鼻に見えた
604 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:49:46 ] >>577 そんなことしてもコンストラクタから飛んでくる例外は止まらないぜ。
605 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:50:20 ] なんかかっこいい
606 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 11:14:46 ] >>602 それなりに移植性考えたらC++のソースにBOMつけるとかありえんわな で、当然boostのソースにはそんなもんついてないし、一部のヘッダにLatin-1な 人名が入ってるから、VC++8.0でコンパイルすると色々苦情を言ってくんのな
607 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 22:47:56 ] C++でHTMLのタグのようなものを使用していたり、『::』のようなものなどを見かけます。 Cには無く、C++では使用出来るようなことを幅広く説明している書籍でお勧めのものはありますでしょうか。 発売年や価格、本自体の厚さなど数多くありすぎて、どういうものを購入すればいいのか分かりません。 近くに本屋さんはあるのですがプログラム関係は少ないですのでネット通販で買おうかと考えております。 それ故、内容が確認できず判断が・・orz
608 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 22:50:21 ] HTMLのタグ・・・確かにそう見えんことはないw
609 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 22:58:28 ] なんだそりゃ、templateのことか? あまりに斬新過ぎる見解でワロタ それはそうと、wxWidgetsのWindowProcって、ウィンドウクラスのインスタンス 見つけるのにわざわざグローバルなハッシュテーブル引いてんだな、なんだこりゃ せめてWin32ならGetWindowLongPtr()使ってくれよ なんかそうできない技術的理由があんのか ATLみたいなサンクに書き換えたら、そんだけで激高速化すんじゃね?
610 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:15:45 ] >>607 結局この本は必要…通読する対象ではない気がする、字引的にほぼ全部載ってる www.amazon.co.jp/dp/475611895X
611 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:31:15 ] そんなに高速化するわけない。 いったい一秒に何回メッセージが来て、 グローバルハッシュを引くのに何ナノ秒 余分にかかるというんだ?
612 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:37:41 ] 一秒に何回メッセージが来て、 グローバルハッシュを引くのに何ナノ秒 余分にかかる
613 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:38:15 ] 俺も初めて見たときはタグかと思った。 includeファイルに.hが付いていないことや、標準入出力に<<、>>を使うこと、 「::」の存在など何もかもが新鮮だったあの頃・・・ いまだに初心者の域を抜けられぬ現状orz
614 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:40:43 ] ::は斬新だった。こうゆう記号ってなんか意味を持って決められてるのかな?
615 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:43:25 ] 意味的に : を使いたいけど、ラベルと被るから :: にしたんじゃね?