1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ] プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2 以降。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、コンパイラ名) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって小心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。 宗教的な話題は禁止します。
702 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:03:47 ] >>701 どういうものが必要ないかを俺が決めていいのかよ?? じゃぁ(ry
703 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:37:56 ] 条件付けで処理が増える分、余計に遅くなるだけな気もするが。
704 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:40:17 ] 選択整列法の平均比較回数が約N^2/4になるのはなぜですか?
705 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:50:35 ] 平均っていうか、単純選択ソートの比較回数は固定のはずでは
706 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:59:38 ] 選択ソートの比較回数は(N-1)*N/2じゃないの?
707 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:38:27 ] 失礼、挿入整列法でした。
708 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:49:35 ] スレ違いかもしれないけど。 wiiyourselfとかwiiremoteなどのwii関係のC,C++用のライブラリーでとっつき安いライブラリのおすすめがある人いませんか? 自分の作ったVRウォークスルーもどきにヘッドトラッキングを導入したいんだけど。
709 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:22:28 ] >>707 俺最低。異物挿入法とか読んだ。どこに異物があるのか。
710 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:49:11 ] >707 大雑把に説明してみる。 Insertion sort ではどの位置に要素を挿入するべきかを判定するために比較が用いられている。 最初逆順に並んでいる場合(=最悪の場合)は比較回数は 0+1+2+...+(n-1)=n(n-1)/2 になる。 各ステップにおいてどの位置に挿入することになるかは等確率となるため平均を考えると半分の位置になる。 従って 0/2+1/2+2/2+...+(n-1)/2=1/2(0+1+2+...+(n-1))=n(n-1)/4 となる。
711 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 01:58:03 ] 補足。 >各ステップにおいてどの位置に挿入することになるかは等確率 例えば最悪値で n-1 回比較するケースにおいて平均を考えると (1+2+...+(n-1))/(n-1) = n(n-1)/2/(n-1) = n/2 で大体半分。↑の式でも正確じゃないけどまぁオーダーとしては合ってるはず。
712 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 02:59:32 ] 質問なのですが、投げられた例外の型ってどうやって判定してるんですか? catchで分岐する時です。 静的に分かるものですか? それとも実行時型情報みたいなの使うんでしょうか?
713 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 08:32:55 ] >>712 っ msdn.microsoft.com/ja-jp/library/cc440190%28VS.71%29.aspx
714 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 08:36:11 ] >712 静的には分からないので >実行時型情報みたいなの を使ってる。 g++ の場合だと正に std::type_info を使ってるらしい。 詳しく知りたい場合は BinaryHacks おすすめ。
715 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 14:51:07 ] try{ // コード }catch(Exception1 e){ //例外1 }catch(Exception2 e){ //例外2 }catch(Exception3 e){ //例外3 }
716 名前:デフォルトの名無しさん [2009/12/20(日) 16:14:52 ] #include <iostream> using namespace std; int main() { int n=100; double k = 1.0/n; for(double i=0.5;i >= -0.5; i-=k){ double x =0.0; x = i; cout << x << endl; } return 0; } これをコンパイルして実行したら0のところがe-16とかの小さい数になってしまいます。 原因を教えてください
717 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:18:46 ] >>716 www.kouno.jp/home/c_faq/c14.html
718 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 17:25:17 ] >>717 ありがとうございます 0のところだけ別に入れます
719 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:23:07 ] >>716 0以外の場合は浮動小数点誤差が情報落ちして消えてしまうけど、 0の場合は誤差がそのまま有効な数値になるから。 で cout << x << end; を使わず printf("%.2f\n", x ); を使えばいい
720 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:04:57 ] 定数は左に、インド人は右に。
721 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:44:05 ] なつかしいなおいw
722 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:42:41 ] インド人は右ってどういう意味?
723 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:51:22 ] ハンドルは右
724 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 21:54:28 ] そういう意味か!!!
725 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 22:49:34 ] >>724 「インド人を右に」でぐぐれ
726 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 23:01:19 ] >>716 みたいなのだと、100倍した値で計算して、表示の時に100分の1するのもいいかもな
727 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 01:03:47 ] 別の言い方をすれば、ostreamで浮動小数点数を出力しようとするとprintfの%g相当ということだな。 <iomanip>をインクルードして、例えば cout << fixed << setprecision(2) << x << endl; と書けば、%.2f相当の出力になる。
728 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:37:27 ] VS2010β2のC++を使ってみました。 UInt32 aa; aa = 0x12; FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); fs->Close(); 作成したtmp.binが使用中のままになっているため、2回繰り返すとエラーになってしまいます。 Closeしただけではダメなのでしょうか? すいませんがよろしくお願いします。
729 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:35:48 ] >>728 CLIの質問は大胆すぎるので別スレでどうぞ
730 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 23:38:00 ] >>728 エラーとはどういうこと? 次のように、単純に2回実行することを試したが、なんの例外も投げられることなく実行されるけど。 using namespace System; using namespace System::IO; int main() { UInt32 aa; aa = 0x12; { FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); } { FileStream^ fs = gcnew FileStream("tmp.bin", FileMode::Create); BinaryWriter^ binWriter = gcnew BinaryWriter( fs ); binWriter->Write( aa ); binWriter->Close(); } }
731 名前:728 mailto:sage [2009/12/22(火) 01:08:58 ] >>730 すいません、他のサブルーチンがひっかけてました。 ありがとうございました。
732 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:35:39 ] >>731 そうそう、BinaryWriterのCloseは、大元のストリームもCloseすることになっているから、 fs->Close()は無くても平気だよ。もちろん、あっても害はないから気にしなくても全然問題ない。
733 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 02:58:29 ] すみません、 普通、構造体のインスタンスに、STLで見かける.size()メンバなんて有りませんよね? ttp://marupeke296.com/DXG_No37_AnimationController.html ここの「アニメーション上位レベル構造体」が「SetLoopTimeメソッド」で.size()されていて そのままインスタンスを作ってコンパイルしようとすると、当然のように >error C2228: '.size' の左側はクラス、構造体、共用体でなければなりません と出ます。 この構造体は何か、普通と違った使い方をしているのでしょうか? それとも私が、何か知らなければいけない事を知らないだけなのでしょうか。
734 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 04:52:19 ] >733 C++は詳しく知らないし、僕が昔使っていたときにはinterfaceなんてなかった気もするがおそらく class CHighLevelAnimController : IHighLevelAnimController { private: vector<struct HLANIMATION_DESC> m_Amin; CHighLevelAnimController operator=(CHighLevelAnimController& c) { return c; } public: CHighLevelAnimController() { } ~CHighLevelAnimController() { } bool SetLoopTime(UINT, FLOAT); ... }; CHighLevelAnimControllerクラスは、IHighLevelAnimControllerインターフェイスを継承(実装)して m_Aminオブジェクトは、vector<>のようなテンプレートクラスのインスタンスとしてCHighLevelAnimControllerクラスまたはその基底クラスで定義されている interfaceキーワードに詳しい人詳細キボン
735 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 05:39:46 ] >>734 Windowsでは、どこかのヘッダで#define interface structってされているだけ。 >>733 自分も、m_Animは実際にはなんらかのSTLコンテナか何かなのだと思う。
736 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 11:08:03 ] >>734 >>735 何か特別な使い方かと思いましたが、STLに包んでいるとかなのですね。 ありがとうございました。
737 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:13:02 ] すみません。 起動や大型のファイル群を読み込むなどで10秒前後待たせる時 画面にLoading表示やその進行状況を表示したいのですが、 あれはどう実装するものなのでしょうか? 普通に組むと1つの工程(ファイルなど)単位で処理が停止してしまいますし、 「Loading」「読み込み画面」などの検索ワードでは違うものばかりHitし、 実現方法を見つけられずにいます。 何かご助言を頂けると幸いです orz
738 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:24:50 ] マルチスレッド
739 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 16:57:06 ] 1ファイルの読み込み途中の経過を出したいなら、読み込みの関数を呼ぶ度に進行状況のウィンドウを書き換える
740 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:13:38 ] >>738 ググってみました。マルチプロセス処理というものが有るのですね。 これで実現への道筋が見えました。ありがとうございました。 >>739 そうですね。その程度なら勉強〜開発時間を殆どかけずにやれそうですね。 ありがとうございました。
741 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:15:01 ] 凝ったLoading画面を作るならマルチスレッドが楽 止まってないことだけ示したいなら、一部読み込んでは表示、を繰り返せばいい
742 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 17:15:41 ] マルチプロセスとマルチスレッドは一般的には別物だぜ
743 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 09:19:30 ] 端折れば マルチプロセス>メモリ空間が別 マルチスレッド>同じメモリ空間
744 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 14:01:26 ] HAL研のプログラミングコンテストの難易度をおしえてください。 ひととおり文法勉強したんですが、難しく思えます
745 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 18:35:29 ] 2009年のを見たけど、C++を適切に勉強していれば(文法的には)難しくはないと思うけどな 最短経路問題とかその類のロジックを問う問題でしょ 文法が分からないのであればそれ以前のレベルってことだね
746 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 19:20:51 ] どうやらプログラミングではなく、アルゴリズムを競うコンテストっぽいね。
747 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:20:54 ] >>744 俺も去年の春からプログラミングを勉強し始めたばかりで参加してるけど アルゴリズムを考えるだけだから文法がわかってれば何も難しくもなくね? 難易度はどうですかって質問の答えにはなってないとは思うけど
748 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 01:18:43 ] >>745 >>746 >>747 なるほど。じゃ用意されている関数を使えるレベルすらないので もう少し勉強してからトライします。もう終わりそうですけど。 レスありがとうございました。
749 名前:デフォルトの名無しさん [2010/01/07(木) 06:18:50 ] openmpはマルチプロセスにする方法はありますか?
750 名前:デフォルトの名無しさん [2010/01/07(木) 14:17:20 ] const Hoge* const Hoge& Hoge const* Hoge const& の違いを実例を挙げて詳しく教えてください。
751 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 16:17:41 ] 実例だったら自分で組んでみれば分かるだろ。
752 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:02:22 ] 俺も const& の2つがよくわからん。
753 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:18:14 ] const Hoge& と Hoge const& は一緒だから気にするな & を超えて Hoge& const になると変わる
754 名前:753 mailto:sage [2010/01/07(木) 17:19:46 ] ごめん 何かわけのわからんことを言った 参照はもともと変更不可だから Hoge& const のようなものは無かった Hoge* const はある
755 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 17:30:50 ] >>754 もちつけ。参照も変更可能。 #include <iostream> int main() { int a = 10, b = 20; int &r = a; std::cout << r << std::endl; r = b; std::cout << r << std::endl; /* int &const cr = a; // `const' qualifiers cannot be applied to `int&' std::cout << cr << std::endl; cr = b; std::cout << cr << std::endl; */ int *const cp = &a; std::cout << *cp << std::endl; //cp = &b; // error: assignment of read-only variable `cp' std::cout << *cp << std::endl; return 0; }
756 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 21:52:05 ] delete this; って適切に現在?のオブジェクトを破棄してくれるのですか?
757 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 22:21:38 ] 適切に使えば
758 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 23:39:12 ] >>755 >>753 が言ってるのは「別のオブジェクトを指すように変更することはできない」ってことだよ。 Hoge&は最初からHoge*const相当で、参照にHoge*に対応するものはないんだから。
759 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:32:09 ] >>758 別のオブジェクトを指すように変更することはできない? いつからそうなってんの?w int a = 10, b = 20; int &r = a; std::cout << r << std::endl; r = b; std::cout << r << std::endl; これを実行して確認しる。
760 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:33:45 ] >>758 あーごめんw 俺が狂ってた。 r = b; これはひょっとして、代入されてるのか。 ( つд∩)うえーん ( つд・∩)チラ
761 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:42:09 ] int a = 10, b = 20; int &r = a; std::cout << &a << ' ' << &b << std::endl; std::cout << r << ' ' << &r << std::endl; r = b; std::cout << r << ' ' << &r << std::endl; 実行結果: 0x22cce4 0x22cce0 10 0x22cce4 20 0x22cce4 ___ ←樹海| オワタ  ̄|| ̄ ┗(^o^ )┓三 >>753 >>758 両氏ごめん || ┏┗ 三  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
762 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:50:12 ] 学校の課題で配列に10個の実数を入力して最大値と最小値を求める問題なんですが、最大値は正常に出力されますが、最小値がうまく出力されません。 #include<stdio.h> int main (void) { float x[11]; float max,min; int i; printf("実数を10個入力してください\n"); for ( i = 1; i <= 10; i++){ scanf("%f",& x[i]); } max = x[0]; for ( i = 1; i <= 10; i++){ if (x[i] > max){ max = x[i]; } } min = x[0]; for ( i = 1; i <= 10; i++){ if (x[i] < min){ min = x[i]; } } printf("最大値は%fです\n",max); printf("最小値は%fです\n",min); return 0; } どこが原因なんでしょうか?
763 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:56:55 ] x[0]が未初期化
764 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 12:59:46 ] すみません。複数のクラスを辿りループ処理をするプログラムで クラス毎に1度だけ変数の初期化をさせたい場合、 1.コンストラクタを使う (再初期化が必要になった場合、結局の後者いずれかが必要に・・?) 2.各クラスのグローバルスコープに初期化用のstatic boolを置いて処理 3.初期化用メソッドを別に作って纏めて管理 この3つが思い付くのですが、 どういう初期化が定番、もしくは設計的に無難だと思われますでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:29:43 ] staticイニシャライザじゃダメなの?
766 名前:765 mailto:sage [2010/01/08(金) 13:30:28 ] ごめんJavaと勘違いしてました
767 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 09:17:09 ] >764 辿るのはクラスなのオブジェクトなの? 初期化するのはクラス毎なのオブジェクト毎なの? どんな処理しようとしてるのかが良く分からない。 擬似コードでいいから書いてみてくれた方が答えやすい。 「クラス毎に1度だけ」の条件を抜いた上で感覚で答えれば、 それが本当に「初期化」ならコンストラクタにすると思う。 状態の再設定が必要なら reset() みたいなメソッドも作るだろうね。 >各クラスのグローバルスコープ 言いたいのはクラススコープじゃね?
768 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:33:35 ] >>767 初期化じゃなくて再設定って言わないとですね; >各クラスのグローバルスコープ すみませんでした、そんなの無いですよね; つい完成するまでは1行で済むクラスの置いてるソースファイルのグローバルスコープにstatic boolを置く癖から。。 表現に注意します; そして、変数の再設定メソッドが良さそうですね・・ありがとうございました。
769 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:08:21 ] すみません。 「配列にはしたくない変数名の末尾」に数字を付けるのは、滅多に見ない気がするのですが、何か危険なのでしょうか? 以前はhennsuuA ..B ..C としていたのですが、最近はhennsuu1 ..2 ..3 とやっているのですが・・
770 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:10:45 ] そういう命名がふさわしい場合が滅多に無いから
771 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:16:39 ] a, b, c, 1, 2, 3 なんて機械的な命名ではなく、それぞれの変数の役目に合った意味のある名前を付けるべき いい名前が思い浮かばないのなら変数名スレに相談してみては
772 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:22:51 ] 単純に通し番号を振るのがふさわしいような場合は、普通は似たような処理をそれぞれ の変数に適用するだろうから、素直に配列にすることが多いだろ。 配列はふさわしくないが通し番号がふさわしい、という場面が滅多に無いから、そういう 命名も滅多に見ないだけ。 で、その言い方だと頻繁に通し番号を振ってるようだから、やはり命名がおかしいか、 よほど特殊なジャンルで活動しているか。まぁ、後者ならこんな質問は出ないだろうと 思うので、多分前者だろう。
773 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:24:18 ] たまに通し番号が多発しやすいジャンルもあるから、何を作っててそういうコードに なるのか知りたい気もする
774 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:12:39 ] >>770-773 ありがとうございます。危険性そのものは多分、無いのですね。 私のプログラミング能力の低さから来てる問題なのが大半だとは思います。 あとは、 変数1の値に応じて処理をわけ、変数2の値に応じて処理を分け と どっちも1桁の数値だから配列にして置いてても良いのですが、 一応種類が全く違う2つなので、名前を別にしたいのですが 違い過ぎると使い間違えそうになるので・・とりあえずa, b, c, 1, 2, 3 と やっちゃってました。 変数名スレッドなるものが有るんですね。 探して見てこようかと思います。 ありがとうございました。
775 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 19:05:36 ] まーゲームなんかだと変数名にシリアル振りたくなることはある でも今時そこまでガチに汚く組まないと困ることはコンシューマでも珍しい
776 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:33:15 ] 意味は異なるが関連のある変数? なら構造体にするとか
777 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:07:00 ] ポインタを配列形式でアクセスするとき、添字に負の数を指定するのは文法上許されるのでしょうか。 int a[10]; int *p = a+5; p[-4] = 0;
778 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 17:10:40 ] >>777 値の正負は文法上の問題ではないので、非負の値が許されるなら当然、文法上は、有効。
779 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 00:43:20 ] けどすごい紛らわしい書き方だな…
780 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 12:01:30 ] まぁ素直に*(p-4)=0と書いた方がいいわな。1[p]とかと似たような空気を感じる。 どうでもいいけど、-4[p]=0は試してないけど有効じゃなさそうだな、優先順位的に。
781 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 18:13:26 ] 一連の流れでmalloc/freeを連想した
782 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:05:01 ] >>780 (-4)[p] なら大丈夫
783 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:17:49 ] そんな書き方、文法が許しても俺が許さん
784 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 20:38:04 ] コーディング規約とかで人のプログラミングスタイルを制限するのは ナンセンスだと思っている俺ですら>>782 はぶち殺したくなる
785 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:30:44 ] べつにいいやんw 一箇所だけとか、少ないときは。 きっと清涼剤のようにさわやかになれるぞ。
786 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 09:40:05 ] なれねーよw
787 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 21:22:34 ] マジックナンバーならまだ一目でわかるが int a[10]; int *p = a+5; int n = -4; /* 数十行のコード */ n[p] = 0; とかなってたら明確な悪意を感じる
788 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:40:13 ] すみません。 共通の変数50個を扱うデータクラスA(インスタンスは500個)に関連して 10種x1〜20の配列(ムラの激しい追加情報)が必要なのですが、 全部データクラスAに入れてしまうと、約190個x400インスタンス=76000個分ほどの変数は無駄になる計算で・・。 STLを使うなりクラスをバラにするなり考えているのですが こういう場合、どうデータを管理するのが定番、妥当なのでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:05:01 ] たかが76000個くらい気にしない、というのも一つの解決方法
790 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:24:38 ] 76000個のインスタンス一つは組み込み型程度なの? とりあえず気にしないで作ってだめそうだったら工夫するとか? 76000個をヒープに取ったらまずい?
791 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:44:52 ] 使うときに使う分だけ配列を確保すればいいんじゃね?
792 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:57:49 ] それは本当に配列でなければいけないの?
793 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 01:55:58 ] >788 >共通の変数50個 この段階でクラスの切り分け方ミスってるような気もするが。 追加情報については STL のコンテナ使うなり(コンテナの選択は追加、削除、検索の発生の仕方次第)、 適当なクラスにラップするなり、ケース次第だと思う。 追加情報に対して単なるコンテナ以上の操作が必要ならばクラスにラップするかもね。
794 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 19:56:01 ] >>789-793 ありがとうございます。巻き添えらしいアクセス制限で返事が遅れてすみません。 今は、言われてみれば数十KB位のようですし、そのままデータクラスAに入れて使う事にします。 問題になってきたらご助言を参考に改良したく思います。 ありがとうございました。
795 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 13:10:49 ] すいません。 DIRECT法(DIviding RECTngle)のプログラムを組むことになったのですが、 どうにもとっかかりが無くて困っています。 おおよその理論は分かっているのですが、形にすることが全くできません。 ググって見たりはしたものの、それらしきプログラムソースは落ちていませんでした。 助けていただくことはできますでしょうか?
796 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 13:36:39 ] >>795 ググると普通にあるけど…? ソースが欲しいって訳?
797 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 18:44:46 ] >>796 ソースがあれば、いただけると幸いです。
798 名前:デフォルトの名無しさん [2010/01/29(金) 17:20:14 ] 795 どなたかお願いします。 書き忘れましたが、C++です。 本当に困ってます
799 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 17:43:15 ] 留年したまえ
800 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 17:53:41 ] >落ちていませんでした こういうこと書かれると手伝う気うせる
801 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:13:46 ] >>800 なんでだよw
802 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:25:14 ] >>801 なんでだよじゃねえだろ。失礼甚だしい