- 1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
- 620 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 17:49:29 ]
- すいません自己解決しました
- 621 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 18:52:55 ]
- 個数が分かってるならリザーブしとけば十分速いんでないの?
- 622 名前:610 mailto:sage [2009/08/27(木) 22:27:21 ]
- Vectorで試してみました。
アクセスするだけならば、かなり早かったのですが 削除のために、iteratorをインクリメントしたりすると負荷が大きいみたいです・・・ iterator絡みの処理は負荷が高いんですね・・・初めて知りました。 >>621 リザーブすれば、速かったです。 ただ、削除・追加を行うには負荷が大きいようで この事を考えると静的配列の方がいいのかなと・・・
- 623 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 22:37:42 ]
- >>610
もうなでもいいから静的配列でやれ
- 624 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:13:23 ]
- VC++ならvectorのiteratorはポインタ実装じゃなかったっけ
debugでやってないか?
- 625 名前:610 mailto:sage [2009/08/27(木) 23:24:20 ]
- >>624
>VC++ならvectorのiteratorはポインタ実装じゃなかったっけ VC++ですが、勉強不足で理解できませんorz 削除は、iteratorが指しているものしかできないようなのでインクリメントしてました。 debugでやってます。Releaseとの違いがよくわからず、ずっとdebugでやってきているのですが 処理速度などの違いがでるものなのですか?
- 626 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:30:20 ]
- debugモードの時のSTLはエラーチェックがかかりまくるので相当遅い
releaseにするとコンパイル結果がiterator使ったときとポインタ使ったときで同じになる まあ、なんだ、やってみろ そしてEffectiveSTLでも読んでろ
- 627 名前:610 mailto:sage [2009/08/27(木) 23:38:06 ]
- >>626
やってきました。吊ってきますorz でも、こんな恥ずかしい事を早めに教えてもらって助かりました。リアルじゃなくてよかった・・・ EffectiveSTL買って読んでみます。
- 628 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 02:26:31 ]
- なにこの<int>とかいうやつ。
適当に自前でリスト作って動かしたら速かったので変えたよ! と、いう事態を何度か目の当たりにしたわ
- 629 名前:デフォルトの名無しさん [2009/08/28(金) 03:05:28 ]
- 上底を入力してください(単位cm)
3 下底を入力してください(単位cm) 4 高さを入力してください(単位cm) 5.0 台形の面積は17.5平方センチです こんな感じのプログラムを作りたいんですが、 #include <iostream> using namespace std; int main() { int input1,input2,input3; cout << "上底(cm)を入力してください\n"; cin >> input1; cout << "下底(cm)を入力してください\n"; cin >> input2; cout << "高さ(cm)を入力してください\n"; cin >> input3; return 0; } cin >> input3;から下が分かりません。
- 630 名前:デフォルトの名無しさん [2009/08/28(金) 03:19:06 ]
- 1つはfloatにするの忘れました。すみません
- 631 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 03:43:27 ]
- ほー、台形の面積の求め方というのは、ゆとり教育と関係があったのか。
www.google.co.jp/search?q=%91%E4%8C%60%82%CC%96%CA%90%CF
- 632 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 19:35:59 ]
- >>587
固定小数点にしたかったんじゃないの?
- 633 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 19:49:13 ]
- >>632
俺もそれは思ったけどやるなら32768じゃない? 32767だとどうなるんだろ・・・
- 634 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 20:49:40 ]
- >>633
ここのベクトル演算のヨタ話みたいなことじゃない? www.flightinfo.jp/tmurakam/scatut2/fdinmen.html
- 635 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 23:58:08 ]
- #if PROTOTYPES
#define P(p) p #else #define P(p) () #endif int func P((int x, int y)); こんな気持ち悪いプリプロセッサを見つけたんですが、 これは何事でしょうか?
- 636 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 00:01:06 ]
- プリプロセッサを見つけたのかよ
- 637 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 00:22:15 ]
- >>635
ヘッダファイル見たことないのか? 見れば、似たようなものがあちこちで使われだろう ANSI-C形式のプロトタイプ宣言をサポートしてないCコンパイラのため
- 638 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:26:49 ]
- int x = 3;
int* x = new int(3); ってさ後者がヒープ領域で、前者はどこに領域確保されてるの? 似たような質問で クラスのオブジェクトの宣言で(仮にStudentというクラスにnameというメンバがあったとして) Student sato("佐藤"); Student* sato = new Student("佐藤"); ってできるけど、これってどう使い分けるの? メンバにアクセスするとき 前者は sato.name ってできるけど 後者は (*sato).name or sato ->name じゃなきゃできないらしい本読む限り。 視覚的に前者の「sato.name」の方がわかりやすいんだけど。使い分けを教えてください。 よろしくお願いします。
- 639 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:34:33 ]
- >>638
ヒープを知ってるならスタックを知ってても良さそうにおもうけど、スタック領域。 newはヒープ領域に確保、単なる宣言はスタック領域に確保
- 640 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:36:09 ]
- スタックには置きたくなく、どうしてもアロー演算子がいやな場合はtypedefまたはエイリアスを作ればよいかな
- 641 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:37:17 ]
- typedefうそでした!
- 642 名前:デフォルトの名無しさん [2009/08/29(土) 01:59:30 ]
- >>638
Studentのインスタンスを不定個作りたいときは後者じゃないと。
- 643 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 10:56:55 ]
- みなさんありがとう。
>>642 どういうこと? Student型の配列として扱い Student* satous[] = {new Student("佐藤一郎") , new Student("佐藤次郎") }; ってやるためということ?
- 644 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 11:07:59 ]
- >>638 インスタンスの寿命で考えると分かる。
{ Student sato("佐藤"); //ここでインスタンスが作られる。 } //ここでインスタンスが自動的に消滅する。 Student* sato; { sato = new Student("佐藤");//ここでインスタンスが作られる }//ここではインスタンスは消滅されない。 delete sato; //ここでインスタンスを消滅させる。
- 645 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 11:15:33 ]
- >>643
インスタンスを不定個作るということは、インスタンスを作る時と削除する時を コンパイル時ではなく実行時に決めるから。
- 646 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 11:31:41 ]
- すみません
演算子のオーバーロードをした場合(例えば、operator()(int a)みたいな感じで) クラス内部でアクセスするときは、operator()(10)とするのが良いのでしょうか? それとも、(*this)(10)とするのが良いのでしょうか? 非常にくだらない質問だとは思いますが、よろしくお願いします
- 647 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 14:37:45 ]
- (*this)は式のままの書式で書けるメリットがある。
でも()は関数の形式だからどっちで書いても大差がないね。 thisを使うと最適化にはどういう影響が出るのかな?知ってる人教えて!
- 648 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 15:20:47 ]
- どっちでも変わらんように思うけど、識者に任せる
- 649 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 06:26:10 ]
- >>634
そういうことならありえるね 参考になったわありがとう
- 650 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 08:42:11 ]
- C++でJavaみたいにfinalメソッドを作ることはできませんか?
- 651 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:51:27 ]
- >>650
virtualをつけなかったら、finalになるんじゃないの?
- 652 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:54:12 ]
- 継承エラーなクラスを作ることはできますよ
- 653 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:38:26 ]
- >>651-652
親クラスのポインタに子クラスを代入してるときにvirtualつけてないメンバ関数を呼べば 確かにそうなるかも知れないけど。 そうじゃなくて継承はさせたいけど特定のメンバ関数は上書きして欲しくない。 こういうのはC++では無理っぽいですか?
- 654 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:39:31 ]
- Boostにそれっぽいのはあったような
- 655 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 14:15:46 ]
- >>651
お・・・おまw 知ったかぶりするなよ。
- 656 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:30:44 ]
- >>647-648
ありがとう 取りあえずは見た目優先でも問題なしと言うことでいいんすかね?
- 657 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:11:22 ]
- 変数を使う直前で宣言した場合よりも、スコープの先頭で宣言したほうが処理速度が速くなって
びっくりしました。 これって一般的なことなんでしょうか? 条件によっては速くなったり遅くなったりするものですか? コンパイラ次第なんでしょうか? 今、使っているコンパイラはVC++コンパイラです。
- 658 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:14:09 ]
- 一概には言えないが、そんなはずはないはず。
releaseでコンパイルしてCtrl+F5で実行しても?
- 659 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 18:18:18 ]
- while(true){
ClassA a; } とかやってるんじゃない?
- 660 名前:657 mailto:sage [2009/08/30(日) 18:30:52 ]
- >>658
Releaseコンパイルでそうなるんです。(DLLですので、実行時に別のアプリでそれを動かしてます) >>659 いえ、forループには入っていますが、static intやstatic boolです。 クラスや大きな構造体を毎回初期化というようなことではないです。 不思議です^^;
- 661 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:37:27 ]
- とりあえずコードを(ry
- 662 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:38:54 ]
- >>660 ちょっとまて、おぬしスタティックと申したか?
- 663 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 18:59:19 ]
- 座標について質問です
5*5マスの座標の一行目の一番左を(x1,y1)、右へ行くほど数字を大きくして一番右が(x5,y1) 二行目の一番左が(x1,y2)、一番右が(x5,y2)・・とします そして自分が(x3,y3)にいて、前方を向いていれば 前方に2、左へ1の座標は(x2,y1)になりますが、右を向くと(x5,y2)になり、 後方を向くと(x4,y5)になります 一箇所だけならifやselectで条件分岐させるのですが、量が大きいのです こういう時、この座標はどう計算すればよいのでしょうか?
- 664 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:06:48 ]
- 三角木馬関数を使いなさい。
- 665 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:16:30 ]
- >>664
ありがとうございまかす
- 666 名前:657 mailto:sage [2009/08/30(日) 19:18:44 ]
- >>661
すみません、ちょっと複雑ですw >>662 あ、はい、staticです・・・(?)
- 667 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 19:31:56 ]
- >>663
class Hoge { int x;//位置X int y;//位置Y int x0://向きx int y0;//向きy public: void Hoge() :x(0),y(0) ,x0(1),y0(0) //初期値は右向き { } void forward()//進む { x+=x0;y+=y0; } void right()//右に回転 { int atmp=x0; x0=y0; y0=-atmp; } void left()//左回転 { int atmp=x0; x0=-y0; y0=atmp; } };
- 668 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:07:05 ]
- Stateパターンの方がよくね?
- 669 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:35:57 ]
- C#のインデクサと同じことをC++でやるテクニックってありますかね?
- 670 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:39:01 ]
- operator[]
- 671 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:56:30 ]
- >>666
ソースを貼れないなら自分で調べるしかない。 該当箇所にブレークポイントを打ってF5。止まったところでALT+8して逆アセンブルを比較する。 処理速度が気になるときは逆アセンブルを見るのが近道
- 672 名前:663 mailto:sage [2009/08/30(日) 22:25:34 ]
- >>664
すいません、ダメでした >>663の前方に2、左に1のy座標を求めるために計算してみました (120*π/180)でラジアンをだし、それを半径の長さ(1^2+2^2=5 ピタゴラスの定理でsqrt(5)) のsqrt(5)で割ってsinを出してみたところうまくいきません。どこが問題なのでしょうか? ↓のコードの結果は0.805573になります #include <iostream> #include <math.h> #define PI 3.14159 using namespace std; int main() { double deg = 120; double rad = (deg * PI / 180.0)/sqrt(5.0); cout <<sin(rad) ; return 0; } >>667 ありがとうございます アクションRPGに導入するとものすごいコードが短縮できました! が、マスメ状ではうまく動きませんでした・・
- 673 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 22:56:24 ]
- >>672
高校から数学をやり直せ 中学かもしれん
- 674 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:00:36 ]
- sin()じゃどうあがいても1を超える事はないだろww
- 675 名前:663 mailto:sage [2009/08/30(日) 23:12:24 ]
- すいません、三角関数は当時理解してたつもりでしたがいざ使うとなるとロクに使えませでした
おとなしくifで分岐させつつやります ありがとうございました。
- 676 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:14:34 ]
- >>675
いやまてまて、 三角関数とか忘れるものじゃないだろ。 数学の基礎中の基礎だぞ? 15歳のガキでも(理解しているかどうかは別として)一応ならうんだぞ??
- 677 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:20:33 ]
- いや公式も覚えてるんですよむしろ忘れるはずも無い
半径が1で 筆記体のsin・cos・tanの頭文字を使って 始点が分母終点が分子 ttp://www1.axfc.net/uploader/Img/so/57580.jpg この覚え方で忘れるはずも無いでしょう ただこれを応用する力がなくなった、のか最初から無かったのか 前者だったはずなんだけどなぁ
- 678 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:26:51 ]
- 90度ずつしか回転しないうちはif文でいいけど
将来3DCGを使っていろんな方向に微妙に角度を変えるときは必須だよ^^
- 679 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 23:28:02 ]
- >>677
>>672の問題点は、120degがどこから来たかだ。
- 680 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:00:17 ]
- こんな感じじゃよ。たぶん。これで、いかなる角度への移動も可能。
codepad.org/QASgM33C
- 681 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:08:20 ]
- ああなんだ回転行列か
- 682 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 00:13:25 ]
- >>680
お前何でそんなに優しいんだ! 惚れるぜ
- 683 名前:657 mailto:sage [2009/08/31(月) 01:48:19 ]
- >>671
分かりました。 ありがとうございます!
- 684 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:51:57 ]
- 回天行列です。
- 685 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 10:07:38 ]
- そんな行列いやだー
- 686 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:01:07 ]
- 10年ぐらい前に売られていたバージョンのC言語って今のプログラム組むのに使える?
対応できてるものかい?
- 687 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:15:08 ]
- C言語は10年前と何も変わってないよ
- 688 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:29:43 ]
- >>687
分かりました。 では、10年前のVisual C++で色々プログラム組んでみます。 ありがとうございます。
- 689 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:39:22 ]
- C言語とVisual C++が同じものだと思ってるのか? めでたいやつ
- 690 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:49:23 ]
- >>689
なんだ? 10年前のVisual C++と今の環境は同じじゃないのか?
- 691 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:58:03 ]
- こりゃまた、ずれたレスがきたな。日本語でOK な文だが。
まともに翻訳すると。 10年前の 「Visual C++」 と 「今の環境」 は同じか? 対象が違いすぎて俺には答えられないぜw
- 692 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:06:31 ]
- >>691
答えられないなら書くなよ。 日本語で丁寧に書くと 10年前のVisual C++の環境や扱い方と今のVisual C++の環境や扱い方は、同じじゃないのか? だ。
- 693 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:10:41 ]
- ちがう
- 694 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:12:04 ]
- >>692
お前な、自分が間違ってる上に開き直ってえらそうだな、おいw
- 695 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:17:13 ]
- やっぱりソフトの購入からか。
>>694、どこが間違ってたんだ?
- 696 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:18:03 ]
- Cというプログラミング言語自体はそんなに変っちゃいないが、
Visual C++というMS製のアプリケーションは大幅に変わっている
- 697 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:23:10 ]
- >>696
アプリケーションがかなり変わってるのか、じゃソフトの買い替えからしないとダメだな。 サンクス。
- 698 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:24:52 ]
- 10年前のVC++で作っても今の環境で動くよ、問題ない
しかし最新のVC++は無料版もあるからそっちのがいいと思うんだ
- 699 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:28:51 ]
- >>698
無料版のVisual C++なんてあるのか。 相当変わってるんだな。 試してみる。 色々ありがとう。
- 700 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:34:46 ]
- 何にも知らないで何も調べないでプログラムを組むとか早速高いソフトを買うとか
絶対釣りだろ
- 701 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:42:14 ]
- >>700
10年前にC言語でプログラム組んだことあるし、その当時のプログラムの本は今でもあるよ。 しばらくの間お蔵入りになっててC言語の内容少し忘れてはいるけど。
- 702 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:47:08 ]
- 10年前のOSで開発するなら、10年前の処理系が最適かも。
- 703 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:53:20 ]
- >>702
当時のバージョンのソフトがあるから今のPCにインストールして使ってみる。 あと、無料版も試してみる。
- 704 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 18:54:53 ]
- DLLでnewする場合はDLLでdeleteしないといけないらしいんですが
DLLでfactoryをnewしてそのインスタンスからcreateする場合もやっぱりDLLでdeleteしないとだめですか?
- 705 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:15:39 ]
- DLLとアプリケーションで、メモリ源が2つあると考えろ。
そして、その2つは扱い方は同じだが、返すべきところが違う。 DLL内のoperator deleteとアプリケーションのoperator delete、 どちらを呼び出して返却すべきかは、自分で考えろ。
- 706 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 19:47:44 ]
- メモリはもらったところへ返す
DLL側のnewでもらったメモリはDLL側のdeleteへ返す EXE側のnewでもらったメモリはEXE側のdeleteへ返す DLLもEXEもみんな別々にメモリ管理してる (場合がある) から ごっちゃにするとメモリ管理が混乱して落ちる (かもしれない) それはウチで管理してるメモリじゃないぜ、とかそんな感じ EXEもDLLもみんな、使うメモリはどっか一個所で一元管理してやれば済む話なんだが みんな自分勝手だからな
- 707 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 20:26:35 ]
- boost::shared_ptrを使うとカスタムデリータが確保した側のdeleteで自動的に開放してくれるから便利。
- 708 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:01:23 ]
- shared_ptrの類を使うとインスタンス管理で負けた気がする。
全くの個人的な了見で、使う人を批判する気は全くないが。
- 709 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:13:01 ]
- >>708
そんなこと言っていると 本当にインスタンス管理に(つーか他人の技術に)負けるぞ。 何事も新しいことは受け入れづらいものなのは分かるが。
- 710 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:16:38 ]
- shared_ptrを普通のポインタみたいに記号ひとつで使えればいいのに。Foo@ foo;とか
typedef std::tr1::shared_ptr< foo > sp_foo_t;とかするのめんどくさい
- 711 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:27:12 ]
- >>708安心しろ。それは杞憂だ。
shared_ptrを使うには循環参照を避けるクラス設計が必要になる。 それこそがインスタンス管理の勝利ではないか。 一度使い始めると雪崩的に使うようになるから。
- 712 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 21:29:52 ]
- >>710
そういうことはC++0xの設計段階で提唱するべきだったな。
- 713 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:49:07 ]
- >>710
using std::tr1::shared_ptr とすれば楽になる。 C++0xにはtemplate typedefができるらしいから sp<T>にでもtypedefすればいいんじゃないか
- 714 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 22:59:08 ]
- using sp = std::tr1::shared_ptr;
sp<hoge> sp_hoge; 0xだと↑みたいにできるらしいね。typedefより見やすいし良いと思う
- 715 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:25:43 ]
- inline int func(int x){
return x * x; } みたいなinline関数があるとすると、 a = func((int)(b - c)); は a = ((int)(b - c)) * ((int)(b - c)); みたいになるんですか? それとも、 int x = (int)(b - c); a = x * x; みたいになるんですか?
- 716 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 14:40:29 ]
- 後者
マクロ展開と違って引数は1度しか評価されない
- 717 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 15:07:27 ]
- >>716
ありがとうございます。
- 718 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:58:52 ]
- >>713
彼はそんな程度は知っているだろ、たぶん。 彼が言いたいのはもうもっと言語仕様に 組み込んじゃえよってことじゃねぇか?
- 719 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:01:01 ]
- >>717
>>716の言う通り、一度である。 よって、例えばmaxテンプレートとmaxマクロでは max( ++a, b ); がどうなるかが変わってくる。
- 720 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:24:52 ]
- >>719
715です。 これは確かにどちらなのかによって全然違いますね。
|

|