1 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 19:44:28.87 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.77【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1323692486/ ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
2 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 20:36:37.68 ] >>1 乙なんだからね
3 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 16:58:26.65 ] 環境依存とか嫌なんだけど(´・ω・`)
4 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:17:19.15 ] c++で3dゲーム作るとしたらどんな風なdll?がおすすめですか
5 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 18:20:35.69 ] DirectXとかOpenGLとかマジオススメ
6 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:13:40.72 ] >>5 それ以外に道がない
7 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:37:23.13 ] >>4 上位レイヤーなら Ogre, Unreal Engine, Irrlichtとか
8 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 19:38:04.45 ] >>4 で、もし言語にこだわらずゲームが作りたいだけならUnityおすすめ
9 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 23:30:50.56 ] >>5-8 directxはよく見ますがそれ以外は聞いたことがないのばかりです 色々面白そうなのでかまってみます
10 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:23:10.50 ] C++複雑過ぎてコンパイルするのが怖い classのメンバ関数のconst参照、演算子の多重定義、テンプレート Cってすごくシンプルでいい言語だったな・・・
11 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:56:40.78 ] >>10 やりたい事を実行するのに必須のもんだったら別に怖いって事は無いだろうけどな。 選択権が無いのなら、お気の毒。
12 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 01:02:12.25 ] いや、クラスが複雑になってきてコンパイルエラー治すのに今3、4時間かかったからさ もちろん選択権ありありで、好きでそんなC++やってるよ
13 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:47:06.48 ] 5MBほどメモリ領域を必要とするメンバ変数を持つクラスがあるんだが インスタンスをグローバル領域で生成すればスタックには格納されないよね? 謎のスタックオーバーフローで悩まされている・・・
14 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:52:55.24 ] ヒープじゃダメなんですか
15 名前: ◆QZaw55cn4c mailto:sage [2012/03/21(水) 00:12:46.40 ] gcc4, printf() で long long unsigned int を表示するときには、%の後になにをつければいいの?何をつけても警告がでるんだけど。
16 名前:llu mailto:sage [2012/03/21(水) 00:38:16.24 ] >何をつけても警告がでるんだけど。 大袈裟だな。 アスキーキャラクタ 1〜10文字のすべての組み合わせ試したのか?
17 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 00:38:24.29 ] lluでもなんでも好きなの使え ちゃんと俺にもモリタポ払うんだろうな?
18 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:00:32.29 ] グローバル変数の初期化順番について質問があります。 test1.cpp --------------------------- std::string a("test1"); test2.cpp --------------------------- std::string b(a); 両方の変数がグローバル変数だったとして、この場合bの文字列が"test1"になるかは不明ですよね で、次の場合でも文字列bが確実に"test1"になってはくれないのでしょうか? test1.cpp --------------------------- const std::string &testinit(){ static std::string a("test1"); return a; } test2.cpp --------------------------- b(testinit()); よろしくお願いします。
19 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:01:42.85 ] おk
20 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 01:13:32.11 ] >>19 なりますか。 でもなんか変な感じがします。 最初のやつもbが"test1"になることを保証してもいい気がするんですが
21 名前: ◆QZaw55cn4c mailto:>>16-17 thanks!! [2012/03/21(水) 01:34:55.92 ] >>17 5000モリタポお送りしたいのですがトリップがわからなくてごめんなさい。お知らせいただいてもいいのですが、>>17 のトリップであることを証明してくださいね。:-)
22 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 06:40:59.83 ] >>10 たまにC#使うとコンパイルの速さにビビる。
23 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 07:45:04.57 ] ヘルスバーグなら速いだろうな
24 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 08:58:40.76 ] >>21 お前最低な性格だな
25 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 09:41:07.25 ] つーか、%lluなんてマニュアルページに書いてあることを質問している段階で馬鹿確定。 その馬鹿の性格なんてどうでもいい。
26 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 10:30:50.38 ] そんな馬鹿のためにモリタポの可能性を潰されそうになってるのがムカつくわ
27 名前: ◆QZaw55cn4c mailto:sage [2012/03/21(水) 19:03:51.29 ] >>24 その言葉、当方には最大の賛辞と解釈します。なにせ、en.wikipedia.org/wiki/Doublethink こそ最高のありかたと考え日々実践していますので。
28 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 19:58:23.60 ] ダブルチンコ? なんと奇遇な?
29 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 21:15:55.03 ] >>27 なんか勘違いしてるな。哲学の無い矛盾はただのアホだぞ
30 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:44:01.92 ] 屑がダブルチンコwwww
31 名前:デフォルトの名無しさん [2012/03/22(木) 07:13:18.34 ] 初心的な質問ですが テキストエディタなどは 文字の量などでメモリのサイズが可変的だとおもうのですが こういうのはあらかじめある程度の領域を確保して 必要になるとまたある程度の領域を追加で確保するという形をとっているのでしょうか? またその中で消したりなどをした際には配列を手前へとずらしているのでしょうか?
32 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:11:38.31 ] >>31 プログラミング作法を読むといいよ。 まぁ、行単位か頁単位でリンクトリストするとかstd::deque辺りを使っていると思う。
33 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:12:25.47 ] 間違えた、「ソフトウェア作法」だった。
34 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 10:14:56.34 ] ギャップバッファ最強
35 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 10:47:17.89 ] スタック、ヒープ領域につい素人的な質問ですが 以下のようにAのインスタンスを動的に作成した場合は、Aのメンバ変数のBインスタンスもヒープ領域に確保されるということでよいですか? class A{ B b; }; class B{ int nHoge; }; A a = new A;
36 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 11:04:45.20 ] うn
37 名前:デフォルトの名無しさん [2012/03/24(土) 08:05:41.49 ] いま始めたばかりの初心者なのですが、 サイト見ながら素数判定のプログラムを書いたので 実行したいのですが、どこから実行するかどなたか教えてください
38 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 10:35:53.39 ] コンパイラや開発環境と呼べるようなものを持っているなら、 まずはそれの名前を書け 持っていないなら、それらをインストールしろ。 常用にはすすめられないが↓みたいなものある 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
39 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 12:18:04.67 ] wxWidgets2.9とmingwを使用しています。 コンパイルの仕方についての質問ですが、、このスレでよいでしょうか?
40 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 12:47:15.46 ] RTFM
41 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:50:40.96 ] STLで2つのコンテナの合成アルゴリズムありませんか? 例えばvector A, Bの全要素に対してplus関数オブジェクトを適用すればA[i] += B[i]してくれるようなもの。
42 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:54:11.55 ] transformでいけそうです
43 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 00:59:51.63 ] VC++2008はいつC++11に対応するんですか?
44 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:01:25.78 ] 2010ですら中途半端なのに
45 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:15:00.78 ] transformじゃできなかったです!!どうすればいいでしょうか
46 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:35:14.86 ] >>45 できるだろ ttp://codepad.org/xpZIG0uX
47 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:42:34.17 ] ほんとだ。ありがと。 よく見たらbinary_function継承したクラスにコンパイルエラーが出てて 実行されてたのは修正前の古いexeでした。
48 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:22:51.09 ] nelem(要素数),vec(*int)をメンバに持ち、コンストラクタでnew int[nelem]によって int型の配列を実現するクラスIntArrayがあり C++で自己初期化(IntArray x = x)を抑制するコピーコンストラクタを作ろうとしました 自己初期化の問題は、左辺のIntArray xの宣言子よりxは生成されるので 右辺のxはコンパイルエラーにならないが、この右辺xは未初期化(デフォルトコンストラクタにもかからない)なので 結果としてxのメンバが不定値で設定されてしまうことにあるということです IntArray x=x;はダメだが、 IntArray t;// default constructor x=t; //IntArray::operator=が定義済み。 にするとうまくいく。そこで、下のようにコピーコンストラクタを定義しました IntArray::IntArray(const IntArray& x){ if(&x != this){ /*自己初期化ではない*/ nelem = x.nelem; vec = new int[nelem]; for(int i=0;i<nelem;i++) vec[i] = x.vec[i]; } else{ std::cout << "※自己初期化が行われています。\n"; IntArray t; *this = t; } } するとコンパイルエラーは出ないものの実行すると *** glibc detected *** ./a.out: free(): invalid pointer: 0xb763bff4 *** となり、どこかでメモリの開放がうまくできていないのかプログラムが強制終了してしまいます。 前後左右でチェックして明らかに*this = t;に問題があります。 ~IntArray() { delete[] vec; }がデストラクタです。 コードの中にどこか問題のある記述ありますでしょうか?
49 名前:48 mailto:sage [2012/03/25(日) 19:34:53.85 ] 長文をかいといてすいません。 下のようにやるとうまくいきました(単純に考えうることなのに頭が回ってませんでした) IntArray::IntArray(const IntArray& x){ if(&x != this){ ・・・・ } else{ std::cout << "自己初期化が行われています。\n"; IntArray t; nelem = t.nelem; vec = new int[nelem]; for(int i=0;i<nelem;i++) vec[i] = t.vec[i]; } } 原因が下のoperator=の自己代入抑制のコード中のdeleteで、既存の配列を開放するため >>48 のコピーコンストラクタ中のthis->vecが不定値の状態でdeleteを行っているからでした。 IntArray t; Int Array x = t が許されたのは、コピーコンストラクタが呼び出されているからなのですね。 if(this != &x){ if(nelem != x.nelem){ delete[] vec; nelem=x.nelem; vec = new int[nelem]; } for(int i=0;i<nelem;i++) vec[i] = x.vec[i]; } お騒がせして勝手に自己解決してすいませんでした
50 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:35:24.20 ] >>48 そのクラス、コピー代入演算子やデストラクタも定義されてるんだよね? コピー代入演算子の実装は初期化済みのオブジェクトを期待してるだろうから、 ら未初期化のオブジェクトに対して代入しちゃマズイでしょう。
51 名前:48 mailto:sage [2012/03/25(日) 19:38:35.35 ] >>50 まさにそういうことなんですよね・・・ コピーコンストラクタとコピー代入演算子の違いが初めてはっきり分かった気がします。
52 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:38:54.60 ] うわ、解決してた。 にしても自己初期化に何かしらの動作を与えても呼び出しもとのバグであることに 変わりはないだろうから、心配するとしても assert() ぐらいでいいと思うぜ。
53 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:43:15.84 ] >呼び出しもとのバグであることに変わりはないだろうから、心配するとしても assert() ぐらいでいいと思う 眼から鱗ですね。確かにその通りです
54 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 23:37:39.03 ] 独習C言語を読み終わり、乗っていたすべての例題を解けるようにはなりました。 そろそろGUIなプログラムを作ってみたいのですが、次は何を理解すればよいのでしょうか?
55 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 23:48:43.74 ] >>54 独習C++
56 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 00:04:15.47 ] >>54 プラットフォームや見た目、使い勝手などから、 目的に合いそうなGUIツールキットを探す
57 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:50:29.17 ] >>54 作りたいものに応じた開発言語・ライブラリ選択基準
58 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:37:34.80 ] ふと自作クラスを作っているとき疑問に思ったのだが C++の既存のWin32ライブラリ、例えばMFCとかATL/WTLは BOOL型とbool型が混在しているが、メソッドの戻り値の型を例に取ると どういう場合はBOOL型にし、またはbool型にすべきなのだろう?
59 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:55:41.62 ] >>58 自分で作るならbool、APIの戻り値をそのまま戻すなら(必要に応じて)BOOL。 ちなみに、Win32APIのBOOLは二値じゃない。
60 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 05:49:34.50 ] >>59 MFCなどはAPIとの整合性を重視してBOOLを使うのだろうか? C++のライブラリであるなら言語仕様にあるboolを使うべきと思うのだが、 boolを使うデメリットがあるのでしょうか? シリアル化の場面ぐらいしか思い浮かばないが…
61 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:21:25.04 ] Win32API 使う人の中じゃ有名だろうが、 GetMessageという関数があって、こいつはBOOL型を返すくせに、 -1、0、それ以外の値の3種類がある そういう特別な例外だけ気にしておけば bool で構わないと思う
62 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 10:13:39.23 ] BOOLを返す関数の戻り値はBOOLで受ければいいお それからエラー処理でも何でもすればいいんだお
63 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:00:52.23 ] Windowsデータ型のBOOLはBYTEの別名でBYTEはunsigned charの別名なんだっけか?
64 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:58:50.71 ] msdn.microsoft.com/en-us/library/aa383751 BOOLはint
65 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 12:01:48.56 ] >>61 実用上ではboolでキャストしても問題ないとかじゃなくて、 むしろリファレンスにboolで受けるなよ!絶対だぞ!って書かれてるのか(´・ω・`)
66 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 13:22:12.48 ] >>64 うは、BOOLとBOOLEANで型が違うw
67 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 01:19:38.40 ] 以下のフォーマットになるようにバイナリデータ を作成したいのですが、どうするのが手っ取り早いでしょうか? [フォーマット] ┌───────┬─────┬─────┬─────┬─────┐ |2進数桁数(N桁)│ 値A │ 値B │ 値C │ 値D │ └───────┴─────┴─────┴─────┴─────┘ └ 5 bit ┘└ N bit ┘└ N bit ┘└ N bit ┘└ N bit ┘ フォーマットの先頭にある5ビットで2進数表現の桁数が格納されており、 その後に続く値(符号付)が、桁数に従い2進数で格納されております。 例えば、 桁数:6桁 値A :0 値B :20 値C :0 値D :20 の場合、 00110 000000 010100 000000 010100 になります。 これを先頭から8ビットずつとって(8ビットにならに場合0パディング)、 バイナリに変換して、 0x30 0x0A 0x00 0xA0 というような感じにしたい。 どういうロジックにするのが簡単なのでしょうか?
68 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 02:14:14.28 ] >>67 ビットフィールドでググれ
69 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 02:35:43.19 ] 任意のビット幅のポインタをクラスで作成して使えばよいんじゃね。 operatorとか使うのがよく判らないなら、Read/Write用のメンバ関数を用意してもいいし。 bit幅が64bitを超える場合はちょっと面倒になりそうではあるが。
70 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:18:18.66 ] >>69 ビット長が5ビットで表現されているんだから64bitを超えるわけないだろ。JK >>67 で、Nが0だったらどうなんの? Nが8を超えたときも2-4バイトにパディングしていいの?
71 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:20:03.12 ] あ、違うのか。失敬。 >>67 パディングは最後だけってことね。 >>69 総ビット長が64bitを越えるってことか? だとしても、なんで面倒になるんだ?
72 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 14:06:49.35 ] >>67 横からだけど適当に作ってみた codepad.org/HyDOJc5n
73 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 23:45:00.45 ] >>67-72 返事遅くなり申し訳ございませn。 レスありがとうございました。 >>68 ビットフィールドを調べました。 確かに便利だと思いましたが、ビット長が可変なので 使えないのかと思いました。 >>72 サンプルありがとうございます。 こんなに少ないロジックでできるんですね。 ただ、理解があまり出来ておりません ・数個ある条件式の意味 ・変数maskが何故こうしてやればいいのか。 ※ヘタレですません。 自分は必死こいて、ビットシフトやら、ビットマスクなどを 駆使してベタベタにコード書いてやっとできたんですけど、 72さんのサンプルを参考につくり治したいと思います。
74 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 09:02:31.82 ] 他のスレッドを実行しているCPU番号を取得するAPIはありませんか? GetCurrentProcessorNumberで自分のスレッドのCPU番号は調べられますが 他のスレッドのCPU番号はどうすればよいですか? 対象のスレッドは自分のコードではありません。 できればXPでも実現できる方法が知りたいです。
75 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 09:04:33.89 ] ttp://d.hatena.ne.jp/topiyama/20090623/p1 アセンブラ使えばできるらしい
76 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 12:37:20.36 ] その記事には行き着いたのですが、 他のスレッドからそれを実行しても意味がないと思うのです。
77 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 14:05:41.14 ] そんなもん取得して何がしたいのか
78 名前:デフォルトの名無しさん [2012/03/28(水) 14:10:32.52 ] >>67 をbitset使って書いたらキショくなったでござる ideone.com/LtgS7
79 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/03/29(木) 13:02:41.54 ] 他の関数に ジャンプ できますか?
80 名前: ◆QZaw55cn4c mailto:sage [2012/03/30(金) 05:09:54.89 ] >>79 制限付でsetjmp()/longjmp
81 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:26:51.70 ] 2種類の全く異なるクラスがそれぞれのポインタを利用してtree状に循環参照する時に ヘッダファイルの定義はいったいどう記述すればいいのですかね 一度だけコンパイラに参照されると片方でしか定義されないことになってしまってエラーになる ヘッダだけでvoid*型にしてcppファイルで形指定して参照するくらいしか思い浮かばないけどダサすぎる
82 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:29:47.58 ] クラス名だけ書いておけばいいって話ではなく?
83 名前:81 mailto:sage [2012/03/31(土) 00:50:38.47 ] すまん、出来ればhファイルだけで完結させたくて 関数のスクリプトも全部hファイルに記述しようとしてるんだけど 名前を入れるだけではnewの部分で形が認識できないとエラーになる
84 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 00:52:47.84 ] inline CLASS::func(){} を知らないて話し?
85 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 01:04:26.86 ] んーなんかなにがやりたいかよくわからんね エラーの出る最小コードとか作れない?
86 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/03/31(土) 14:18:41.39 ] RubyスクリプトをC言語に翻訳することできますか?
87 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/03/31(土) 14:19:49.58 ] >>81 >>83 ポインタのみ必要なら、class HOGEHOGE; って書いておけば?
88 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/03/31(土) 14:24:24.01 ] class HOGE1; class HOGE2; class HOGE1 { ... HOGE2* getHoge2(); ... }; class HOGE2 { ... HOGE1* getHoge1(); ... }; inline HOGE2* HOGE1::getHoge2() { return new HOGE2; }
89 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 16:06:16.23 ] 個人的にはツリーのノードにあたる部分のインターフェイスを定義してから 両方のクラスはそのインターフェイスを継承して作るのがいいんじゃないかと思うがどうか
90 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 23:48:24.66 ] VC++10のdebugビルドにおいてSTLのiteratorが有効か無効かどうかチェックが入るみたいなのですが、 これが障害となりboost::rangeにおけるemptyメンバやsizeメンバが使用できません。 原因は各種オペレーターオーバーロード時の動作に際して上述したチェックが入り、dereferenceできない内容ならばassertしてしまうからです。 これにより初期状態(例えば内部表現がnullptrのiterator)かどうかの判定ができません。 releaseビルドではチェックが入らないため問題なく扱えるのですが、どうしたら良いのでしょうか?
91 名前:81 mailto:sage [2012/04/01(日) 02:47:59.43 ] >>87 new するってことはデフォルトコンストラクタが必要 >>89 継承しても問題の根本が解決するわけじゃない a.h #pragma once class a { public: a(){} make_b(){new b();} } b.h #pragma once class b { public: b(){} make_a(){new a();} } と言った具合にcやcppを使わずJavaのようにhファイルのみでクラスを実装しようとした時に 双方向で参照可能にするようなコンパイラの定義方法が存在しないので困ってる
92 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 03:11:13.67 ] cppに定義かけ c++じゃそれが普通だ
93 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 03:13:11.61 ] >>91 a.h,b.hをまとめてab.hに書く 普通はcppに書くけどね
94 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 08:48:02.88 ] >>93 テンプレートでなら見たことがあるな、そういう書き方。 普段からC/C++に触ってるわけじゃないので、今でもやるのかどうかは知らないけど。
95 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 11:17:11.93 ] いくら初心者でもそのコードはひどい… あとC++とJavaは単に文法が似ているだけで中身全く別の言語なんで "Javaのように"できることはほとんどないと思ったほうがいい むしろ危険
96 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 17:59:11.24 ] 質問させてください。 環境:Windows7 32bit , Visual Studio 2005 fopen("r+")で取得したファイルポインタに書き込む際、 "w"で開いたかのように書き込む(内容をすべて上書きする)方法はありますか?
97 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 18:27:13.37 ] _chsize()または_chsize_s()
98 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:16:45.57 ] >>97 ありがとうございます!
99 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 02:02:15.72 ] >>91 なんでそんな上から目線なの? もうbをaの内部クラスにしちまえよ
100 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:28:15.11 ] vc10で銀行丸めの関数を作りたいのですが 単純に実装すると、負かどうかや、小数部がちょうど0.5のとき など分岐だらけになってしまいます。 分岐のない高速なアルゴリズムを教えていただけませんか?
101 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 10:48:00.45 ] 分岐なしじゃ無理
102 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:09:16.62 ] その程度なら十分に高速そうだしなー
103 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 11:38:21.93 ] >>100 適当に楽に作れ。 あとでそこがボトルネッが判明してから手を出す。
104 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 13:38:52.92 ] >>100 cmov使ってみたら? 用途は違うけど分岐なくそうと思って昔SSEで書いたことがあるんだけど そのときはSSEレジスタへのロード&ストアが遅すぎて敗北した ぜひ試してみて結果を教えてほしい
105 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 22:57:35.42 ] >>hファイルのみでクラスを実装しようとした時に この前提がありえないからその悩み自体ゴミだ
106 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 23:18:05.81 ] メンバメソッドの規模をワンライナーに限定して使役関数はクラス外部に置けば有り得ない話じゃないな 内部構造と実装コードの癒着が少なくなる方向付けも出来るし
107 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 23:30:14.72 ] テンプレートならむしろヘッダファイルに書くのが普通
108 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 01:07:24.50 ] それって古いVCのテンプレート周りのバグ対策じゃね?
109 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 07:22:15.00 ] んなこたない 勉強すれ
110 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 10:07:30.06 ] いまだにヘッダにロジック書くバカがいるのかよ
111 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 12:38:32.98 ] テンプレートはしょうがねーべ。 あんまりロジック部分を別の翻訳単位に分離すると コンパイル時間が爆発的に大きくなるから。 どっかのブログで理論値と実測結果の両方を示して 「テンプレートは全部一つの翻訳単位に埋め込むと超速^^」 みたいなおもしろい結論(ただし上司に殺される)を出してなかったっけか
112 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 15:35:16.49 ] >>100 boostにあるんじゃね?
113 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 21:22:45.05 ] テンプレートはコンパイラから実装が見えないと実体化できないので、通常はヘッダに実装を書く 文法上はこの制限を回避するexportキーワードってのもあるが 現実はほとんどのコンパイラが実装してなかったし、C++11では削除された boostなんて全部ヘッダにロジック書いてる
114 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 22:39:46.72 ] C、C++、Windows API でファイル入出力など同じような関数がありますが 使い分ける基準などあるのでしょうか?
115 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 22:40:51.20 ] 自分が使いやすいの使えばいい
116 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 23:20:31.03 ] Visual C++とかGCCを使っている限りは Windows API使わないとUnicode入出力できんぞ。 (正確には、「できるがめんどい」・3・)
117 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 23:48:25.94 ] >>114 自分に必要な機能を持ってるものを選ぶ 機能的にどれでも要件を満たしているなら、使い勝手、パフォーマンス、移植性等を 考慮して自分にとってメリットの大きいものを選ぶ ただしWindowsの入出力ではUnicodeファイル名やラージファイル等をサポートしたい 場合、移植性はどのみち犠牲になってくるが ファイル入出力に関して言えば、例えばAPIでファイルを開いた後 _open_osfhandle() -> _fdopen() でファイルポインタを得てstdioを使う、といった複合技も可能だよ
118 名前:114 mailto:sage [2012/04/06(金) 00:12:50.72 ] >>115-117 返答ありがとうございます、まだ単純なファイル操作しかわかりませんが それぞれ区別が付くように調べてみます
119 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 10:23:09.39 ] gccの-Sオプションで吐かれるファイルにCのソースコードを埋め込むオプションはありますか? VC++でいう/FAsのようなものがほしいのですが
120 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 10:52:43.45 ] >>119 gcc -Wa,-adlh -g -c
121 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 21:26:46.42 ] ツリービューにイメージリストをセットすると、使用後イメージリストを削除する必要があるようです リストビューにイメージリストをセットすると、リストビューが勝手に削除してくれるようです 拡張コンボボックスのイメージリストは削除されるのでしょうか? また、仮にリソースリークしてもアプリケーションが終了すれば問題ないのでしょうか?教えてください
122 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 01:53:33.31 ] >>120 ありがとうございます やりたかったことはまさにこれで、FreeBSD上ではうまく動きました が、Windows上のh8300-elf-gccではエラーがでてうまく逝きませんでした(´・ω・`) もうちょっと調べてみます
123 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:36:29.92 ] どす窓のプログラムを書きたいのですが、 普段は別の処理をしていて、キーボードから入力があったときのみにそれに対して反応させるにはどうすればよいのでしょう?
124 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:51:23.67 ] 別の処理の内容次第
125 名前:123 mailto:sage [2012/04/13(金) 22:55:26.44 ] >>124 入門書を読み終えたので、STGでも作ってみようかと思ったのですが、どうしても入力待ちで停止してしまいます。 なにか良い方法はないでしょうか?
126 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:57:57.11 ] 標準関数だけで 何も押されてないということもわかる入力監視ってできるのかな? (getchar() は 入力があるまで止まるよね) 非標準関数なら環境によって色々あるだろうけど
127 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 22:59:49.04 ] 止まってることがそういうこと
128 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:04:42.46 ] kbhit()は?
129 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:06:15.27 ] 検索していたらkbhitというものがあるようですね こいつを試してみます
130 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:07:02.09 ] >>128 書き込む前に更新するの忘れてました kbhitで試してみます ありがとうございました
131 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 23:11:46.73 ] CUIなのか。 curses使え
132 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 01:22:10.10 ] autoconfで configure/make するようなソフトウェアを、Visual C++の cl.exe でビルドすることって出来る?
133 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 11:41:23.86 ] >>132 ものによるけど、VCでビルドすることを考えているものは、大体ビルド手段を 提供しているから、それがないものは簡単にはいかないと思った方がいい やって出来なくないものもあったけど、ソースの書き換えが必要だったり、 ビルドされる流れを理解する必要があったり、関連ライブラリの移植が必要だったりと、 かなり労力がかかったよ
134 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 18:32:12.77 ] どうしてテンプレートというものが出来たのでしょうか? せっかく型に厳密だったのに台無しじゃないですか?
135 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 18:53:32.49 ] >>132 MinGWで簡単にビルドできて(依存性が少ない)、かつC99で書かれていないなら 比較的容易にMSVC対応できる可能性は高い MinGWでもビルドが面倒くさかったりMinGWでもビルドできなかったりC99で 書かれているものは基本的に茨の道だが、これも難易度はケースバイケース Unixのシステムコールが使われているようなものでも、ある程度簡単に移植可能な ものもあるが、fork()あたりが使われているとそうはいかない
136 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 18:55:17.02 ] ああそうそう、C99もだがgcc拡張(gcc形式でのインラインアセンブラも含む) なんかもダメよ まあ細かい話だけど
137 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 21:11:26.93 ] >>134 複数の型に対応できるだけであって、厳密なのは大して変わらなくね?
138 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 21:16:56.68 ] テンプレートこそ型に厳密だよな
139 名前:デフォルトの名無しさん mailto:sage [2012/04/17(火) 22:01:52.37 ] >>134 は一体何を言っているんだ
140 名前: ◆QZaw55cn4c mailto:sage [2012/04/17(火) 22:03:09.58 ] qsort() をみよ。void * は事実上なんでもあり。
141 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 03:27:26.98 ] しかも何気ないCスタイルキャストでreinterpret_castとconst_cast を一気にやるとか凶悪な使い方が横行する。
142 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 07:56:28.43 ] #define const_cast Dont_use_constcast とかやりたくなるな…
143 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 12:10:36.84 ] C++は無理が多いな
144 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 12:15:06.88 ] するべきでないことが やりづらくなっているのはいいことだ
145 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:05:07.60 ] 最近C++始めたんだがどうやって覚えていけばいいのかわからない
146 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 23:38:42.82 ] >>145 まずはCを始めます。 次に、C++の入門書を読みます。 \(^o^)/
147 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 21:49:25.06 ] >>146 C++の得意分野というか、C++を習うとどんなことができるのだろうか。 馬鹿なことを聞くなと言われそうだが、プログラミングの腕を磨きたいと 思って。誰か教えてください。以前、C言語とFortran, Perl を やったことがあります。
148 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 22:06:11.64 ] コンテナはなかなか感動する
149 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 22:52:05.88 ] >>147 不可能をなくすことができる
150 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 01:19:38.32 ] >>147 とりあえず、windowsでGUIをもつソフト作ろうと思うとC++の知識が不可欠らしい。 自分はオブジェクト指向が意味不明で積んだw
151 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 01:32:31.40 ] 自コード内で多態とオーバーロードとstatic変数とADLさえ巧く避ければイイ言語だよ。
152 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 08:47:42.14 ] >>149 >>150 >>151 レスありがとうございました。 まさかレスが返ってくるとは思わなかったのでうれしかったです。
153 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 21:51:11.70 ] >>150 windowsのGUIは、api使ってC言語でできる というか、基本のapiはただの関数なので、C++である必要はない
154 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 02:57:43.35 ] リソースの破棄が簡単になったことだな。
155 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 19:34:54.96 ] いまC/C++でGUIソフト作るとき何使うのが一般的なんだろう。 win32api勉強してみたが本格的なもの作れる気がしないわ。
156 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 19:57:54.08 ] おすすめ fox SDL C# GTK HSP C++でないものをあるが、メインはC++DLLで作って呼び出せばいい・。
157 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 20:14:00.67 ] >>156 ありがとう FOXとSDLは初めて聞いたなぁ
158 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 22:58:28.93 ] Qtでいいじゃん
159 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 00:40:09.41 ] >>155 環境や目的によって変わってくるので 一通り使って消去法で選ぶのがいいと思うよ マルチスレッド対応なGUIツールキット欲しいわぁ
160 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 01:58:03.13 ] マルチスレッド対応GUIツールキットってどういう意味? マルチスレッド機能とGUIが一緒についてくるってだけ?
161 名前:デフォルトの名無しさん [2012/04/22(日) 16:22:53.86 ] GUI本体はイベントドリブンだな。
162 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 16:30:56.36 ] C++でメモリの再確保ってどうやればいいんでしょうか?
163 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 17:01:33.35 ] 使いまわせばいい
164 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 17:11:29.74 ] >>162 コンテナに要素を追加するとか realloc() を呼び出すとか
165 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 17:31:08.80 ] >>164 ありがとうございます。 C++ではmallocはあまり使わないと書いてあったのですが 再確保の場合コンテナを使うのが一般的なのでしょうか?
166 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 17:35:42.22 ] >>165 そもそも「再確保」を目的にすることが無い。 どうせコンテナの要素を動的に増やしたいんだろ。 標準ライブラリを使って素直なコードを書けばいい。
167 名前:名無しさん [2012/04/23(月) 15:05:45.62 ] 検索エンジン→心の病→西東京バス事件
168 名前:デフォルトの名無しさん mailto:sage [2012/04/23(月) 23:27:17.12 ] >>160 擬似コード書くと subthread() { App().MainLoop(Form()) } これがまともに動くもの。
169 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 01:28:50.39 ] Windowsで別のプロセスに属する2つのウインドウの上下関係を設定することはできますか? > SetParent 関数を使うと、ポップアップウィンドウ、オーバーラップウィンドウ、子ウィンドウの親ウィンドウを設定できます。新しい親ウィンドウと子ウィンドウは、同一アプリケーションに属していなければなりません。 ということらしいのですが・・・ なければイベントを捕まえて上下関係を設定しなおすことも考えているのですがちらつきそうで
170 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 01:43:22.31 ] >>169 スレ違い
171 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:38:02.17 ] 宿題で出されたこの問題が分からないのですが、誰か教えてくれませんか。 1〜9までの連続する数字の間に和・差・積の演算子(+, -, *)を適当に入れて、 式の値がちょうど 100 となる例を挙げよ(10とおりだけ書け)。 たとえば、 1 + 2 * 3 * 4 * 5 + 6 * 7 - 8 * 9 = 91 というような計算をする。ただし、この例では式の値が91となるので答えではない。
172 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:39:48.93 ] プログラム関係ないじゃん
173 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 10:38:37.42 ] >>171 C/C++の宿題片付けます 156代目 toro.2ch.net/test/read.cgi/tech/1328276597/ 291 :デフォルトの名無しさん:2012/02/16(木) 07:29:17.20 [1] 授業単元:知識と推論 [2] 問題文 探索によってパズルを解くプログラムを作成せよ(小町算) [3] 環境 [3.1] OS: Windows7 [3.2] コンパイラ名とバージョン: VisualStudio2010 [3.3] 言語: C言語 [4] 期限: 2/16 よろしくおねがいします>< 292 :デフォルトの名無しさん:2012/02/16(木) 08:52:44.46 >>291 小町算には変形ルールのやつもあるけど、 「1□2□3□4□5□6□7□8□9 = 100 という数式の□の中に、+,−,×,÷,空白 のいずれかを一つずつ入れる」でいいのかな? ttp://ja.wikipedia.org/wiki/%E5%B0%8F%E7%94%BA%E7%AE%97 293 :デフォルトの名無しさん:2012/02/16(木) 12:34:14.04 >>291 空白なし、*優先、/で小数部切り捨てなら↓ ideone.com/IjTzV
174 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 13:51:56.91 ] >>170 これは失礼
175 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 23:00:53.38 ] Win32質問箱に投稿したのと同じ質問ですが、 あちらは機能していないようなのでこちらで改めてお尋ねします。。 VS2010でWTLベースのアプリを作成しているのですが、ウィンドウ上でマウスポインタを 移動しているとき、Ctrlキーが押されている間だけポインタを変更したいのです。 しかし、クライアント領域内でポインタを動かすだけではWM_SETCURSOR メッセージが 送られず、ポインタを変更できません。 任意のタイミングでポインタを変更する方法はないでしょうか。
176 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 23:03:58.28 ] SetCursorってまんまのがあるじゃない
177 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 07:42:07.68 ] iphoneよくわからん nebulousってアプリでコーディングしてそのままmobileterminalでコンパイルしてんるだけど/nで改行してくれない さすが文鎮
178 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 07:49:48.78 ] /n
179 名前:デフォルトの名無しさん mailto:sage [2012/04/27(金) 07:59:41.41 ] 四時間位四苦八苦してたけどコンパイラとツールチェーンcydiaから再インスコしたら自己解決したわ
180 名前:デフォルトの名無しさん [2012/04/28(土) 16:54:19.12 ] メンバ変数の初期値は0ですか?
181 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 17:03:16.45 ] そんなこと無いので初期化しましょう
182 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 22:24:14.40 ] 仮引数の変数名を書くのと書かないのではパフォーマンスが変わったりしますか?
183 名前:デフォルトの名無しさん mailto:sage [2012/04/28(土) 22:44:40.57 ] 変わるわけねーだろ
184 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 08:50:02.98 ] えw
185 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 10:11:23.50 ] そりゃぁ、書くと書かないとで意味が変わらないコードだったら書かないのと同じだから差は出ないよ。 と言いつつ、>182, >183, >184が三人とも私と違う解釈をしていて話が噛み合っていないだけなんだろうけどね。
186 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 12:20:18.11 ] C++でもメンバ変数の初期値は不定なの?
187 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 12:28:18.78 ] 不定です
188 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 13:27:32.41 ] 太ぇ野郎だ
189 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:19:30.94 ] 不定っていうけど+にはならないよね。なんでか
190 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 14:26:13.94 ] >>189 それ 0xcd とかデバッグ時メモリ未初期化のデフォルト値が入ってるんじゃね
191 名前:デフォルトの名無しさん mailto:sage [2012/04/29(日) 15:27:09.55 ] >>189 フフフフフフフ
192 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 01:06:03.83 ] たまに フフフノフフフ になるよ
193 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 12:24:04.25 ] ならねーよ
194 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 12:25:36.33 ] そうでしたっけ?ウフフ
195 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:12:04.73 ] 漠然とした質問になってしまうが パーサを作ろうと思っているのだが、何か決まった作り方とかありますか? デザインパターン的な
196 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:26:53.12 ] 使えるライブラリを選んで使え
197 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:27:32.29 ] >>195 構文解析器 ja.wikipedia.org/wiki/%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90%E5%99%A8
198 名前:デフォルトの名無しさん mailto:sage [2012/04/30(月) 16:43:40.52 ] >>197 ありがとう 今までホント自己流でやってきたから情報ありがたい パーサライブラリとかもあるんかな?ぐぐってみる
199 名前:デフォルトの名無しさん mailto:sage [2012/05/01(火) 12:28:53.02 ] 構文解析器をゆっくり読むとひみつどうぐ風に聞こえる
200 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 01:44:51.75 ] VC拡張か普通の規格かわかりませんがoverrideを強制する方法はありませんか? class A{ virtual void func(void) = 0; }; class B : public A{ virtual void func(void) override; }; のようにoverrideがなければコンパイルエラーにしたいのですが 誰かがvoid A::func(int)のように変更した時にBの変更し忘れを検出したいというのが目的です
201 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 03:14:58.13 ] /we 3668 かな Windows使ってないけど。
202 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/02(水) 16:13:47.90 ] 素数判定プログラム エラトステネスの櫛とためし割りのハイブリッド ttp://www5b.biglobe.ne.jp/~NAS6/secret/index.htm 664579番目の素数検索 通常ルーチンprime4()int型3867ms 私のint型1654ms long long int型5897ms
203 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/02(水) 16:17:06.10 ] 初期化も時間に含めるのか分からん
204 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 22:33:34.50 ] 篩で高速化すんなら、アトキンの篩ぐらい使えよw
205 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/02(水) 22:55:55.73 ] アトキン調べてコード見た感じ私の方が速そうですよ メモリの都合で最大9番目までの素数の乗算の数の エラトステネスの篩を初期化して倍数掛け
206 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/02(水) 23:11:28.56 ] 逐次篩というやつだった
207 名前:デフォルトの名無しさん [2012/05/02(水) 23:13:35.71 ] 素数判定なんて相当研究されてるだろ。 例えばフリーで使える速いやつにかったら研究者になれるレベルだろ。
208 名前:デフォルトの名無しさん mailto:sage [2012/05/02(水) 23:16:55.32 ] >>205 9番目までなら
209 名前:デフォルトの名無しさん [2012/05/02(水) 23:27:31.70 ] AKS素数判定法は、与えられた自然数が素数であるかどうかを決定的多項式時間で判定できる、世界初のアルゴリズムである。 ja.wikipedia.org/wiki/AKS%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A%E6%B3%95 ミラー-ラビン素数判定法は、与えられた数が素数かどうかを判定する素数判定アルゴリズムの一種。 フェルマーの素数判定法や Solovay-Strassen 素数判定法と同じく、乱択アルゴリズムの一種である。 ja.wikipedia.org/wiki/%E3%83%9F%E3%83%A9%E3%83%BC-%E3%83%A9%E3%83%93%E3%83%B3%E7%B4%A0%E6%95%B0%E5%88%A4%E5%AE%9A%E6%B3%95 一般数体ふるい法 - Google 検索 www.google.com/search?q=%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E3%81%B5%E3%82%8B%E3%81%84%E6%B3%95 Adleman-Pomerance-Rumely - Google 検索 www.google.com/search?q=Adleman-Pomerance-Rumely&lr=lang_ja 暗号理論の研究動向 暗号技術調査室では、最先端の暗号基礎技術研究の動向を調査してきた。 暗号は、もはや軍事目的のみでなく、日常生活に欠かすことの出来ない基礎技術として、 一般消費者が意識するしないに関わらず頻繁に用いられている。 www.ipa.go.jp/security/fy10/contents/crypto/report/Cryptographic-Research.htm 一般数体篩法実装実験(6) : 格子篩 小さな因子を含まない数百ビット以上の合成数に対する素因数分解アルゴリズムとして,数体篩法が現在最も高速と考えられている. ci.nii.ac.jp/naid/110003296537 NTTら、768ビット合成数を一般数体篩法にて完全分解に成功 [2010/01/08] news.mynavi.jp/news/2010/01/08/055/index.html 素数判定に使用しているプログラムを紹介します。 www.geocities.jp/ayuchan_k_jp/prime/prime_program.html
210 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 01:39:29.76 ] 33,333,333個の素数判定 www.spoj.pl/problems/PRIC/
211 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:53:47.06 ] >>201 質問者は確実にC3668などを発生させられるために overrideの使用を強制したいと言っているように思われる。 俺もあれば使いたいんだけど、見当たらないんだよね……。
212 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 20:11:40.53 ] class Aがあるヘッダを読み取り専用にする
213 名前:デフォルトの名無しさん [2012/05/04(金) 02:19:06.34 ] 1,2,3,4,5,6,7,8,9,10,11,12,13,...という数列があって、それを 1,2,3,4,1,2,3,4,1,2,3,4,1,...(1,2,3,4の繰り返し)に対応させたいんですが、 IF文とか3項演算子とかを使わずにできますか? %を使うと1,2,3,0,1,2,3,0になって上手くいきません。
214 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 02:21:52.91 ] ((n-1)%4)+1
215 名前:デフォルトの名無しさん [2012/05/04(金) 02:55:08.02 ] ありがとうございました。
216 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/04(金) 18:00:53.36 ] 二次篩法を実装したけど 大きな数じゃないと処理が重くて出番がない
217 名前: ◆QZaw55cn4c mailto:sage [2012/05/04(金) 18:04:29.39 ] >>216 大きな素数(メルセンヌ数など)の原始根を求めたいんだが、なんかいい方法はないか? 素数自体は 2^1000 程度、原始根は 2 とか 3 とかじゃなくて、300〜500 前後のものがほしいのだが。
218 名前:デフォルトの名無しさん [2012/05/04(金) 18:27:33.29 ] 原始根と指数 aozoragakuen.sakura.ne.jp/suuron/node37.html
219 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/04(金) 18:39:10.94 ] 二次篩法とためし割りでいいんじゃない
220 名前:デフォルトの名無しさん [2012/05/04(金) 18:39:56.79 ] 原始根 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892 mailsrv.nara-edu.ac.jp/~asait/c_program/sample/primitive.htm detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1316937973 www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm homepage2.nifty.com/socialist-consort/agora_faith/PrimitiveRoot09.html
221 名前:デフォルトの名無しさん [2012/05/05(土) 07:00:10.49 ] ある整数が素数だと分かってなになるんだ?
222 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 07:04:55.38 ] わかる仮定が大事 あと暗号で素数を利用してるケースが多々あるとか
223 名前:デフォルトの名無しさん [2012/05/05(土) 07:31:43.91 ] そういう意味じゃなくて・・・ その手の話は、コンピュータサイエンスやってる科学者だろ アプリケーションを作成するようなレベルで素数なんて使うか?
224 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 09:15:25.97 ] 実用的な使い方ではないけど、DHの理論が成立することを確認するとか?
225 名前: ◆QZaw55cn4c mailto:sage [2012/05/05(土) 10:31:37.03 ] >>224 ピンポン!原始根って虱潰ししかないのでしょうかね。 2^30 くらいで青息吐息
226 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 13:00:54.54 ] 素数を使ったモジュラアルゴリズムは山ほどあるだろ。 有限体F_pにおいてFFT乗算を用いるのに使ったり、 環Rがベースとなる多項式R[x]のgcdを高速に求めたり(このプロセスは先に述べた高速算術に必要になる)。 特に後者は、古典的アルゴリズムを使った時の中間結果の有理数の分子及び分母が膨大な数になるのを防ぐために、 一度n in R[x]/<p>で計算を行った後にnをR[x]の元に復元する方法がある。
227 名前:デフォルトの名無しさん [2012/05/05(土) 13:19:52.59 ] mod19の原始根をすべて求めよという問題があるのですがひとつひとつ表を埋めていく... - Yahoo!知恵袋 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
228 名前:デフォルトの名無しさん [2012/05/05(土) 13:23:43.62 ] 一個原始根を見つければ、あとは低計算量ですべて出せるはず(証明はしらんが簡単だろう)で 小さいやつから平方剰余の相互則を使って判定しろということ。 素数判定のように高度な知識はいらんだろ。初等整数論だろ。
229 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 13:30:48.88 ] それほど面倒でも無いでしょ xxxxxxx0 xxxxx101 xxxx1001 xxx10001 10000001 下桁に0が並ぶ数字は全部除外できるんだから
230 名前:デフォルトの名無しさん [2012/05/05(土) 15:30:26.07 ] >>227 のやり方で、たとえばp = 123456789の原始根をやってみようとしたが、 (素数かは知らないが)もしpが素数だとしてp-1の素因数分解が必要となり実質的には素数判定より手間掛かるな。
231 名前:デフォルトの名無しさん [2012/05/05(土) 15:44:17.44 ] 一般数体篩法のオープンソース GGNFS 素因数分解には試し割り法, モンテカルロ法, 楕円曲線法, 二次篩法など多数のアルゴリズムが存在するが,その中でも一般数体篩法は100 桁以上の数を分解するには現在知られる最速のアルゴリズムである. 2005年には 200桁の数(rsa200)が一般数体篩法で分解された.本研究では,オープンソースの一般数体篩法ソフトウェアGGNFSについて,性能測定を行なう. cryptology.cocolog-nifty.com/blog/2008/01/ggnfs_b47a.html ここでは、素因数分解のための各種アルゴリズムについて解説する。対象は、以下のとおり。 Brute force method ρ method(Pollard, Brent) p-1 method p+1 method 連分数法 複数多項式二次ふるい法 楕円曲線法 www.asahi-net.or.jp/~kc2h-msm/mathland/math12/index.htm まず、素因数分解のためのプログラムを入手する必要がある。 Windows PC 上で動作する主なものとしては、 factor (Windows (DOSプロンプト)) ppmpqs (Windows (DOSプロンプト), Linux) UBASIC (Windows (DOSプロンプト)) SNFS (Windows (DOSプロンプト)) 等がある。 www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/howto.htm 分解するにあたっての方針(戦略)について まず、速いマシンを長時間利用できる場合、90桁以下の数をppmpqsで分解することを薦める。これは、時間さえかければ、確実に分解できるというメリットがある。 マシンがそれ程速くない場合、途中で中断しなければならない場合、90桁以上の数を対象とする場合は、GMP-ECMを使うことを薦める。 www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/howto.htm
232 名前:デフォルトの名無しさん [2012/05/05(土) 15:51:46.64 ] GGNFSはNFS法(the Number Field Sieve method; 数体ふるい法)を用いる素因数分解プログラムです。 SNFS法(the Special Number Field Sieve method; 特殊数体ふるい法)と GNFS法(the General Number Field Sieve method; 一般数体ふるい法)の両方に対応しています。 homepage2.nifty.com/m_kamada/math/ggnfs_ja.htm GMP-ECMはECM(Elliptic Curve Method; 楕円曲線法)を用いる標準的な素因数分解プログラムです(オプションでP-1法やP+1法も選択できます)。 小さな素因数を手早く抽出することができるので、SIQS法やNFS法の前処理として、 あるいはSIQS法やNFS法を適用するには大きすぎる合成数を分解したいときに利用されています。 homepage2.nifty.com/m_kamada/math/ecm_ja.htm Msieve は MPQS 法 (the self-initializing Multiple Polynomial Quadratic Sieve; 自己初期化複数多項式二次ふるい法) と GNFS 法 (the General Number Field Sieve; 一般数体ふるい法) を用いる素因数分解プログラムです。 前処理として P-1 法、P+1 法、ECM (Elliptic Curve Method; 楕円曲線法) なども実装しており、さまざまな数に柔軟に対応します。 homepage2.nifty.com/m_kamada/math/msieve_ja.htm GGNFS - A Number Field Sieve implementation www.math.ttu.edu/~cmonico/software/ggnfs/index.html 一般数体ふるい法 ソース - Google 検索 www.google.com/search?q=%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E3%81%B5%E3%82%8B%E3%81%84%E6%B3%95+%E3%82%BD%E3%83%BC%E3%82%B9
233 名前:デフォルトの名無しさん [2012/05/05(土) 16:04:39.12 ] 素因数分解にかかるコストより、p-1乗まで計算した方が良いんじゃないかと思ったが。 空のループでも2^31くらいやったら相当時間かかるだろうから、やっぱ素因数分解からだな。
234 名前:デフォルトの名無しさん [2012/05/05(土) 16:06:29.11 ] ◆QZaw55cn4c は、上のライブラリを組み合わせて、原始根出力プログラムを完成してくれ。
235 名前:デフォルトの名無しさん [2012/05/05(土) 16:12:08.31 ] ρ Method (ρ法) 基本的にはモンテカルロ法であり、算出される因数はN,pの大きさには無関係であるが、 経験的には10桁以下程度の大きさの因数pを算出することが多いため、素因数分解の初期フェーズとして使われることが多い。 P−1 method(P−1法) 数学的にはフェルマーの小定理を根拠としており、最も理解しやすいアルゴリズムである。 算出される因数pに対し、p−1が小さい素因数の積で構成されているものを対象とするため、 20桁以下ぐらいの素因数pの算出が可能であり、値によってはもっと大きな素因数も算出されることがある。 ρ法の次のフェーズとして、20桁程度までの素因数をたたき出す時に使用することが多い。 Elliptic Curve Method (楕円曲線法) 数学的には、楕円曲線 y2=x3+ax+b 上の有理点が、mod N で考えた場合のある演算に対してアーベル群を作るため、 Nよりも小さい位数で0(mod N)となる場合があり、その時の位数mとNのgcd をとることにより、Nの素因数を算出する方法である。 複数多項式2次ふるい法で分解できない桁数の数に対して用いる。30桁以下程度の素因数を算出する。 Multiple Polynomial Quardratic Sieve(複数多項式2次ふるい法) 数学的には、フェルマーの方法の拡張版であり、 x2−y2≡0(mod N) の解を多数構成し、求める。 ある桁数以下の数を確実に分解するため、小さい数についての素因数を求める場合、 または、p−1法、楕円曲線法で小さい因数は出しきったと思われる数について、完全分解を求めたい時に適用する。 Number Field Sieve(数体ふるい法) 2005年頃から、プログラムが公開されるようになった。 一般の数に関して、100桁を越えると、複数多項式2次ふるい法で分解するよりも、一般数体ふるい法でやった方が速い。 また、分解対象の数が、係数の小さい6次以下の多項式で表現できる場合、 特殊数体ふるい法が絶大な威力を発揮し、Pentium 4 マシンで、 160桁ぐらいまでの分解が可能である。 www.asahi-net.or.jp/~kc2h-msm/mathland/matha1/matha101.htm
236 名前:デフォルトの名無しさん [2012/05/05(土) 19:21:28.28 ] Cの質問です SFMTで作った64bitのunsigned longの乱数があります これを1bitずつ上位ビットor下位ビットから array[0] = 1; array[1] = 0; ・ ・ ・ というように64個の配列(intでもboolでも何でもOK)に入れたいんですが、どう書けばいいでしょうか 最終的に、ループで回して0と1の行列は長い(数千万の)配列にしたいので 速いコードだとありがたいです
237 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 19:58:50.80 ] unsigned long r64;//random for(int i = 0 ; i < 64 ; i++) { array[i] = (r64>>i)&0x01; }
238 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 20:07:44.12 ] >>236 そんな効率の悪そうなことをするためのコードが速くて本当に何か意味があるのかね?
239 名前: ◆QZaw55cn4c mailto:sage [2012/05/05(土) 20:21:03.06 ] 今求めているのは、 素数かどうか不明のものを素因数分解すること ではなく 既知の巨大素数の原始根を求めること なのですが? うーん。全然わからん。
240 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 20:37:55.62 ] 既知の分なら求めず表にするれ
241 名前:デフォルトの名無しさん [2012/05/05(土) 20:43:25.15 ] >>239 これ。 mod19の原始根をすべて求めよという問題があるのですがひとつひとつ表を埋めていく... - Yahoo!知恵袋 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892
242 名前:デフォルトの名無しさん [2012/05/05(土) 20:59:34.72 ] mod p での一般的な原始元を見つける方法 1.平方剰余の性質を使って平方非剰余の根aをみつけます。2.aが原始元でない場合は平方剰余の根bをaに掛けa×bを計算します。 mod p ではp-1と互いに素となる原始根のべき乗となるものを探すわけです。 mod 63823の原始元の求め方 第2補充法則 (2/p)=(-1)^((p^2)-1)/8) より(-1)^((63823^2)-1)/8)=1 で2は平方剰余 (q/p)(p/q)=(-1)^( ((q-1)/2)×((p-1)/2) )を利用して、(3/63823)(63823/3)=(3/63823)(1/3)=-1 なので、3は平方非剰余 p-1=63823-1=2×3×11×967 3^(2×11×967)=16721 で3次剰余ではない。3^(2×3×967)=28107 で11次剰余ではない。3^(2×3×11)=40828 で967次剰余ではない。 したがって3は原始根 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892 平方剰余の相互法則 - Wikipedia a と p とが互いに素であるとき、合同式 upload.wikimedia.org/wikipedia/ja/math/9/3/1/9311f58ff72132d811ba22cdee7c8d9e.png が解を持てば、 a は p を法として平方剰余であるといい、そうでないとき平方非剰余であるという。 (p, a) を a と p の最大公約数とするとき、次の記号 upload.wikimedia.org/wikipedia/ja/math/1/4/d/14d936e40558c1f206d4394943f794b6.png を、アドリアン=マリ・ルジャンドルにちなんでルジャンドル記号と呼ぶ。 [編集] 相互法則平方剰余の相互法則は整数 a が奇素数 p を法として平方剰余であるか否かを見いだす法則である。 p, q を相異なる奇素数とするときに、 upload.wikimedia.org/wikipedia/ja/math/b/c/b/bcb6ec45662135c3c218a771577e9ef7.png が成り立つ。 また、このほかに以下の第1補充法則、第2補充法則が知られている。 第1補充法則: upload.wikimedia.org/wikipedia/ja/math/d/f/3/df3f591f53cfc80bdea6e5d7e74db393.png 第2補充法則: upload.wikimedia.org/wikipedia/ja/math/f/0/3/f03b9412c25ac66daef4571029a536a6.png またpとa、bが素であれば、 upload.wikimedia.org/wikipedia/ja/math/7/9/0/790121bd3962a9abf69e1a69448e134d.png
243 名前:デフォルトの名無しさん [2012/05/05(土) 21:05:39.49 ] 原始根を見つけるのに平方剰余の相互法則を使うのは定番らしい。証明説明。 nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf aozoragakuen.sakura.ne.jp/suuron/node41.html www.geocities.jp/ikuro_kotaro/koramu/1548_p1.htm pisan-dub.jp/doc/2011/20110114001/5_6.html www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm
244 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 21:11:13.23 ] >>236 >>237 のを使うぐらいしかないんじゃない? それかいちいち計算せずに、関数を用意しておくとか? int get_bit(ulong r64) { return (r64>>i)&0x01; } おそらく>>236 のしようとしていることは非効率的で、 オリコウでない方法だと思うよ。
245 名前:デフォルトの名無しさん [2012/05/05(土) 21:21:22.96 ] 平方非剰余の数が原始根候補になり、素因数分解を使い原始根を確定させる。 奇素数 p を法とする原始根 g は p を法として平方非剰余である. nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf 法997では、位数は996の約数になるので、aが、997の原始根であることを確かめるには、996=2・2・3・83 に注意して、a^498≠1、a^332≠1、a^12≠1 かどうかを調べれば十分。 www004.upp.so-net.ne.jp/s_honma/algebra/algebra21.htm
246 名前:デフォルトの名無しさん [2012/05/05(土) 21:39:15.70 ] 素因数分解が出来ていれば全ての原始根も求められる。一つ見つかっていた場合。 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235764892 mod19の乗法群は位数18の巡回群になります。 18=2×3×3 なので 2, 3 と互いに素な原始元の冪乗は全て原始元になります。 原始元は{2,3,10,13,14,15}ですが、 このなかのどれか一つを選択してgとした場合 g,g^5,g^7,g^11,g^13,g^17 は全て原始元になります。
247 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 22:08:34.97 ] >>244 別な方法で実装しました 要するに長い行列に対してm-sequenceでディザリングをしたかったのですが 後で処理をするためにディザリングの配列は残しておかねばなりません なにかいい方法がありますか?
248 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 23:29:30.87 ] ありますよ。ちょっと待って下さいね。
249 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/05(土) 23:43:14.24 ] n番目の素数の概算値Paは Pa=2.32nlogn+2n で大体出せた
250 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/05(土) 23:54:41.30 ] あ、調べたら Pa=nlogn+nloglogn って書いてた
251 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 00:02:10.05 ] 調べた方が精度悪いや
252 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 00:03:17.22 ] 荒らしかよtwitterか数学板にでも行けよ
253 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 10:44:31.59 ] >>252 さすがです
254 名前:デフォルトの名無しさん [2012/05/06(日) 11:00:33.25 ] >>239 すべての原始根をもとめるのに素因数分解なしで高速に求められるのがあるのか?
255 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 11:53:07.35 ] n番目の奇素数を正確に出す式あるだろバカか
256 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 13:04:47.55 ] あったら暗号が使えなくなるか あっても指数時間の計算でしょ
257 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 13:19:19.66 ] 精度改良しましたが Pa=2((0.45loglog(logn+0.25)+1.12)nlogn+n) は多項式時間の概算計算す
258 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 13:56:39.90 ] 質問の意図や前提をくみ取れない糞質問 が多い。それで回答者が逆質問をしたり 悪口を言ったりする。それを前もって思 い描く力が絶望的に欠如してるに違いない。 スーパーハッカーだけが意図を理解できる。 レアなそういう神が颯爽と登場する予感。
259 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 14:24:03.05 ] 質問です 4年ほど前にやっていたことがあって、再度VisualStudio2008C++EEを落としてみたんですが、色々変わったんでしょうか? 講座サイトを見ながらやっているんですが、新規作成→追加で「C++ファイル」ではなく「C++クラス」と出てきてしまいます 試しに作ってみると、.cppに初めから何か書かれているんですが…
260 名前:デフォルトの名無しさん [2012/05/06(日) 14:26:27.52 ] 変わりなし。 嫌ならコマンドラインでコンパイルしたら良い。
261 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 14:26:55.62 ] 空のプロジェクトをチェックして ソースファイルフォルダ右クリックで追加すればいい
262 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 14:30:54.14 ] ありがとうございます、助かりました! .cppはその下に記述すれば良さそうですね。
263 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 14:51:55.93 ] n番目の素数の概算がでるから その前後調べて当たったら暗号無効化なの?
264 名前:デフォルトの名無しさん [2012/05/06(日) 15:00:05.08 ] 素数の個数と、素因数分解は別だろ。 暗号解読では素因数が判明しないとダメだろ。
265 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 15:12:59.72 ] じゃあ、複二次式で四次篩作ればどうなん?
266 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 15:14:54.57 ] 素因数分解の結果をキャッシュしてるから、素因数分解なんか一瞬だ
267 名前:デフォルトの名無しさん [2012/05/06(日) 15:21:11.34 ] サルにもわかるRSA暗号: 解読法と素数 www.maitou.gr.jp/rsa/rsa14.php
268 名前:デフォルトの名無しさん [2012/05/06(日) 15:25:46.00 ] 無理。 2003 年の年末時点では素数と素数を掛けた数が 174 桁の数が、 100 台の業務用コンピュータで協調計算させて 3 ヶ月で素因数分解できることが実証されています。 一方、現在の RSA暗号 では一般的には素数と素数を掛け合わせた後が 310 桁にもなる数を用いています。 これでは、現在の数学で巨大な素因数分解を行うには、神をも味方につけた超人的な運を手に入れるしかないでしょう。 確率的には、残念ながら競馬やパチンコ、宝くじとは比べ物になりません。 www.maitou.gr.jp/rsa/rsa14.php
269 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 15:55:01.73 ] >>247 聞いてきましたわ。 579 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 01:28:04.90 画像処理の質問ではないな。 unionって知ってる? unsigned longをbit配列と同意義で読み替えてやればいい。組み込み系でよく使う手法だがや 580 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 04:42:09.66 >>578 ビットフィールドでググれ 581 名前:デフォルトの名無しさん [sage]: 2012/05/06(日) 04:44:12.99 ただ速くしたいなら素直にビット演算としてSIMDで書いたほうが速いだろ
270 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 16:28:18.94 ] x^4-a^4=(x^2+a^2)(x^2-a^2) 使って四次篩作れば 310桁は4桁計算だけど? 二次篩でも17桁
271 名前:デフォルトの名無しさん [2012/05/06(日) 16:31:58.50 ] しらねえが。 1024ビット=310桁の素因数分解が一定時間で安定して出来るアルゴリズムを開発したら 研究所や大学からお呼びがかかるだろう。
272 名前:デフォルトの名無しさん [2012/05/06(日) 16:41:15.73 ] NTTら、768ビット合成数を一般数体篩法にて完全分解に成功 2010/01/08 NTTは1月7日、スイス連邦工科大学ローザンヌ校(EPFL)、独ボン大学、フランス国立情報学自動制御研究所(INRIA)、オランダ国立情報工学・数学研究所(CWI)との共同研究により、 素因数分解問題において、従来の世界記録である663ビット(10進200桁)を上回る、 768ビット(10進 232桁)の合成数に対して、一般数体篩法による素因数分解を達成したことを発表した。 NTTらは今回、700ビットを超す素因数分解を達成したが、これは将来的にRSA暗号で使われている1024ビットの素因数分解も 達成される可能性があることを示唆することとなり、より高い強度かつ効率的な暗号技術を利用する必要性が高まることを意味する。 研究内容は、巨大な合成数に対して現段階で最も高速な解法として知られている一般数体篩法を用いて実施された。 篩処理は、全体の計算量の大半を占めるが、比較的容易に分散計算可能であることから多数の参加組織により並列に計算を行った。 処理は主にNTT研究所、EPFL、ボン大、INRIA、CWIにある多種多様のPCやクラスタを用い、 全体でおよそOpteron 2.2GHz換算で1,500年かけたのと同程度の計算量を要した。 また、理論的に最も計算料を要するステップの1つである線形代数は、分散計算が困難であり、今回は少数のクラスタを利用し、 それぞれのクラスタの速度や空き時間が異なっていても効率的に計算できる手法を開発・利用。 NTT研究所およびEPFLのクラスタ、またINRIAはフランスにあるALADDIN-G5Kを効率的に用い、 filteringで生成された疎行列からなる連立方程式を解いた。 Opteron 2.2GHz換算でおよそ155年の計算量を要した結果、分解に利用可能な解が得られたとする。 その結果、最終ステップとなる平方根(代数的数の平方根の計算及び最小公約数の計算)では、 EPFLに設置された計算機を用いることで、数時間で以下の解を得たという。 なお、同結果を受けてNTTでは、NTT研究所にて暗号技術全般の安全性を継続的に評価していくとするほか、 次世代暗号として楕円曲線上の演算規則を利用した新しい公開鍵暗号方式「楕円曲線暗号」の普及にも努めていくとしている。 news.mynavi.jp/news/2010/01/08/055/index.html
273 名前:デフォルトの名無しさん [2012/05/06(日) 16:49:32.43 ] 暗号アルゴリズムの危殆化 www.nic.ad.jp/ja/newsletter/No44/images/0800_8.gif www.nic.ad.jp/ja/newsletter/No44/0800.html NTTなど、公開鍵暗号の素因数分解問題で768ビット整数の分解に成功 分解に要した計算資源は1700コア・年としている。デュアルコアのCPUを搭載したコンピュータなら、850台程度あれば約1年で分解できる計算になる。 実際にはNTT情報流通プラットフォーム研究所など5研究機関は2007年から分解を始め、PCクラスターなど300台程度のコンピュータを用いて、約3年かかったという。 itpro.nikkeibp.co.jp/article/NEWS/20100108/343056/ NTT、232ケタ整数の素因数分解に成功−世界記録を更新 現在使用の309ケタはあと10年は大丈夫! highsociety.at.webry.info/201001/article_33.html
274 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 16:57:07.10 ] ttp://www5b.biglobe.ne.jp/~NAS6/secret/index.htm 四次篩実装 2^n次篩も簡単に作れます
275 名前:デフォルトの名無しさん [2012/05/06(日) 17:09:31.65 ] 一般・特殊数体ふるい法が現在最速ってあるし実際の記録更新もそれだが。 素因数分解 - Wikipedia 2005年5月、200桁の合成数 RSA-200が素因数分解される(一般数体ふるい法、Bahr, Boehm, Franke, Kleinjung) 2006年8月、10381 + 1 から67桁の素数が分解される(楕円曲線法、B. Dodson) 2006年9月、7352 + 1 の約数として現れる128桁の合成数が素因数分解される(一般数体ふるい法、情報通信研究機構、富士通、富士通研究所) 2007年5月、21039 ^ 1の約数として現れる307桁の合成数が素因数分解される(特殊数体ふるい法、NTT、ドイツのボン大学、スイス連邦工科大学との共同研究) 2010年1月、232桁(768ビット)(NTT、スイス連邦工科大学ローザンヌ校(EPFL)、独ボン大学、フランス国立情報学自動制御研究所(INRIA)、オランダ国立情報工学・数学研究所(CWI)。一般数体ふるい法。300台PCの並列計算処理。約3年) 改訂多重基底多項式篩法(MBPS2、Multiple Base Polynomial Sieve 2nd) 2006年8月に考案したMBPSの改良版。 本方式で世界記録に挑戦する。原理プログラムを作成し、現在は試作プログラムの作成中 試作プログラムが完成すれば、ほぼ計算量の予測が可能であるが、本方式で数年以内に1024ビットの RSA暗号の解読は可能になると思われる。 MBPS(多重基底多項式篩法)に対して、多項式f(x)を法とし、素イデアル基底で分解できるイデアルの積 で作られるイデアルも素イデアル基底で分解できる、特長を利用した方法。 www.cs.t-kougei.ac.jp/nsim/RSA.htm GNFS176 2005年4月22日、我々のチーム(下記)は 11^281+1 の約数である 176桁の合成数を「一般数体ふるい法(GNFS)」で分解した。 www.rkmath.rikkyo.ac.jp/~kida/gnfs176.html
276 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 17:15:12.33 ] 一人だけでも生き残ろうと…未来貯蓄銀会長密航試み逮捕 営業停止審査を受けている未来貯蓄銀行のキム・チャンギョン会長が4日、中国へ密航しようとしていたところを、 仁川(インチョン)港で海上警察に逮捕されたとSBSが単独報道した。 報道によれば、海上警察は逮捕したキム会長の身柄を不良貯蓄銀行捜査を担当する、 貯蓄銀行不正合同捜査チームへ送る予定だと伝えられた。報道によればキム会長は、 5日午前8時に予定されていた貯蓄銀行経営評価委員会に出席して、 営業停止前に最後の意見を陳述するようにとの金融当局の通知を受けた後、 中国へ密かに渡航しようとしていたことが分かった。 一人だけでも生き残ろうと…未来貯蓄銀会長密航試み逮捕 韓国語 [05/05] news.donga.com/Society/3/03/20120505/46025772/1
277 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 17:16:14.77 ] 2^n次篩で世界記録楽勝す 実験するのにはデータ型のビットを増やしたクラス作んなきゃ ならないけどめんどい
278 名前:デフォルトの名無しさん [2012/05/06(日) 17:24:37.82 ] たとえば数分で可能な数で比較して、このソフトより速いんだったら少し信用する。 GGNFSはNFS法(the Number Field Sieve method; 数体ふるい法)を用いる素因数分解プログラムです。 SNFS法(特殊数体ふるい法)とGNFS法( 一般数体ふるい法)の両方に対応しています。作者はChris Monicoさんです。 homepage2.nifty.com/m_kamada/math/ggnfs_ja.htm
279 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 17:35:01.58 ] なんか色々インストールしなきゃならないからやだな Long long intなら確認済みだから良いや
280 名前:デフォルトの名無しさん [2012/05/06(日) 17:49:32.41 ] Windows Factoring Software Binaries (64bit & 32bit) gilchrist.ca/jeff/factoring/index.html gilchrist.ca/jeff/factoring/benchmark.html gilchrist.ca/jeff/factoring/pseudoprimes.html GGNFS suite プロジェクト日本語トップページ - SourceForge.JP sourceforge.jp/projects/sfnet_ggnfs/
281 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 17:50:28.40 ] 調子にのって8乗してた訂正
282 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:08:31.98 ] 二次篩 x^2-a^2=(x+a)(x-a) 複二次式で四次篩 x^4-a^4=(x^2+a^2)(x^2-a^2) 同様に八次篩、十六次篩。。。
283 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:10:45.55 ] 以上桁は無意味
284 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:24:01.64 ] 私は世界の鍵を持っているbyスイーツ w
285 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 19:26:14.07 ] >>269 なるほど、そんなのあったなぁ ビットフィールドでやってますた
286 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:30:49.59 ] あ、十六次篩、二百五十六次篩か
287 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:32:52.70 ] コード的にsqrtのネストなので
288 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:36:05.13 ] 指数は二倍ずつか
289 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 19:37:48.46 ] >>283 ある日突然道端のオヤジが公然わいせつオナニーを始めたところを想像してほしい 嫌だろ?
290 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:41:29.02 ] 勘違いを訂正 ちゃんと判定出来るよ
291 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 19:44:27.00 ] 2^n次篩だから桁は無意味だから 他の暗号方式を考えないとね
292 名前: ◆QZaw55cn4c mailto:sage [2012/05/06(日) 21:47:31.01 ] >>254 リンク先をいろいろ紹介していただいてはいるのですが、難しくて私には一生理解できないだろうと思います。 そこで申し訳ないのですが、巨大素数の原始根を求めるために素因数分解が必要となる道筋を、もしよろしければ教えていただけないでしょうか? 簡単に試行してはみたのですが、2^31 で丸一日かかる有様です。あと手を打つとすればマルチスレッド化でしょうが、手元のは屁ノムx6 だしなあ。 ideone.com/In1SB (java でごめんなさい) なお全部の原始根を求める必要はなくて 300〜500位のものが数個手に入ればいいかと思います。
293 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 22:03:24.00 ] だからC/C++じゃないならよそでやってくれと
294 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 22:06:14.59 ] 素因数分解ならn次篩使えば出来るよ ソース見てわからなかったらゴメン
295 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/06(日) 22:11:25.74 ] 二次篩をネストしただけだから
296 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 22:25:01.22 ] 2ch初心者も歓迎するスレです
297 名前:デフォルトの名無しさん [2012/05/06(日) 23:50:19.40 ] >>292 たとえばp-1= 7*11*13として3が原始根を確かめるには。(pは素数でないから例として良くないが) ラグランジュの定理から、p-1の全ての約数x(p-1を除く)に対して、3^x ≠ 1 (mod p)であることをいえばよい。 具体的には、3^(7*11) ≠ 1 (mod p)、3^(11*13) ≠ 1 (mod p)、3^(7*13) ≠ 1 (mod p)でいい。 ラグランジュの定理 (群論) - Wikipedia G を有限群とし、H を G の部分群とする。このとき、H の位数は、G の位数を割り切る。
298 名前:デフォルトの名無しさん [2012/05/06(日) 23:55:25.56 ] >>292 簡単に言えば、Z/pZの元 aのn乗が1となるのは、nはp-1の約数に限る。(ラグランジュの定理) p-1以外では1とならなかったら原始根。
299 名前: ◆QZaw55cn4c mailto:sage [2012/05/07(月) 01:25:25.23 ] >>297 なるほど、定義どおりにいけば、n が p について原始根であるかどうかをみるのに、現状では n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) をみなければならない ところが、教えていただいた方法では p - 1 の約数についてのみ、と個数を絞り込むことができる のですね。仮にメルセンヌ素数 2^1279 - 1を目標にすると、 2^1279 - 1 = 2(2^640 + 1)(2^320 + 1)(2^160 + 1) .... (2^5 + 1)(2^5 - 1) まで因数分解できるので、個々の因数を素因数分解していくと、チェックしなければならない場合の数が激減しますね。少なくとも 2^1279 とおり、ということはないはず。 あとは何が原始根の候補となりうるのかが判別すればいいのですが、これは、>>292 でも使用しているのですが、計算量が増えるにしても 2 から順次チェックするのが絞り込みやすいのかもしれません。 しんどいですけれども。
300 名前: ◆QZaw55cn4c mailto:sage [2012/05/07(月) 01:26:49.83 ] >>299 ×n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) をみなければならない ○n^1, n^2, n^3, ... n^(p-2) について 1 (mod p) とならないことををみなければならない
301 名前:デフォルトの名無しさん [2012/05/07(月) 02:01:22.14 ] あと、原始根をすべて列挙するのに、素因数分解が使える。 あと原始根の簡易判定としてこれ。 奇素数 p を法とする原始根 g は p を法として平方非剰余である. nakano.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2011/11.pdf
302 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 04:50:17.14 ] >>285 話がまだ続いているから、こっちに移動してもうちょっと詳しく質問してよ。 画像処理 その13 toro.2ch.net/test/read.cgi/tech/1301896601/ 582 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 01:09:44.70 >>579 処理系依存だがや 583 名前:デフォルトの名無しさん [sage]: 2012/05/07(月) 02:54:26.37 処理依存の回答を求めているからだろ。だからもっと依存の強いSIMDのようにハードリソースに合わせたソフトのつくりはアリだと思う unsignd longは固定64bitと書いてあるように読みとれないか?処理系が変わると大元設計から変えるんだろうね。 えっと、、だがや
303 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 05:41:05.67 ] n次篩使えば桁は無意味なのに
304 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 06:08:21.84 ] いい加減篩廚は別スレ立ててやれや
305 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 06:17:52.76 ] 四次篩 x^4-y^4=(x^2+y^2)(x+y)(x-y) と分解したときにnの因数が()3つに分配されることを期待して gcd(n,x+y) からnの約数を見つける 同様に八次篩、十六次篩...ができる
306 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:00:55.86 ] 冷静になって考えたら二次篩でも四次篩でも演算回数同じだった
307 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:36:43.44 ] 二次篩で既にnによらない演算時間だった >>292 二次篩でいいよ n=3937 √3937≒63 63^2-n=32=2^5 64^2-n=159=3*53 65^2-n=288=2^5*3^2 (63*65)^2≡(2^5*3)^2(mod n) gcd(n,63*65±2^5*3)=31
308 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 11:47:16.92 ] これを実装したよ
309 名前:デフォルトの名無しさん [2012/05/07(月) 11:50:11.99 ] 速いソフトのバリナリあるから比較して味噌 Windows Factoring Software Binaries (64bit & 32bit) gilchrist.ca/jeff/factoring/index.html gilchrist.ca/jeff/factoring/benchmark.html gilchrist.ca/jeff/factoring/pseudoprimes.html
310 名前:デフォルトの名無しさん [2012/05/07(月) 12:11:03.30 ] このソフトで12秒かかった素因数分解。 これより速くないと世界一は無理だな。 yafu-1.31 sourceforge.net/projects/yafu/files/1.31/yafu-1.31.zip/download factor(222222222222222222222222222222222222222222222222222222222222222222222)
311 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 12:18:46.29 ] いい加減にしろ
312 名前:NAS6 ◆n3AmnVhjwc mailto:sage [2012/05/07(月) 12:22:01.86 ] 二次篩だったから俺の考えてたより遅いよ
313 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 15:28:37.39 ] >>302 そのスレのは私自身が書き込んだレスじゃないんですが・・・ だれか貼っつけた人が収拾してください
314 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 19:19:13.94 ] 学が無くてもそれなりに語れるネタに狂喜乱舞て状況だな
315 名前:デフォルトの名無しさん mailto:sage [2012/05/07(月) 23:02:24.54 ] スレタイ100回読め
316 名前:デフォルトの名無しさん mailto:sage [2012/05/08(火) 19:43:04.58 ] 【韓国BBS】台湾人は日本が好きで韓国を嫌う、その理由は? 韓国のコミュニティサイト「ガセンイドットコム」の掲示板に「台湾人たちが、日本が好きで韓国嫌いな理由は?」とのスレッドが立てられたところ、さまざまな意見が寄せられた。 スレ主は、台湾人は韓国と日本の好き嫌いがはっきり分かれていて、韓国は嫌いだが日本がとても好きだとの記事を紹介した。 スレッドには、その理由について「日本と台湾が島国同士だからではないか」との意見が数多く見られた。 ・「台湾や日本は両国とも島国で、韓国を困らせるのが趣味。しかし台湾がいくら困らせてようとしても、韓国はあまりにも強くて賢くて倒れない」 ・「島国どうしなので、傾向が似ているから惹かれあうのでは。どちらも内部の問題を外部のせいだとか方便を使う」 ・「島国は島国どうし仲良くするのが好き」 ・「私たちはできるなら台湾や日本の物を使わないことにしましょう。むしろヨーロッパやアメリカの製品を使用しましょう」 news.searchina.ne.jp/disp.cgi?y=2012&d=0508&f=national_0508_070.shtml ◆台湾が韓国嫌いな本当の理由はこれ 韓国は「我々は薄情な裏切り者の日本とは違うから台湾との国交は永遠に断絶しない」と言っておきながら 台湾に公用車として5万台の不人気韓国車を売りつけ、代金を受け取ると同時に、台湾と国交を断絶し中国との国交を結んだ。 しかも韓国の新聞やTVはこれを「韓国の大勝利」「慌てふためく台湾」と馬鹿にして煽り、 ソウルや釜山にあった中華街を様々な規制や嫌がらせで潰し台湾系華僑を追い出した。 その後も韓国は何十年も台湾を攻撃し続けた。 ・韓国は、アジアスポーツ大会の主催国争いにおいて、「台湾が権利を譲らなければ大会から台湾を追放する」と恫喝した。 ・韓国は、「台湾は国家ではないので参加させない」と国際会議などで台湾を閉め出すなどの行為をしてきた。 ・韓国は、台湾が国連やIMFなど国際機関へ加盟することに反対した。 ・韓国は、1997年にデフォルトしIMF管理下に入ると台湾に対して「両国間の国家改善のため」といって100億ドルの資金援助を要求した。
317 名前:デフォルトの名無しさん mailto:sage [2012/05/09(水) 06:42:43.87 ] >>316 C/C++以外のことも勉強になるな。 でも、スレチだろ。
318 名前:デフォルトの名無しさん [2012/05/10(木) 06:57:15.84 ] アルゴリズムを実装してるのですが、二分木のrightとかleftが大量に出てきて、 しかも同じ内容の箇所をright用とかleft用に書き直しなので、マクロとかで上手くかけないかと思ってます。 func1() { tree->left = tree->right; tree->left->left = tree->right->right; } func2() { tree->right = tree->left; tree->right->right = tree->left->left; } たとえば上記のような2つの処理を書かないと駄目なとき、 funcX(A,B) { tree->A = tree->B; tree->A->B = tree->B->B; } と書いて funcX(right,left); funcX(left,right); とかやりたいのですが、やり方はないでしょうか。元のtreeのメンバを配列にするのは できないです。
319 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 07:57:24.58 ] treeにl()とr()を実装
320 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 07:58:13.70 ] treeの構造も書かずに聞くかよ。 例えばこんな手はあるぞ。 struct tree { type * data; struct tree * left; struct tree * right; }; ↓ struct tree { type * data; struct tree * sides[2]; }; enum {Left, Right}; これなら、 funcX(int a1, int a2) { tree->sides[a1] = tree->sides[a2]; } みたいに書いて funcX(Right, Left); みたいに書けるぞ。
321 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:16:07.85 ] 質問の意図や前提をくみ取れない糞質問 が多い。それで回答者が逆質問をしたり 悪口を言ったりする。それを前もって思 い描く力が絶望的に欠如してるに違いない。 スーパーハッカーだけが意図を理解できる。 レアなそういう神が颯爽と登場する予感。
322 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:29:50.72 ] なんだろうね、少し前にもあった、この奇妙な改行感は。 行の短さも考慮すると、 コードが大量に出てくるこの板を、携帯で読んでるのかね。 バカじゃないの。
323 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:33:41.35 ] >>322 どこを縦読み?
324 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:34:47.70 ] 少なくともtreeの構造は必要だな
325 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:52:53.61 ] >質 問の意図や前提をくみ取れない糞質問 >が 多い。それで回答者が逆質問をしたり >悪 口を言ったりする。それを前もって思 >い 描く力が絶望的に欠如してるに違いない。 >ス ーパーハッカーだけが意図を理解できる。 >レ アなそういう神が颯爽と登場する予感。
326 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 08:54:21.11 ] こんなのとか template <bool Swap> struct LR { Tree* operator()(Tree* parent) { return Swap ? parent->right : parent->left; } }; template <bool Swap> void funcX() { LR<Swap> Left; LR<!Swap> Right; Left(tree) = Right(tree); Left(Left(tree)) = Right(Right(tree)); } メンバ変数ポインタを使ってみたりとか template <bool Swap> void funcX() Tree* Tree::*left = Swap ? &Tree::right : &Tree::left; Tree* Tree::*right = Swap ? &Tree::left : &Tree::right; tree->*left = tree->*right; tree->*left->*left = tree->*right->*right; }
327 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 09:05:47.43 ] 上のoperator()は&が抜けてた。正しくはこうね Tree*& operator()(Tree* parent) { 下は書き間違いが起こりやすそう、最適化が効きにくそうで微妙かも。
328 名前:デフォルトの名無しさん [2012/05/10(木) 11:17:15.73 ] Treeの構造はこんな感じです。(本当はもっと名前が複雑で長い) class Tree {Tree* right; Tree* left;} bool使ったTemplateは複雑な条件に対応できにくそうで、配列はメンバを書き換えないと駄目なのでむりです。 そこでdo {}while(0)のマクロを使って #define macro1(right, left) do { \ t-> ##right = s-> ##left; \ } while (0) とかで書きました。
329 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:47:52.24 ] >>328 その ## 連結は不要で不正。
330 名前:デフォルトの名無しさん mailto:sage [2012/05/10(木) 11:56:48.21 ] >>318 codepad.org/pMp2PuSI
331 名前:デフォルトの名無しさん [2012/05/11(金) 01:59:16.78 ] テンプレートでかけるとは。 すごい
332 名前:デフォルトの名無しさん [2012/05/11(金) 02:26:59.71 ] 「テンプレートでかけるとは。 」 と思うほうが、すごい
333 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:15:16.11 ] うん
334 名前:デフォルトの名無しさん [2012/05/11(金) 06:27:13.96 ] テンプレートでポインタとか使えるとか知りませんでした。
335 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 06:58:09.41 ] テンプレートがどこに出かけるの?
336 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 07:42:00.96 ] スムーズに動く2Dアクションを作ろうと思うんですが、マップってある程度(8ドットくらい?)ブロック単位で配列を置くだけでいいんでしょうか? その場合、マップが広いとやたら長くなりそうなんですが…
337 名前:デフォルトの名無しさん [2012/05/11(金) 15:12:33.62 ] C++はなんでも作れるって先輩から聞いていたんですが 入社4年でなんとか、使えるようにはなったんですが 未だに彼女が作れません。 本当に作れるんですかね?
338 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 16:26:08.78 ] ニ値元の彼女なら作られるっしょ
339 名前:デフォルトの名無しさん [2012/05/11(金) 16:29:20.43 ] >>338 つ OpenGL
340 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 17:13:35.43 ] >>337 class Kanjo{}; みたいなクラスを作って、 Kanjo misaki;
341 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 18:45:36.36 ] vector<kanojo> v(make_kanojo()); for_each(v.begin(), v.end(), do_something());
342 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 21:04:06.88 ] bool Kanojo::Check(class Otoko);
343 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 21:25:17.15 ] bool Onna::Fuck(class Otoko);
344 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:31:57.68 ] VC++ですが引数つきマクロに,を含む型を正しく渡したいのですが いい方法はありますか? codepad.org/S13HXRbC macro "MAKE_VAR" passed 3 arguments, but takes just 2 をtypedef以外でなんとかしたい、ということです よろしくお願いします
345 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:33:40.70 ] 無い typedefしろ
346 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 23:39:43.36 ] >>345 即レスありがとうございます おとなしくtypedefすることにします
347 名前:デフォルトの名無しさん [2012/05/12(土) 07:50:52.50 ] 質問です。 あるキーワードが与えられると、それに対応する関数を実行するというプログラムがあります。 以下のような、関数ポインタとキーワードがセットになった配列で管理されています。 struct { void (*pFunc)(); char keyword[256]; } funcTable = { { &FuncApple, "APPLE", }, { &FuncOrange, "ORANGE", }, { &FuncLemon, "LEMON", }, }; さて、これを可能な限りクラスに置き換えたいと思います。 Fruitクラスを親として、Apple、Orange、Lemonといった子クラスを用意したのですが、 これを配列に収めるにはどうしたら良いでしょうか。 もちろん、ifで1つ1つ分岐させて、それぞれについて new を記述すれば今の自分にも出来るのですが 子クラスの種類が増えると面倒くさそうな気がします。
348 名前: ◆QZaw55cn4c mailto:sage [2012/05/12(土) 07:59:13.80 ] >>347 >>347 struct funcTable を C でどのように使いたいのかサンプルをひとつみせてほしい。 C++ のクラスだからといって劇的に改善されるわけではない。
349 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 08:16:02.53 ] >>348 現状こんな感じ。 Match()は、キーワードマッチをする関数だと思ってほしい。 //funcTableをなめる for(int i=0; i<sizeof(funcTable)/sizeof(funcTable[0]); ++i) { //キーワードマッチしたら、該当の関数を実行 if ( Match ( inputKeyword, funcTable[i].keyword ) ) { funcTable[i].pFunc( ); //←関数ポインタ break; } } この関数ポインタの部分を、なんとか出来ないかなって。
350 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:13:54.91 ] ナニがしたいのか意味不明なのでそこらへん推敲して出直してください。
351 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:30:26.44 ] >>350 普通にif文で書くなら、 Fruit *f; if (条件1) f = new Apple(); else if (条件2) f = new Orange(); else if (条件3) f = new Lemon(); : : f->Hoge(); という感じになると思うんだけど、 数が増えるといちいちifで書いてられないので、何かスマートな方法が無いかなと。
352 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 09:54:28.36 ] その似非オブジェクト指向臭いコードよりも>349の方が自然じゃないか。
353 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:27:51.24 ] >>352 そういうものかなー? 1人で考えてると何が自然なのか分からなくなってくるね(´・ω・`) ただまあ、1つの条件式(キーワード)つき、複数の関数ポインタをセットしなきゃならないような場合、 例えば初期化処理と、ルーチン本体と、終了化処理などがある場合だと、全部書かなきゃならないのは不便かも?
354 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:38:01.60 ] それだったら、関数ポインタを構造体に纏めるだろ。 で、初期化が必要だったりしたらクラスにしてメンバー関数にするとか。 そういうアプローチはオブジェクト指向とは違うけれど、自由度は高いんじゃね。
355 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 10:51:15.71 ] キーワードとフルーツの対応表を作るだけだよな?
356 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:03:47.86 ] 347が要求を満たすなら文字リテラルとの比較でそもそも文字列のまま比較する意味が無い マジ推敲しなおせや
357 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 11:31:53.82 ] 考えてるうちに、関数ポインタ+FactoryMethodパターンあたりの組み合わせで行けそうな気がしてきた。 >>354 実際に関数ポインタを書かなきゃならないのは変わらないけど、 それを構造体にまとめることで、外側(対応表)に出る情報を抽象的&減らそうってアプローチね? >>355 うん。それをどうしたら実現できるかなって。 >>356 詳しく。
358 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 12:02:31.53 ] >>347 意味分からんです >>349 >> この関数ポインタの部分を、なんとか出来ないかなって。 typedefするぐらいです >>351 349の内容と違いますよね 線形探索が嫌なら適当なコンテナにでも詰め込めばいいです >>357 >>347 を移植するのに、Factory使う人はいないですし 数ポインタの部分を、なんとかしたかったのでは?
359 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 12:24:11.75 ] >>347 std::map<std::string, std::function> でおしまいな話じゃないの? (std::function が使えないなら boost::function で。)
360 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 19:59:39.29 ] >>347 >さて、これを可能な限りクラスに置き換えたいと思います。 IDが無いからどれが質問主のレスなのか追いづらいんだが もともとの要点は関数を書いているところをクラスに置き換えたいって話だよね? クラスインスタンスを返す関数にすれば同じ意味になるんじゃない struct { Fruit* (*pFunc)(); char keyword[256]; } funcTable = { { &Apple::StaticCreateInstance, "APPLE", }, { &Orange::StaticCreateInstance, "ORANGE", }, { &Lemon::StaticCreateInstance, "LEMON", }, }; 実際はmap使うなり文字列を定数化するなり効率化した方がいいと思うけどね
361 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:01:59.41 ] 最も評価の悪い国 1位 イラン 2位 パキスタン 3位 北朝鮮 4位 イスラエル 5位 ロシア 6位 韓国 ←←←←←←←←←←← 最も評価の高い国 1位 日本 2位 ドイツ 3位 カナダ 4位 イギリス 5位 中国 6位 フランス BBC世界世論調査2012 www.globescan.com/images/images/pressreleases/bbc2012_country_ratings/2012_bbc_country%20rating%20final%20080512.pdf
362 名前: ◆QZaw55cn4c mailto:sage [2012/05/13(日) 10:36:07.66 ] >>361 toro.2ch.net/test/read.cgi/tech/1333095907/785,789
363 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 11:08:18.64 ] 初歩的な質問ですいません。Visual C++ 2010 ExpressでFindFirstFileを利用しようと 下記ページを参考にして、cpp内にvoid Dofind()という関数を作ったのですが、 WIN32_FIND_DATA fd; HANDLE hFind; などがC2065定義されていない識別子です。とエラーが発生してしまいます。 下記ページ記載の関数以外に何かを定義しておく必要があるのでしょうか? nienie.com/~masapico/api_FindFirstFile.html
364 名前:デフォルトの名無しさん [2012/05/13(日) 11:19:42.51 ] windows.h
365 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 11:27:06.30 ] 助かりました。Windows APIを利用するためには、 windows.hをインクルードしてあげる必要があるんですね。 ありがとうございました
366 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:14:15.22 ] これってちゃんと宣言されてないんでしょうか? main.cpp void Reset(); reset.cpp void Reset(){ int a[5] = {0,0,0,0,0}; a[0] = SRand (12); } こうやってるんですが、定義されていない識別子です。と出てしまいます ヘッダはちゃんと記入してあります
367 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:24:31.98 ] >>366 .cpp に宣言だけ書くのはおかしいしヘッダがちゃんとしてても #include してなけりゃ意味が無い。 エラーも Reset について出てるのか SRand について出てるのか・・・ 変に省略してあるようで状況がよくわからん。 内容はなるべく省略せずに、エラーメッセージはそのままコピペしろ。
368 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:36:54.96 ] >>367 すみません、エラーは a[0] = SRand (12); のところで「'a' : 定義されていない識別子です。」と出ました main.cpp #include "reset.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK ); void Reset();} reset.h void Reset(); reset.cpp void Reset(){ int a[5] = {0,0,0,0,0}; a[0] = SRand (12); } ちゃんと書くとこんな感じです
369 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 15:41:50.66 ] //reset.cpp #include "reset.h"//これ忘れてる? void Reset(){ int a[5] = {0,0,0,0,0}; a[0] = SRand (12); }
370 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:36:17.89 ] >>368 a は直前で宣言されてるし、その内容が正確だとすると main.cpp でも WINAPI やら DxLib やらでエラー出るだろうし、まだ状況が伝わってこない。
371 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 16:44:31.83 ] int a[5]とa[0]の綴りがことなってるとしか
372 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 23:51:10.83 ] 要は、エラーが出るコードをそのまま貼れ、と。
373 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 06:19:32.56 ] mainの最後のvoidって
374 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 06:23:51.80 ] ・mainの引数 ・mainの最後のvoid ・なんでカンマで文をつなげる エラーの出るソースコピペしてない?
375 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 08:26:46.63 ] コード関係ないとこでエラー出てるんだろ 初心者にはよくあること
376 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 09:44:23.86 ] そして自己解決してお礼も言わずに去っていったと
377 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 21:39:34.19 ] >>374 つまらんツッコミですまんが、その3つ自体は文法上は問題ないじゃん (windows.hをincludeしてないからコンパイルエラーになるけど)
378 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:09:10.68 ] >>377 いや、voidはエラーになるよ。
379 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:10:19.45 ] int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), SetMainWindowText("ランダム"), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK ); void Reset();} ↑ void Reset();ってなんだよ 関数実行するなら Reset();単体だろ
380 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:19:09.45 ] 30時間かかってようやく答えめいたモンが出たか >>279 は優秀だな 84点くらいはやろうか それに引き換えそれ以前のアホは0点んだ0点 味噌汁でツラ洗って出直してこい
381 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:19:18.00 ] >>378 なんてエラーになるの?ただの関数宣言で通るんじゃないの?
382 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:23:33.69 ] 二重定義
383 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:32:04.96 ] >>382 なんねーよ。
384 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 22:33:30.77 ] >>382 ただの宣言を定義だといってエラーにするコンパイラがあるのか? コンパイラの名前とバージョンを晒せ。
385 名前:368 mailto:sage [2012/05/15(火) 00:38:37.67 ] 初心者すぎたのでいろいろ試してたんですが、仰る通りmainのvoidが原因でした ありがとうございました()
386 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:41:57.31 ] ねーよ
387 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 00:46:30.07 ] > ありがとうございました() オイオイ こんなのに笑われてんぞw アホ共ww
388 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 07:42:39.65 ] なんか最近キチガイがいるな
389 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:27:11.10 ] 同感だ > ありがとうございました() なんて使ってる368が一番の基地外ゴミカスだ マジ本人だったら最悪だろこいつ もう二度と来なくていいんじゃね?
390 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:35:43.69 ] 開発者の意図を汲み取れないコンパイラの欠陥であり、 言語仕様そのものの欠陥でもある
391 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 09:38:22.36 ] そうだな脳波をコンパイルできるようにすべきだな
392 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 10:25:13.93 ] むしろ脳みそをコネコネと
393 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 11:31:23.84 ] あばばばばば
394 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 11:47:10.58 ] iphoneは送信の横に()があるからミスだろ 俺もたまにやる
395 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:01:21.80 ] BB2C?はマイノリティか
396 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:14:51.09 ] 東京都尖閣諸島寄附金 受付状況 45,089件 609,282,032円 (5月14日入金確認分まで) www.chijihon.metro.tokyo.jp/senkaku_kifu.htm 送金方法: www.chijihon.metro.tokyo.jp/senkaku.htm
397 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 12:42:11.71 ] 俺が3億円寄付したからその倍か
398 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:03:43.48 ] 複数の純粋仮想関数を持つ抽象クラスから派生し、独自の変数やメソッドを持たない子クラスを大量に宣言する場合、 子クラスの宣言をマクロにしちゃうのってアリ? #define CHILD(T) class T :public ParentClass { 〜 } って感じで。もしくは他に楽に書ける方法ある?
399 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:16:43.61 ] エクセルでポトペタかな (自称)プロは忌避するだろうけど
400 名前:デフォルトの名無しさん mailto:sage [2012/05/21(月) 20:25:12.12 ] そんな用語が。 ありがとう、ちょっと調べてみる。
401 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 01:37:23.30 ] >>398 マクロだと改行がメンドイから可変部をマクロ定義した上で #include するファイルを作ったほうが いいかもしれない。
402 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:28:00.95 ] >>401 日本語で
403 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:43:13.91 ] おめーの理解力が足りないだけ
404 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 03:53:21.62 ] 401が何を言いたいのかわかんない
405 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:20:11.91 ] 書いてある通りでしょ。 理解できないのは、想像力が足りないから。
406 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:43:13.85 ] 書いてある通りのメンドイコード例を示してみてよ
407 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:46:15.73 ] 行末
408 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:48:01.07 ] 401がメンドイと書いているのは「マクロの改行」ね
409 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 04:58:18.35 ] ためしに書いて見れよw include駆使した効率的なコードとやらを
410 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:09:01.74 ] 本当にバカだな。
411 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:10:15.36 ] > マクロだと改行がメンドイから可変部をマクロ定義した上で メンドイといいつつ結局マクロなんですね > #include するファイルを作ったほうが > いいかもしれない。 直接書いても別ファイルに書いても書く内容に変わりはないですよね
412 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:10:52.27 ] // ChildTemplate.h class CHILD : :public ParentClass { // \ で繋ぐ必要も無いし // 行末コメントも使い放題 // ... // コンパイルエラーへの対処もしやすい }; // Childs.h #define CHILD ChildA #define ... include "ChildTemplate.h #define CHILD ChildB #define ... #include "ChildTemplate.h #define CHILD ChildC #define ... #include "ChildTemplate.h #define CHILD ChildD #define ... #include "ChildTemplate.h
413 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:16:21.41 ] 各行に\が必要ってのが、修正等でどれだけ面倒か 想像もできないのか? 空行すら入れられないし、行末にコード追加も出来ないし デバッグで#if 0も不可なんだぞ。 別ファイルにすれば、「普通のコード」を書くだけだろ 個別に変えるシンボル名を#defineしてから#includeするだけ。 「普通のコード」だから、必要ならば#ifdef系の条件コンパイルも出来る。 当然だけど、#includeは複数回可能だし。
414 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:18:37.44 ] >>411 「関数形式マクロ」と「単純置換のマクロ」があることはご存知?
415 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:22:34.17 ] んなメンドイ事するくらいなら template <int U>class CHILD:public ParentClass{〜}; typedef CHILD<0> A; typedef CHILD<1> B; これで十分じゃん?
416 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:25:16.12 ] じゃあ>>398 にそう言えば?
417 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 05:32:49.01 ] >>412 補完効かなそうだな
418 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 06:42:42.02 ] マクロが嫌でマクロ書く
419 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:14:44.29 ] あるある探検隊
420 名前:デフォルトの名無しさん mailto:sage [2012/05/22(火) 07:15:07.97 ] プログラマーは、楽をするための努力はおしまないものです(キリッ
421 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 00:22:36.08 ] ちょっと変な質問をさせてください Borland C++で5年ほど前にコンパイルできていたものを、先日久しぶりにビルドを試したらエラーが出て失敗してしまいました エラー内容はE2134・E2139・W8070などが出ましたが、ソースを見る限り不審な点を見つけられませんでした なにぶん昔の話なので覚えていないのですが、多少のエラーなら無視して強引にビルドしてしまうような方法を使ったような… 強制ビルドするような方法があったらご教授ください よろしくお願いします
422 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 02:41:03.61 ] エラーコードだけで分かるかよ
423 名前:デフォルトの名無しさん [2012/05/23(水) 02:54:39.32 ] 強制ビルドなんて無理。 エラーを修正してビルドせよ。 強制したいならエラー部分を手動で削除。
424 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 02:58:54.38 ] 質問の意図や前提をくみ取れない糞質問 が多い。それで回答者が逆質問をしたり 悪口を言ったりする。それを前もって思 い描く力が絶望的に欠如してるに違いない。 スーパーハッカーだけが意図を理解できる。 レアなそういう神が颯爽と登場する予感。
425 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 04:12:24.08 ] また変なのが湧いてる
426 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 05:07:26.75 ] >>423 そうですか、ありがとうございました …だとすると、このexeどうやって生成したんだろう…謎だ…
427 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 05:26:24.59 ] 生成日を確認してみなー 修正履歴も探ってみなー
428 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 08:11:39.05 ] ウィンドウレイヤーを作っているのだけど
429 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 08:58:38.01 ] そうか
430 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 13:33:14.91 ] >>421 5年前にビルドした時とOSとかの環境は変わってない? 変わってないなら5年前もエラーが出たはずだろ
431 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 17:54:15.34 ] でも寝かせておくとエラーが消えることがあるってのも、事実だよね…
432 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 17:57:31.01 ] 本番環境になるとなぜか出現する奴とかなーw あほかっ!
433 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 18:07:00.05 ] 脳内デフラグで自己完結しても それを反映させなきゃ変化はないよねー
434 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 18:24:01.95 ] >>431 ねーよww 酒じゃあるまいし
435 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 19:19:57.80 ] >>434 なんかのエロゲーを遊んだあとじゃないと動かないアプリ とかあったよ
436 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 20:34:21.83 ] 深夜だとかっこいいアルゴリズムを思いつくというのはあった
437 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 20:42:27.20 ] 翌朝になるとなぜそう書いたか思い出せない
438 名前:デフォルトの名無しさん mailto:sage [2012/05/23(水) 21:13:18.66 ] 自分が経験したのは、オブジェクトファイルだか何だったかが 何故か更新されなかったというのがあったな。 翌日ビルドしたら通った。
439 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 00:12:18.27 ] ファイルを開いたまま握るタイプの糞エディタでビルドログを開いたままビルドして、 ビルドできないと反日悩む馬鹿なら知っている。
440 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 16:04:41.11 ] >>439 俺か
441 名前:デフォルトの名無しさん mailto:sage [2012/05/24(木) 17:08:36.46 ] >>439 普段の書き込み内容がわかる誤変換だなw
442 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:35:09.01 ] __LINE__や__FILE__で与えられる文字列を、関数(またはマクロ関数)に投げたいのですが、 呼び出し側で毎回指定する以外の方法で、実装することは可能でしょうか。 もしくは同等の機能でも構いません。 例えば別のどこかでLog()という関数が定義されてるとして、 main.cpp内でLog()を呼んだとき、このLog()側から「main.cpp」や行番号という情報を扱えるか、ということです。 もちろんLog(__FILE,__LINE__,〜) とやれば済むのですが、あちこちで使う場合ちょっと面倒かなと。
443 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 09:51:08.36 ] >>442 つ[マクロ]
444 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:01:41.44 ] >>442 こうやるとか #define Log(foo) _Log(__FILE__, __LINE__, foo) void _Log(char *file, int line, char *foo){ /* ... */ }
445 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:09:40.65 ] >>443-444 出来た! ありがとう! 組み込みマクロが展開されるタイミングを勘違いしてたよ。 試しもせずに先入観で否定するのは良くないね。反省。 そして今の環境だと可変長引数のマクロ関数には対応してないようだ(´・ω・`) 必要なときにだけsprintfするか。
446 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 10:58:16.90 ] (`・ω・´)
447 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:57:10.10 ] (´・ω・`)
448 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 12:59:54.88 ] スプリントゥフ
449 名前:デフォルトの名無しさん mailto:sage [2012/05/30(水) 23:10:41.70 ] 組み込みマクロが展開するのってマルチバイト文字列だからUnicodeだと困ったことに
450 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:18:27.71 ] 10時間ぐらいかけてもコアダンプされるが原因が分からず聞こうと思ったらやっと見つかった・・・ 人に説明するために、この原因はないです。この原因はないです。って一つ一つ整理してたら ループ内で一要素分だけ動的に確保したメモリをオーバーランしてたことに気づく 結果おかげさまで解決しました、ありがとうございました
451 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 02:20:30.08 ] よかったですね
452 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 12:07:30.52 ] おめでとう!
453 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 12:49:10.91 ] メインクラスで宣言した変数を他のクラスで使いたいんですが、グローバル変数を使えばいいんでしょうか? int a:だけだと宣言されていないと出てしまい、使い方がイマイチ分からないです
454 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:06:27.01 ] >>453 コードとエラーメッセージ晒せ。
455 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 13:38:30.61 ] >>453 public でもつけとけ。 こんな質問する程度のお前がが作るソフトに継承、カプセル化、ポリモーフィズムも 関係ないだろうからw
456 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:35:26.38 ] #define private public
457 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:37:51.79 ] >>455 お前、ガガ?
458 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 14:44:35.55 ] レディ
459 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:04:10.61 ] >>155 C#でいいとおもうよ。手軽だし
460 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:05:11.79 ] あ、さっき乙姫とあってたから時間がおかしいみたいだ。すまん
461 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:09:18.34 ] >>459 本格的なものを作りたいんですよ C#みたいな、お遊びは時間の無駄じゃないですか
462 名前:453 mailto:sage [2012/06/01(金) 17:14:17.02 ] 調べてもたいして重要じゃないのか出てこなかったんで助かりました 煽りはお決まりなんでしょうか?ともかくありがとうございます
463 名前:デフォルトの名無しさん [2012/06/01(金) 17:29:32.00 ] >>461 逆だ。時間の有効になる。
464 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:31:23.19 ] >>461 本格的なものってなんぞ
465 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:49:07.51 ] Windows8に代わるOSを作りたいのです
466 名前:片山博文MZボット ◆0lBZNi.Q7evd mailto:sage [2012/06/01(金) 17:57:19.58 ] >>465 ReactOS
467 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 17:58:50.20 ] >>464 人様にお金を払って頂けるようなもの
468 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 18:41:09.74 ] 目標を高く持つのは結構だが まずはベクターあたりに載るのを目指したらどうだね
469 名前:デフォルトの名無しさん [2012/06/01(金) 18:47:56.02 ] ベクターは自己申告だろ。ウイルス入りは弾かれるかもしれん。
470 名前:デフォルトの名無しさん mailto:sage [2012/06/01(金) 19:04:02.14 ] それでも何もしないサンプルアプリそのままとかはダメじゃないか?
471 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 05:56:20.22 ] つーか、C#で喰ってますが何か。
472 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 07:19:16.51 ] 別に
473 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 09:27:26.99 ] ここはC++スレです
474 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 13:45:35.43 ] 質問です Windows/VC++10の環境で、libファイルにリソースを埋め込んで使いたいのですが、 LoadResource等の返り値がNULLで、読み込みに失敗していているようです ideone.com/40dyA こんなコード感じのコードなのですが、原因がわかる方居ませんか?
475 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 14:23:58.17 ] exeとdllだけ
476 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 15:03:56.06 ] >>475 あ、そうなんですか…… ありがとうございます
477 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 21:11:12.83 ] CやC++のリファレンスをダウンロードできるサイトとかありませんでしょうか? 例えばPHPのマニュアルのようなものです 自分、暫く海外へ行くもので、ネットに接続出来ないかもしれないのでオフラインで確認したいと思いまして
478 名前:デフォルトの名無しさん [2012/06/02(土) 21:33:03.79 ] C/C++サイト www.geocities.jp/ky_webid/ www5c.biglobe.ne.jp/~ecb/index.html nienie.com/~masapico/ www.cppll.jp/cppreference/index.html
479 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 22:11:54.49 ] >>478 ありがとうございます
480 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:23:13.20 ] 質問です。 C言語で大抵のコンパイラでは、グローバル変数は0で初期化されます。 これは ANSI C の規格で定められているのですか?
481 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:27:44.50 ] はい。
482 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:40:43.62 ] >>478 ありがとうございます、助かりました
483 名前:デフォルトの名無しさん mailto:sage [2012/06/02(土) 23:41:14.43 ] 間違えました >>481
484 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 02:56:06.66 ] 組み込みだとそうでもなかったりする。
485 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 03:13:32.18 ] >>484 それは規格違反なんだろ。
486 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 04:09:06.83 ] デバッグしやすいように0以外で初期化してくれたり
487 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 04:15:17.79 ] 一回しか作られないものはちゃんと値初期化。 何度も作られるものはめんどいので放置。 こういう覚え方で。
488 名前: ◆QZaw55cn4c mailto:sage [2012/06/03(日) 05:19:36.00 ] >>487 まあそういえなくもないが‥‥やはりプログラムのロードやメモリ配置をここで言及するのはいかんのだろうか? スタック上のものはプログラム開始時に存在しないので初期化はない。 それ以外のものはプログラム開始時に存在し初期化する。 しかしmalloc() で確保した領域はプログラム開始時にあるものではないので初期化しない。
489 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 05:38:40.70 ] calloc
490 名前: ◆QZaw55cn4c mailto:sage [2012/06/03(日) 05:45:09.46 ] >>489 そんなものつかうのか?
491 名前:デフォルトの名無しさん mailto:sage [2012/06/03(日) 06:21:53.31 ] mallocでおじゃる
492 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:45:40.85 ] いきなりで悪いけど、exturnって一人で管理する分にはガンガン使っていいんだよね? 複数人だと宣言が被ったりするから気をつけないといけないだろうけど、苦cってサイトに控えろって書いてあったから気になった
493 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:56:10.85 ] 1人でもうっかり被ったりすることはないとはいいきれない でもまあほとんどないだろうから使いたければ自由に
494 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 13:58:08.14 ] >>492 関数にexturn → 付ける必要無し 変数にexturn → グローバル変数をガンガン使うな
495 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:24:34.18 ] exturn exturn exturn
496 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:32:56.25 ] GUIプログラム初心者なんですが質問させてください 定期的にメッセージボックスを出すだけのプログラムをかいてみたんですが これだけだとタスクマネージャーからプロセス終了しないと終了できないので Shell_NotifyIcon というのを使えばいいといわれたんですが hWndとm_hIconに設定する値がわかりません… 根本的に使い方がまちがってるんでしょうか… #include <windows.h> int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { NOTIFYICONDATA notif; notif.cbSize = sizeof(NOTIFYICONDATA); notif.hWnd = m_hWnd; // エラー notif.uID = 0; notif.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; notif.uCallbackMessage = WM_TRAYICONMESSAGE; notif.hIcon = m_hIcon; // エラー lstrcpy(notif.szTip, TEXT("TEST")); Shell_NotifyIcon(NIM_ADD, ¬if); while(1) { MessageBox(NULL, TEXT("test"), TEXT("test"), MB_OK | MB_TOPMOST | MB_SETFOREGROUND); Sleep(60 * 1000); } }
497 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:35:43.70 ] メッセージボックスをOK キャンセルにして、キャンセルなら終了
498 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 14:47:50.66 ] レスありがとうございます それだとメッセージボックスがでてるときにしか終了できないですよね… いつでも終了できるようにしたいんですけど…
499 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:01:47.46 ] Shell_NotifyIconが何をするものか理解してるの? 単に追加すればいいってもんじゃないよ タスクトレイに表示したいアイコンは? タスクトレイで操作したメッセージは誰が処理するの? ググればサンプルが出てくるから頑張れ
500 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:07:35.26 ] やっぱり根本的に理解してなかったんですね… 数行追加するだけでタスクバーに表示されるのかなと思ってたんですが イベント関連のことが説明やサンプル読んでもぜんぜん分からないので そのへんから理解していかないとダメみたいですね… 答えていただいた方ありがとうございました
501 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 15:39:19.29 ] Sleepで待つのも異様だからもっと勉強しなさい
502 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:18:43.34 ] Sleepは目的が1分ごとなのか1分間隔なのかにもよるし この程度のトイプログラムならタイマーイベント使って微妙なタイミングで下手にエンバグするよりシンプルでいいんじゃね
503 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:38:25.18 ] いつでも終了できるようにしたい (タスクマネージャからプロセスを殺すのは不可) メッセージボックスが でていない時には タスクトレイ経由 SYSMENU 〜 終了へ でている時には メッセージボックスのキャンセルで こういう条件だとタイマーやスレッドを使いたくなるな
504 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 17:51:46.02 ] そもそもSleepしてる間、何の応答もできないし
505 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 18:03:11.77 ] メッセージボックスが出てる間もカウントするかどうかも ちょっと退席してる間にメッセージボックスだらけになるんじゃないか?
506 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 18:24:48.76 ] まあどっちにしろイベント処理を理解してないと難しい 逆にイベント処理を理解すればタイマーも使えるだろ
507 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:20:05.64 ] そもそも、そのメッセージボックスは何の為に出すんだ? つーか、先ずは基礎からと考えて、ウィンドウを一つ出しておく方法で実装してみることをお勧めしたい。
508 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:27:04.63 ] 普通にi使えばいいのに iが1000になったら表示とかで
509 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 19:35:15.80 ] GUIプログラム初心者の質問いつまで引っ張ってんだよww 入門サンプル見て勉強しろで終わりだろw
510 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 20:48:22.04 ] >>492 それエラーになるよ
511 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:17:40.76 ] なんで初心者ってGUIから入るんだろうね 正直GUIなんてどうでもいいよな
512 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:22:36.10 ] そりゃGUIアプリを作りたいからだろう
513 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:31:17.85 ] ただ、最初からGUIアプリを作りたいならC/C++を選ぶのは茨の道だよなw
514 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:38:55.40 ] そうか? VC++ならマウス操作だけで、カッコいいVisualStudioライクのGUIが即できるぞ
515 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 21:46:28.83 ] >>496 はたぶん C/C++相談室から誘導されてきたんだろうけど あっちのソースみる限りアルゴリズム自体はそれなりにかけるんじゃないかな UNIX系で勉強していきなり Windows APIは C++ といってもまったく別言語だよな 大学なんかで習ってるなら Java あたりで GUI 覚えてからの方が普通だしな
516 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:05:48.33 ] >>496 ですけどあの後もいろいろレスいただいたみたいでありがとうございます >>501-506 タイマーは使ったことないですけど仕組みは何となくわかります ループ1回分の処理を別関数に分けて 何秒後にその関数を呼び出すように登録するようなライブラリがあるんですよね… とりあえずもっとクリティカルなところでつまずいてたので… そこが解決したらタイマーも使ってみることにします >>507 別にそれでもいいんですけど現状覚えたのがメッセージボックスだけで… C++相談室の方でさきに質問したら Shell_NotifyIcon を進められたんです メッセージボックスを2つ出せれば解決しそうなんですけど 入力待ちをブロックせずに2つ出すことってできるんでしょうか… >>511 人に頼まれたプログラムなのでGUIの方がいいかなと… あとVCは完全にはじめてですがGUI自体は Java なら軽く AWT 習いました 理解してるわけではないんですがテンプレの処理とどのメソッドにとんでくるか覚えてるだけですけど いろいろサイトみてみたんですけど… Visual C++ は動かすための最小セットが長すぎてすぐに理解できないんですよね>< どこまでがテンプレでどこまでが追加されたコードなのかっていうのが… GUIのイベント処理理解するための入門サイトみたいなのがあれば知りたいんですけど…
517 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:24:26.63 ] なんでやねん。Javaほど簡単じゃないけど、やってることの基本は簡単だべ。 関数はたった2つ、main関数とコールバック関数(関数名は自由)。 main関数の仕事はたった2つ。 自分自身が何者であるかをOSに登録して無限ループに入るだけ。 これはもう定型文なのでほとんどコピペ。 コールバック関数はOSから呼び出されるたびに、 引数のひとつであるWindow Message(単なる整数)の値に応じて処理を分岐するだけ。 これはイベントドリブン型のプログラムではたいてい同じロジックだから 言語ひとつ知ってれば全部応用できる。 MFCは複雑だけどね。メッセージループがワークフレームの中に隠れてたりするし。
518 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 22:52:21.91 ] まあ単純にコード行数の問題じゃね 確かに VC++ で挿入されるテンプレみたら初心者はやる気なくす 俺も最初はそうだった あと Java は興味あるイベントリスナーだけを登録しておけば イベント内容に応じて分かりやすい関数名にとばしてくれるからな イベントディスパッチを自分でやるって違いだけなんだけど switch 文に見慣れない変数がずらずら並んでると難しく見えるのも分からないでもない
519 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:04:55.44 ] 本当はwinapiスレ行けと言いたいがどうなんだろうな
520 名前:デフォルトの名無しさん mailto:sage [2012/06/04(月) 23:11:05.50 ] 環境依存か
521 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:01:49.16 ] 質問よろしいでしょうか? 知り合いとプログラムをつくっているのですが 知り合いが new した int配列を mapの中にいれて、eraseでメモリの開放できているといいます。 私がメモリのリークチェックで確認したところ 未開放の情報が出力されるのですがeraseで本当に削除されるのでしょうか? それともlist::pop_frontみたくmapの中の要素リストから排除するのみなのでしょうか?
522 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:07:30.95 ] 自分でdeleteしてね
523 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:13:45.04 ] ですよね ありがとうございます。
524 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:50:02.89 ] >>521-523 delete すんな vector 使え。
525 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 00:59:44.40 ] std::map<x, std::vector<y> >これアリなんだっけ
526 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 01:23:19.75 ] もちろん
527 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 11:49:21.23 ] >>521 何の証拠もなしにできているとほざく知り合いは死ぬべき
528 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:34:56.25 ] だよな そういうやつがよくわからないバグを生み出す原因だったりするよな
529 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:39:32.19 ] リークしてることを証明すればいい
530 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 12:45:38.46 ] Thread32First/Nextで列挙したスレッドが 特定のDLLで開始されているか調べるには どうしたらいいですか? 開始アドレスをNtQueryInformationThreadで 調べるというのは見つけたのですが、 それが特定のDLLのものか、どう調べれば良いですか?
531 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 13:01:09.91 ] CreateToolhelp32Snapshot(TH32CS_SNAPMODULE)でプロセス内のDLLを列挙して DLLからエクスポート関数を列挙して プロセス内のDLLアドレス+関数の相対アドレス == 開始アドレス もしくは GetProcAddress(dll,fname) == 開始アドレス で比較したら 分かる・・・かもしれない やったことないけど
532 名前:片山博文MZボット ◆0lBZNi.Q7evd [2012/06/05(火) 13:19:34.63 ] >>531 それじゃエクスポートしていない関数じゃできないじゃん。
533 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 13:26:48.51 ] 質問が分からないがスレッドがどのプロセスに属するかどうか?
534 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 14:00:31.87 ] >>532 DLLベースアドレス <= 開始アドレス < DLLベースアドレス+DLLサイズで 分かるんじゃね?
535 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 14:43:42.23 ] >>533 Process Explorerでプロセス内のスレッド一覧見ると Start Addressに gdiplus.dll!GdipGetVisibleClipBoundsI+0xad4 firefox.exe+0x1bf9 とか表示されるから、そういう情報を取りたいんだと思う
536 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:02:11.80 ] 質問の意図や前提をくみ取れない糞質問 が多い。それで回答者が逆質問をしたり 悪口を言ったりする。それを前もって思 い描く力が絶望的に欠如してるに違いない。 スーパーハッカーだけが意図を理解できる。 レアなそういう神が颯爽と登場する予感。
537 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:08:37.44 ] そのコピペは1スレに1回までにしてください
538 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:27:53.91 ] ありがとうございます。 >>531 >>532 とりあえず、エクスポート関数に限定して、これを試します。 >>534 DLLベースアドレスの取得方法を教えていただけませんか? ベースアドレスが衝突してデフォルトでない場合も 取得できるのでしょうか? この方法も試してみたいです。 >>533 >>535 さんのおっしゃるとおりです。 dll!func+0xXXXというのは、エクスポートされている関数のアドレスから 0xXXX後にある、エクスポートされてない関数という意味なのですか? >>536 わかりにくくてすいません。
539 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:34:38.71 ] そもそもなにしたいのん?
540 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 15:38:56.47 ] >>538 ベースアドレスはロードされたDLLの先頭メモリアドレスなので 1プロセス内で衝突することは無い MODULEENTRY32.modBaseAddr がベースアドレス MODULEENTRY32.modBaseSize がサイズ modBaseAddr <= p < modBaseAddr+modBaseSize がDLLのメモリ領域
541 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 16:12:31.78 ] のんのんのん♪
542 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:24:38.63 ] そんなマニアックなことして何をしたいんだか ウイルスでも作るのか
543 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:35:32.14 ] わかんねーなら黙ってろよ
544 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 18:59:48.46 ] やりたいことによっては別案があるかもしれねぇから聞いているかも知れねぇだろ アスペは黙ってろ
545 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:16:25.38 ] などと、アスペが喚いておりますが、気にしないでくださいね★
546 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:17:42.89 ] んだこら
547 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 19:23:29.12 ] 最終的に何をやりたいのか明らかにしてないだろ
548 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 21:27:18.21 ] 自作のコンテナのイテレータで、stl::listのbegin()ようにポリモーフィズムの呼び出しをさせたくて iteratorとconst_iteratorのふたつを用意したところ、エラーになります。 なにがいけないのでしょうか? 環境はVS2010です。begjn()が片方だけならコンパイルは通ります。 class MyContainer { public: template<typename T> struct iterator_ { iterator_(T* p) : ptr(p) {} T* ptr; }; template<typename T> struct const_iterator_ { const_iterator_(const T* p) : ptr(p) {} const T* ptr; }; typedef iterator_<MyContainer> iterator; typedef const_iterator_<MyContainer> const_iterator; iterator begin() { return iterator(this); } const_iterator begin() const { return const_iterator(this); } }; MyContainer x; MyContainer::const_iterator ix = x.begin(); エラー出力 error C2440: '初期化中' : 'MyContainer::iterator' から 'MyContainer::const_iterator_<T>' に変換できません。 with [ T=MyContainer ] コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。
549 名前:デフォルトの名無しさん mailto:sage [2012/06/05(火) 21:48:37.88 ] うん。だって、xは非constだから、x.begin()は iterator begin() { return iterator(this); } を呼び出してる。 僕の見た限り、iterator を const_iterator に自動変換するコードはなさそうなのでそれでエラーになってる。 struct const_iterator_ { const_iterator_(const T* p) : ptr(p) {} template< typename T > const_iterator_( iterator_< T > const &it ) : ptr( it.ptr ) {} const T* ptr; }; これでいいんじゃないかな?
550 名前:548 mailto:sage [2012/06/06(水) 06:19:50.51 ] >>549 なるほど。そういうことなんですね。ありがとうございました!
551 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 08:26:14.79 ] codepadはいつ見てもcookpadに見える
552 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 11:46:05.93 ] 基本的な質問で申し訳ありませんが 自分は参照渡しとポインタ渡しは書き方が違うだけでコードは同様と思っていますが 意味が違うと言っている人(ポインタを理解していない?)がいたので質問します 以下のコードに書き方以外の違いはあるのでしょうか? void hoge::func1(int &p1) { p1++; } void hoge::func2(int *p1) { *p1++; }
553 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:00:28.31 ] 間違えました コードは同様→機能は同様 です
554 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:04:08.66 ] 基本的には一緒 NULLやポインタ演算を使う場合はポインタを使う 本人じゃないと分からんけど そういった点でセマンティクスが違うと言ってるのかもしれない
555 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:04:28.94 ] >>552 全く違う。ポインタを理解していないのはあんただ。 前者は内容を更新し、後者はポインタを更新する。
556 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:09:27.37 ] ポインタを理解してないのか、演算子の優先順位を理解してないのか どっちなんだろうな。
557 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:12:58.44 ] >>555 どっちも結果を捨てているから一緒じゃねぇか。 って突っ込もうと思ったが、ポインタ版は在らぬところを指してしまうからやっぱり拙いかな?
558 名前:530 mailto:sage [2012/06/06(水) 12:21:48.86 ] ありがとうございます。 >>539 >>542 とりあえずは、ws2_32.dllの非同期通信スレッドが 他のスレッドに邪魔されないように、優先度を上げようと思っています。 >>540 これで行けそうです。ありがとうございます。
559 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:22:27.46 ] >>552 *p1++; は *(p1++); になるから (*p1)++; って書かないと参照の方と同じ処理にならないよ
560 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 12:59:12.13 ] > どっちも結果を捨てている お前大丈夫か?
561 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 14:47:40.54 ] >>558 言語のインストーラがやたらと重いし時間が掛かるのでいつもmsiexexcexeをタスクマネージャで 一個下の優先度に変えているぜ マルチコアだと関係ないと思われるかも知れないがそれでもタスクの切り替えの時に何か引っ掛かる
562 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 15:55:12.46 ] c++のbool型って1バイト使ってますよね? bool型の変数を本当に1bitで使うことって出来ますかね? 具体的に言うとboolの配列を出来るだけ多く使いたいので、メモリ節約することで単純に宣言した場合の8倍の量使えるように出来ないかな思ったんですが・・・
563 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 16:06:14.41 ] bitsetを使おう
564 名前:530 mailto:sage [2012/06/06(水) 16:19:46.29 ] >>561 マルチコアでも、全部のコアが100%に近い場合は、 優先度が顕著に影響しますね。 言語を頻繁にインストールしているのですか?
565 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 17:10:27.14 ] >>564 そんな事はないけどあるコアを100%使う時に気づいた 100%使うような処理は優先度を一つ落とすべきだと思った >>562 Proxy Classを使うと実現可能だと思うけど遅いと思うぞ
566 名前:562 mailto:sage [2012/06/06(水) 17:30:22.35 ] >>563 ,565 bitsetで出来たのでこれでやってみます ありがとうございました
567 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:10:51.82 ] コンストラクタ・デストラクタ呼び出しについて、 new deleteではなくmalloc、コンストラクタ、デストラクタ、freeとやってしまって問題ありますか? 呼び出し忘れの可能性が増えること以外で
568 名前:552 mailto:sage [2012/06/06(水) 21:11:06.78 ] 演算子の優先順を考慮していませんでした (*p)++;ですね 慌ててて書き込むとダメですね 要は func1を p1 = 0; func2を *p1 = 0; として結果は同じことを確認したかったのです
569 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:26:40.20 ] >>567 問題ない デフォルトのoperator newは大抵mallocを使ってる
570 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:32:58.30 ] そうですか、とりあえず安心 では続けて質問・・・ class Hoge { public: int hensu; Hoge(){hensu = 0;} } // Hoge* hogeP = (Hoge*)malloc(sizeof(Hoge)); hogeP->Hoge();//エラー hogeP->Hoge::Hoge();//OKっぽい、hensu = 0になっている 上記エラーとOKの差の意味ってなんでしょう?
571 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:46:04.45 ] 本来は両方エラーだがコンパイラの独自拡張が下の例だけ対応しているだけのこと
572 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:47:15.64 ] >>570 配置new ideone.com/ate3L
573 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:48:31.56 ] なるほど・・・気にしたら負けな世界ですかね、あんまり深追いしないでおきます
574 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 21:51:11.80 ] > new(p) A(); 初めて見る書き方です。replacement newですかね?勉強してみます
575 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:08:51.39 ] >>569 おいおい変な事を教えるなよ 規格票に従え
576 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:10:22.34 ] だいたい継承関係にあるクラスの派生クラスをdeleteせずにfreeしたらちゃんと 基底クラスのデストラクタ呼び出してくれるのか?よく考えろ
577 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:13:45.30 ] 大概のライブラリでbitsetってスレッドセーフじゃないんだよね…vector<int>より結局遅くなるケースがおまんちん(´・ω・`)
578 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:15:37.02 ] POD型以外はmallocじゃ正しいサイズになる保証もないしな。
579 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 22:26:03.75 ] 引数付きコンストラクタも呼び出せないしな
580 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 23:48:03.25 ] >>575 具体的に >>576 されるけど、何がよく考えろ? ideone.com/C8PJH >>578 sizeofが正しいサイズを返さないってこと? sizeofにはvtblもアラインメントのパディングも反映されるし mallocの開始アドレスは基本型のアラインメントも保証されてる >>579 呼び出せるけど、確認してから言ってるの? ideone.com/TKP9g
581 名前:デフォルトの名無しさん mailto:sage [2012/06/06(水) 23:56:44.79 ] >>576 >freeしたらちゃんと というか継承以前にfreeとデストラクタは関係無い
582 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:18:29.56 ] 質問させてください 引数で可変サイズの2次元配列を受け渡すにはどうしたらいいんでしょうか? int det(int[][] a, int n) { みたいに2次元配列とサイズをうけとってサイズに応じて計算したいんですけど…
583 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:29:35.85 ] >>580 だれもplacement newの話はしてないんだが・・・ 頭おかしい?
584 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:32:38.67 ] >>582 C#のジャグ配列みたいな奴って事? それじゃポインタのポインタのポインタもしくはポインタのポインタのリファレンスを渡して 行もしくは列方向が伸び縮みするようならreallocもしくはC++ならvectorを使った方がいいね 俺自身はvecctorが常に今の行数と行ごとの列数が簡単に把握出来て好きなんだが
585 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:33:30.43 ] ちなみにポインタのポインタではいけないのは、呼び出し元に行方向にreallocした 場合の結果を返せないから
586 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:34:53.65 ] >>582 こういうの?std::vector使った方が良いとは思うけど ideone.com/pspcT
587 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:36:37.16 ] >>583 どの部分に対するレスかも書けないお前の頭がおかしい
588 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:40:51.82 ] int det(int *, int); det((int *)a, (sizeof(a) / sizeof(int));
589 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:53:17.89 ] >>587 何でも人のせいにすんなカス 自分の文章を読む能力の不足を棚に上げて偉そうに
590 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 00:57:17.14 ] >>589 で、結局お前は>>580 のアンカ先のうちどれなわけ? それを書けと言ってるんだが
591 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:04:38.95 ] お返事ありがとうございます >>584 ,586 C言語の話でしたすいません >>585 とりあえず配列は READ ONLY で動いてくれれば… >>588 ためしにしたのプログラムでコンパイルしてみたんですけど a[1][1] でエラーになります メソッド内で要素にアクセスするにはどうすればいいんでしょうか… int det(int *a, int n) { return a[1][1]; } int main() { int a[2][2] = {{1, 2}, {3, 4}}; printf("%d\n", det(a)); return 0; }
592 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:09:32.39 ] >>582 ideone.com/tQkZx やっぱりC++とmalloc/free/reallocを組み合わせるのは気が引けるな std::vector<std::vector<int> > を使うか自前のクラスを作りたい
593 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:11:20.40 ] >>583 の正体は次のどれ? A:>>575 B:>>576 C:>>578 D:>>579 オーディエンスで。
594 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:12:46.86 ] >>591 >>586 をCにした ideone.com/VazAq
595 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:29:56.54 ] >>594 おーーー この方法で動ききました ほんとにありがとうございます! 助かりました! int det(int *a, int n) { return *(a+1 * n + 1); } int main() { int a[2][2] = {{1, 2}, {3, 4}}; printf("%d\n", det((int *)a)); return 0; } >>592 int det(int **&a, int n) { return a[1][1]; } って書き方試してみたんですけど printf("%d\n", det((int **)a, 2)); だとコンパイルとおらなくて int **b = a; printf("%d\n", det(b, 2)); で無理やり型あわせてわたしてみたらコンパイルできたんですけど動かなかったです
596 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:45:02.40 ] >>595 >>592 はC++だよ
597 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:48:28.56 ] >>596 そうなんですけど Cでも int**& って書き方自体できたので メソッド中で a[1][1] って書き方でアクセスできれば楽かなって試してみたんですけどダメでした Cで2次元配列扱うのって結構大変なんですね…
598 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:52:46.91 ] >Cでも int**& って書き方自体できたので やめてください
599 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 01:56:23.42 ] >>597 コンパイラが a[1][1] を *(a+1 * n + 1) のような計算に変換してくれているので nの部分をコンパイラが認識出来ないとどうしようもない mainの中で書けるのは int a[2][2] という定義が見えているため ↓のように認識させれば a[1][1] のように書けるけど1次元分以外は固定になってしまう ideone.com/vgeLc
600 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 02:09:39.53 ] >>599 なるほどです #define ならできるのはわかるんですけど 配列サイズをちっちゃくしながら再帰的にこのメソッドをよびたいので 変数で可変じゃないと困るんですよね… ちょっとソースが醜くなるけど 一応やりたいことは >>594 でできそうなのでこれでかいてみます 本当にみなさんありがとうございました
601 名前:デフォルトの名無しさん mailto:age [2012/06/07(木) 06:55:51.82 ] C++ class Hoge{ private: int hogehoge; }; このclassをvectorに4つ格納したいのですがどう記述すればいいのでしょうか 型の宣言がわかりません。 vector<Hoge> array(4) これじゃだめなんですか?
602 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 08:21:09.34 ] #include <vector> class Hoge{ private: int hogehoge; }; std::vector<Hoge> array(4);
603 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:31:48.34 ] .NETで開発する場合C++/CLIは必須ですか?
604 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 20:45:19.07 ] いいえ
605 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:26:18.99 ] >>604 だとするとCLIはいつ使うのですか?
606 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:32:22.18 ] >>605 d.hatena.ne.jp/itaro3/20110727/1311716477 これ見て考えろや でもここまでするなら普通にC/C++使えと思う 既存の.NETのリソースを活用したい時だけか
607 名前:デフォルトの名無しさん mailto:sage [2012/06/07(木) 21:33:34.20 ] >>606 ありがとうございます!!!!!
608 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:20:14.46 ] 久しぶりにクラスのポインタの配列をnewしようとしたら記述方法が解らず過去のソース漁っちまったぜ 何でこんな記述方法なんだ
609 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:26:58.79 ] バカ避け
610 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 17:43:51.53 ] >>608 勘違いしてたらごめん、普通な記述方法だと思うけどコレと違うの? ideone.com/ZCwKK
611 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:07:55.41 ] >>610 自明ではないなあ、確かに調べたくなる。 int *p, *q; なのに int* [10];。
612 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:08:13.99 ] Bjarne Stroustrup氏 インタビュー www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
613 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 19:31:09.43 ] そこそこ有名な古文書ですね
614 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 20:28:57.23 ] >>611 配列のnewは type* p = new type[n]; なのでクラスのポインタ(type = cls*)なら cls** p = new cls*[n]; まとめて変数を定義する構文は欠陥品みたいなもんだから使わない方がいい 理解云々より「型 変数,変数;」にならない場合があるシンタックスがキモイ
615 名前:デフォルトの名無しさん mailto:sage [2012/06/08(金) 23:18:54.25 ] ポインタ配列は使わずにptr_vector使ってるわ
616 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 00:09:07.32 ] >欠陥品みたいなもん 聞いたことないわ 脳内か?
617 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 01:31:56.33 ] 禿がそんなようなこと言ってた気がする
618 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 06:33:12.18 ] int *p, *q; int* p, q; どっちが意図通りか分かりにくい
619 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 09:22:15.62 ] >>616 C++言語設計者曰く Bjarne Stroustrup's C++ Style and Technique FAQ www2.research.att.com/~bs/bs_faq2.html#whitespace >A ``typical C programmer'' writes ``int *p;'' >A ``typical C++ programmer'' writes ``int* p;'' >... >Stick to one pointer per declaration and always initialize variables and the source of confusion disappears.
620 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 10:32:50.57 ] [C++設計と進化]でもCの宣言シンタクスをdisってるよね。 構文を変えようとしたけどCユーザーの反発とか色々あって放置に決めたっていう。
621 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 11:10:58.17 ] >>618 どっちがどうなのかさっぱりだ 基本Cな俺は上で記述したくなるけど
622 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 12:27:10.29 ] int*をtypedefしたらさらにややこしい
623 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 13:20:15.63 ] いやそこは#define だろ
624 名前: ◆QZaw55cn4c mailto:sage [2012/06/09(土) 13:47:33.95 ] なんでもありの #define は避けれるのであれば避けたほうがいい。
625 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 14:35:41.84 ] コテはアスペとわかっちゃいても ヤッパむかつくな
626 名前: ◆QZaw55cn4c mailto:日常やってるjね。野見祐二love [2012/06/09(土) 15:12:12.59 ] >>625 コードをみせてくれ。話はそれからだ。
627 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 15:46:21.13 ] ナッパむかつくわ
628 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:11:59.64 ] ラッパズボン
629 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 21:47:37.67 ] ガッペむかつく
630 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:03:37.47 ] charの配列に2バイト文字列が入ってるものをifとかで場合分けしたいんですが、どーしたらいいんでしょう? 別の事情でstring型は使うことができないんです 初歩的な質問ですいませんがよろしくお願いします
631 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:14:05.73 ] 正確ではないと思うが、全角文字の1バイト目を探すというのはどうだろう。 0x80〜 とかその辺だった記憶
632 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:21:18.75 ] >>631 回答有り難うございます 文字列で場合分けしたいので一文字じゃダメなんです…… でも参考になりました ありがとうございます 別で聞いた所strcmp?とかいうもので解決するそうです もう少し頑張ってみます
633 名前:デフォルトの名無しさん mailto:sage [2012/06/09(土) 23:59:18.06 ] いや、charの配列を頭から一文字ずつチェックして その2バイト文字列の文字コードでマルチバイト文字の1バイト目であることを示す値が出てくるかどうかで判断するって話だろ
634 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 00:17:31.99 ] なんでそうなるw
635 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 00:24:29.07 ] 3バイト文字列
636 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 05:57:32.60 ] >>630 扱うコードは SJIS? UNICODE?
637 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 06:03:28.19 ] UTF8以外は認めない
638 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 11:41:33.27 ] UTF32でおk
639 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:11:18.15 ] Bjarne Stroustrup ってなんて読むの? バカジャネ ストラップ でいいの?
640 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:18:44.54 ] Wikiみろ。しかし、一般にはハゲである。
641 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 12:22:38.71 ] びよよん ストローストラップ
642 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 16:57:25.35 ] 初歩的な質問ですがよろしいでしょうか? C++における関数や関数の呼び出しにおける変数の扱いについてです。 関数や関数内にて宣言している静的な変数は、関数を呼び出すたびに実行に必要なメモリ領域を確保しているのでしょうか? 関数、変数ともにstatic、inlineなどがついていない関数を前提とします。
643 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:06:46.76 ] >>642 >関数や関数内にて宣言している静的な変数 >関数、変数ともにstatic、inlineなどがついていない 矛盾しとるがや。
644 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:34:56.98 ] >>643 すみません つまりこういうことです。 int func() { int var; } ここでのfuncやvarは実行されるたび確保されるのでしょうか?
645 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:38:33.59 ] 仕組みを知りたいなら"スタック 自動変数"でぐぐればわかるよ
646 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 17:51:53.23 ] >>645 ありがとうございます。 早速調べさせていただきます。
647 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 18:04:43.04 ] うるせぇ、許可なんか要らないから勝手に調べろよ。
648 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 18:36:02.03 ] ハイハイワロスワロスwwww
649 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:02:24.84 ] 許可を求めてない件
650 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:17:56.41 ] まぁアスペなんだろ かかわらないほうが吉
651 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:40:35.31 ] そもそも確保しなきゃ使えんだろ
652 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 19:51:54.42 ] 最初に確保して使いまわしているとかそんなのも考えていたんじゃないか? そうなると再起関数の部分とかで矛盾が発生するとか考えればわかるけど
653 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 20:03:12.96 ] 静的な変数≠static と思っているあたりもっと根本的なところが
654 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 20:09:06.45 ] Qが最近あちこちのスレでコテ消して暴れているような気がする
655 名前:デフォルトの名無しさん [2012/06/10(日) 21:02:46.39 ] >>653 悪い質問者じゃないんだけどさ・・・ 関数内での変数ってstatic明示的に書かない限りAuto変数だと思っていた kwsk教えてエロい人
656 名前:デフォルトの名無しさん mailto:sage [2012/06/10(日) 21:05:14.17 ] つまり>>643 だよ
657 名前:デフォルトの名無しさん [2012/06/10(日) 21:12:59.86 ] そういえば、確かに静的変数なのにstaticがついていないのは矛盾している・・・。 ごめんなさい、なにか勘違いしていました。
658 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 01:56:38.09 ] >>654 Qは指パッチンで何でもできるからな。
659 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 03:32:25.29 ] >>654 気のせいだろ?このスレにしてもQにしてはレベルが低い、というかQならとうに知ってるはず。
660 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 03:35:58.64 ] いやQの正体はこんなもんじゃないのかな
661 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 04:59:12.55 ] むしまるQ
662 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 10:25:25.11 ] DQN
663 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:13:36.00 ] C++のコンパイラ、IDEは何を使えばいいでしょうか(各コンパイラは主として何が違うのでしょうか) 今のところ、Borland C++ Compiler、BCC Developerを使おうと思っています
664 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:30:43.85 ] IDEが決まってから環境(OSとか)を合わせるの?
665 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:40:13.46 ] OSはWindowsXPとWin Vistaです 他にも(使用環境について)何か必要でしょうか?
666 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 15:55:48.00 ] Visual C++ 2010 Express でいいんじゃね
667 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 16:33:13.06 ] フリーのやつ全部試せ 無駄にはならん
668 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 16:46:17.50 ] LSI C 3.30試食版
669 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 17:03:17.01 ] Borland C++ Compilerはクソ古い上に公式が消滅してるし Linuxメインでない限りmingw,cygwin使うのはアホだし VC++除けば Digital Mars C/C++ Compilerくらいか?
670 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 18:56:50.56 ] 用途というか、目的によって違うと思う。 簡単なWindowsアプリをお手軽に作ってみたいというならVC++で良いと思う。 C言語を純粋に勉強したいというなら、gcc(Mingw,cygwin)+eclipse(CDT)の方が良いと思う。 VC++のなんとなく嫌な所はC言語としては、Microsoftの方言があると思える所。 GCCの嫌な所は、Windowsアプリを作るのが面倒くさい(という印象)がある所。 「Windowsのアプリを作り易い」ということは、「WindowsのAPIを簡単に使える」という話だから、 C言語の本体とは直接関係ないけどね。
671 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 19:53:51.53 ] C++だって言ってるだろ
672 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 20:01:11.29 ] じゃあ、C言語をC++言語に、そして、gccをg++に、読み替えてください。
673 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:01:39.16 ] VC++のCに方言(っていうか、独自拡張?)なんてあったっけ? C++は規格合致してない方言まみれだけど Cは89のままで止まってて、かなり素直だと思うんだけど^^; むしろ99の機能を一部取り入れてるgccの方が独自拡張多くない?
674 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:26:55.49 ] 追加仕様はGCCが未対応はVCが多いイメージ
675 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:30:58.92 ] >>673 msdn.microsoft.com/ja-jp/library/34h23df8.aspx
676 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:34:19.97 ] __declspec(selectany) 便利だよね
677 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 21:54:35.82 ] gccもVC++も色々拡張があるんだね、知らなかった www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html
678 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 22:15:19.79 ] >>677 ふーん、古いページだけれどもその当時の時点でいろいろあったんだ。 >配列変数をコピーする。 は標準じゃなかったっけ。
679 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 22:41:43.30 ] お前構造体と勘違いしてんじゃね
680 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:00:20.26 ] 配列コピーはGCC拡張だったけど今やるとエラーになる 今の一覧はこれ gcc.gnu.org/onlinedocs/gcc/C-Extensions.html gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html
681 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:15:12.86 ] >>679 そだった。なるほど。
682 名前:デフォルトの名無しさん mailto:sage [2012/06/11(月) 23:20:40.95 ] 配列なんてここ数年使ったときねーな
683 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 03:10:00.73 ] std::arrayが使えるようになってまた使い出した
684 名前:デフォルトの名無しさん mailto:sage [2012/06/12(火) 07:10:39.82 ] 独自のものには__が付いてるから許容範囲
685 名前:663 mailto:sage [2012/06/13(水) 14:20:05.80 ] レスしてくれた方々ありがとうございます。返信遅れてすみません まずはVisual C++ 2010 Express使ってみて 不満があるようならg++など順番に変えていこうと思います (cygwinのインストールはしているのですが、使い方があまり分かっていないので勉強する必要が・・・)
686 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 12:47:46.33 ] std::ostreamってWindows CEでも使える?
687 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 15:15:04.81 ] 試したら?
688 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 19:47:41.13 ] C++で、外部の.exeファイルを実行するにはどうすればいいですか? 使っているソフトはVS2010です
689 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 20:00:18.12 ] ExecuteExternExeFile
690 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 20:01:49.08 ] >>688 普通の起動 CreateProcess エクスプローラーと同じようにファイルを開く場合 ShellExecute コマンド実行(起動したプロセスが終わるまで待機) system msdn.microsoft.com/ja-jp/library/277bwbdz (v=vs.71).aspx
691 名前:デフォルトの名無しさん mailto:age [2012/06/14(木) 23:11:18.71 ] #include <iostream> #include <string> using namespace std; int main() { string str; while(1) { cin >> str; if(str=="end") break; cout << str.size; } return 0; } これエラーが出るんですがstrの要素数を出力する場合どう書けばいいんですか? VC++2008です。
692 名前:デフォルトの名無しさん mailto:sage [2012/06/14(木) 23:46:53.91 ] size → size() ideone.com/YBuvr
693 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 06:19:36.46 ] 韓国の国内総生産(GDP)を考慮した個人負債規模が財政危機に陥っているスペイン並みに深刻な水準となった。 個人負債の増加速度は経済協力開発機構(OECD)加盟国で3位と平均を大きく上回った。 大韓商工会議所が14日に発表した「個人負債現況と政策課題」報告書によると、 2010年の韓国のGDPに対する個人負債の比率は81%でOECD平均の73%より高かった。 これは財政危機を陥っているスペインの85%に迫る水準だ。ギリシャの61%より20ポイント高い数値だ。 個人負債増加幅も急速に拡大していうる。2006年以後鈍化した個人負債増加率は2010年に前年比2.4ポイント上昇の9.8%を記録した。 【今日の感想】この記事を読んで・・・ 面白い (40件) 悲しい (2件) すっきり (1件) 腹立つ (0件) 役に立つ (6件) japanese.joins.com/article/707/153707.html?servcode=300§code=300
694 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 07:00:42.74 ] 面白い 役に立つ
695 名前:デフォルトの名無しさん mailto:sage [2012/06/15(金) 19:56:02.03 ] .うん 日本人も他人の事言えないね。 【今日の感想】この記事を読んで・・・ 面白い (349件) 悲しい (19件) すっきり (44件) 腹立つ (4件) 役に立つ (36件)..
696 名前:デフォルトの名無しさん mailto:sage [2012/06/16(土) 06:09:17.53 ] 朝鮮人の嫌がらせにも マニフェストをなにも守れない民主党の嫌がらせにも 耐え忍ぶ民族
697 名前:デフォルトの名無しさん [2012/06/17(日) 06:24:34.95 ] class tree { public: tree* right; template <tree* tree::*right> void func1(tree* t) { tree *p = t->*right; } }; こんなクラスを作ってコンパイルすると以下のようなエラーになります。 test.cpp: In member function ‘void tree::func1(tree*)’: test.cpp:7: error: ‘((tree*)this)->tree::right’ cannot be used as a member pointer, since it is of type‘tree*’ func1をfriend関数にするとコンパイルが通るのですが、メンバー関数にすると通りません。 どこがまちがってるでしょうか?
698 名前:デフォルトの名無しさん mailto:sage [2012/06/17(日) 11:01:04.58 ] func1の中のrightがテンプレート引数でなくtreeのメンバのrightとみなされてる
699 名前:デフォルトの名無しさん [2012/06/17(日) 19:06:53.96 ] なるほど、テンプレート引数名とメンバ名がかぶってたと。 テンプレート引数を変更したらコンパイル通りました。 ありがとうございました。
700 名前:デフォルトの名無しさん mailto:age [2012/06/19(火) 05:42:11.94 ] C++にはrubyのsuperみたいな予約語はないのでしょうか?
701 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 05:46:13.06 ] 基底クラスのメンバ呼びたいとかなら 規定クラス名::func() で呼べるよ
702 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 06:38:25.59 ] __super
703 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 07:08:52.15 ] >>700 ないのでは。C++では派生クラスのコンストラクタから基底クラスのコンストラクタへの綱渡りは基本できなかったと思う。
704 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 07:10:00.84 ] ああ、いいかたがわるかった。綱渡りのための宣言はあったね。ただ super はない。
705 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 10:49:09.38 ] たじる継承の時、superではどっち呼びたいのかわからんからなー。 あ、もともとメンバ名の衝突がある時点でだめか。
706 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 13:35:14.84 ] たじる継承するにはどうしたらいいですか?
707 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 14:37:25.62 ] まず服をたじます
708 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 15:35:42.57 ] タジン鍋つかうあれか
709 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 16:27:25.98 ] たじってしまいました。 どうしますか?
710 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 16:35:01.47 ] 味噌と醤油どちらをメインにするか決めずに他汁継承すると大変な鍋になります
711 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:32:54.82 ] 更にそこに塩の配列を確保します。
712 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:35:05.28 ] 塩基配列か!
713 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:38:03.73 ] するとあら不思議!!
714 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:39:34.30 ] 多汁した汁が鍋から漏れ出し(リーク)します。
715 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:41:38.83 ] ぶたじる継承・完
716 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:42:50.23 ] BADENDじゃねぇか!!!
717 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:52:09.79 ] ぶたじる継承・第二章 親父の豚汁店を継ぐことを固く決意した主人公。 奇跡とも言われた味を守り抜くことはできるのか。
718 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 17:54:05.22 ] 魔王がカレールーを持って現れた!! どうする豚汁!?
719 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 19:04:58.99 ] >>489-490 ほじくりかえして申し訳ないんだけど、callocってなんかまずいの?
720 名前: ◆QZaw55cn4c mailto:sage [2012/06/19(火) 19:07:12.07 ] >>719 別に問題ないでしょう。わざわざ0クリアをした領域の上に、なにか別の内容をあらためて代入する、という無駄な動きにめをつぶるのであれば。
721 名前:デフォルトの名無しさん mailto:sage [2012/06/19(火) 19:12:58.27 ] うお、即レスども。 その特定の状況のみを考えて>>490 を書いたってことね。どもです。
722 名前:デフォルトの名無しさん mailto:age [2012/06/20(水) 00:05:49.51 ] class Base { }; class Suba : public Base { }; class Subb : public Base { }; Suba g_scene このあとg_sceneの型をSubbに変更するといったことはできるのでしょうか? できるなら書き方の例もお願いします
723 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:25:14.27 ] ごり押しならな・・・・ Subb b = (*reinterpret_cast<Subb*>(reinterpret_cast<void*>(&g_scene))); ただこんなことするプログラマーとはあまり関わり合いたくないレベル
724 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:29:02.27 ] せめてvoid*を介した変換にはstatic_cast使ってくれ
725 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 00:32:04.21 ] そんなのどっちでもいいだろ('A`) 普段もこれからもこんなの書かねぇんだから そもそもLPVOIDは特殊だがポインタのキャストなんだからreinterpret_castでも問題ないんじゃねぇの?
726 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:04:27.18 ] それ以前にこんなウンコードだれが使うんだよwwww
727 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:18:06.44 ] そもそもreinterpret_cast使うんだったらvoid*使う必要ない
728 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 01:54:06.08 ] キャストの使い分けよくわかってないやつ多いからなあ
729 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 03:30:37.91 ] というかC++のキャスト周りで使っているやつみねぇえw Cキャスト使っている奴ばっかだわw
730 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 04:20:06.18 ] それってお前が居る環境が糞ってだけじゃねーか
731 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 06:31:49.68 ] すんません(´・ω・`)
732 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 06:33:40.41 ] >>722 >Suba g_scene; こう書かずに Base *scene; こう宣言すれば?Baseが必要なメンバーを網羅した抽象化クラスなら問題ない。 Base *scene; Suba a; Subb b; scene = &a; scene = &b; 基本的にはこんな感じで差し替えてやればいい。もし、Suba、Subb固有の操作が したいなら、そこだけsceneを使わずaとbを直接参照して操作する。 間違ってもダウンキャストしちゃだめよ。
733 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:23:49.61 ] class ABC{}; std::vector<ABC*> xyz; void erase(void) { while(xyz.empty()){ delete *(xyz.begin()); xyz.erase(xyz.begin()); } } vectorの要素を解放するコードは、これ以上短くなりますか? または、もっと簡潔に記述出来ますでしょうか?
734 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:25:47.55 ] >>733 > while(xyz.empty()){ じゃなく、 > while(!xyz.empty()){ でした、済みません。
735 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 09:46:26.78 ] std::for_each(xyz.begin(), xyz.end(), [](ABC* p) { delete p; }); xyz.clear();
736 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 10:35:51.68 ] C++11だったら std::vector<std::unique_ptr<ABC>> だろJK
737 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 10:47:50.02 ] >>735 ありがとうございます、勉強になりました。 >>736 じゃないのです。
738 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:22:00.38 ] どうしてboost::ptr_vectorを使わないのか
739 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:28:09.53 ] 依存をstd::に留めたい人も割りと居る
740 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 12:42:32.69 ] どの場面でもboostが許されている訳ではない。
741 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 13:55:11.46 ] 処で、>735はC++11? だとしたら>733はC++05(だっけ?)の範囲では妥当解?
742 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:42:02.22 ] 全部消すなら一々eraseするより 後でclearのほうが効率が良いと思う一応
743 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:43:53.32 ] コードの短かさだけで言えばそうかもしれんが 先頭から一つずつeraseとか無いわ 普通にforでdeleteしてclearか、せめて最後の要素からでないと
744 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 14:45:00.27 ] >>743 は>>741 宛
745 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 16:08:17.04 ] それ以前 無条件にdelete出来るポインタをvectorに格納する意味が判らん
746 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 16:30:53.64 ] >>733 >>741 backとpop_backでもっと短く,速くなる ideone.com/zQdD0 4.1秒 while(!xyz.empty()){ delete *xyz.begin(); xyz.erase(xyz.begin()); } ideone.com/R92Ik 0.02秒 while(!xyz.empty()){ delete xyz.back(); xyz.pop_back(); }
747 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 17:22:39.84 ] >>745 わからないならクチを挟むな
748 名前:741(≠733) mailto:sage [2012/06/20(水) 17:28:45.94 ] >742-746 なるほどね。勉強になったよ。THX!
749 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 17:46:17.97 ] >>748 もしデストラクタでの処分方法を考えていたのなら、eraseなりclearなりは要らないと思う
750 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 18:00:47.01 ] for_eachやfor(...;++it)ならな
751 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 18:01:48.71 ] ああ、そうそう、そこが抜けてたごめん。
752 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:22:51.40 ] クラス→(継承)→サブクラス→(継承)サブサブクラス とした場合サブサブクラスやサブクラスやクラスの引数なしのコンストラクタって全部動きますか?
753 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:26:11.48 ] 当たり前だ
754 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:27:30.65 ] >>753 ありがあとう
755 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:32:31.05 ] デストラクタにvirtualついてなくて乙ることはあるが コンストラクタですっとばしは考えらん
756 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 19:36:30.29 ] らんらんるー♪
757 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:18:42.52 ] 基底クラスにキャストしたサブクラスの仮想関数を呼び出すと 基底クラスのメソッドとサブクラスのメソッドのどちらが呼び出されますか? サブクラスのメソッドが呼び出されるとした場合、 サブクラスのフィールドを仮想関数で弄ることはできますか? アップキャストして基底クラスの状態でまとめたもの(配列)を、 ループで一気に仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたいです。
758 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:25:00.65 ] 何の為の仮想関数なのかわかってないな
759 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:29:36.12 ] 仮想関数なんだからどっちが呼ばれるなんて一目瞭然
760 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:32:12.85 ] >>758 すいません、解説サイトがよくわからなくて・・ >>759 つまり・・・!?
761 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:35:33.10 ] >>760 ttp://www5c.biglobe.ne.jp/~ecb/cpp/06_07.html これ見ればどっちが呼ばれるかわかるだろ
762 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:49:52.24 ] >>757 > 仮想関数を呼ぶことで多種類のサブクラスそれぞれに異なる処理をさせたい それこそが多態性
763 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:53:24.55 ] 仮想関数と言いながら、メソッドとも呼ぶ・・・ メッセージ機能ないんだから関数で通せよ
764 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:54:44.78 ] メゾットなんていわねーよ メンバ関数だろ
765 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:54:53.86 ] >>761 おお、サブクラスのメソッドが呼ばれるってことですね ありがとうございます!
766 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 20:58:44.34 ] >>763 すいません
767 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:06:54.73 ] メゾットって誰?
768 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:07:38.92 ] リゾット
769 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:13:40.50 ] Metzod : (独) メゾッド 特に強くを意味する言葉。 日本ではメッゾフォルテなどが有名。
770 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:14:52.08 ] Matzとではどっちが強いですか?
771 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:15:22.00 ] Matzは全角英数字で殴り続けると死ぬ
772 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:16:08.10 ] その綴りなら読みは メツォット だろ?
773 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:17:18.74 ] いやメトゾッドだ
774 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:19:17.74 ] zeit ツァイト
775 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:19:56.51 ] tはノイズだ 正しくはMezod
776 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:21:09.47 ] それならやっぱりメツォット
777 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:39:45.20 ] ↑おまえの負けー
778 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:44:41.05 ] ↑↑↓↓←→←→BA
779 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:47:07.13 ] ティリティリティ〜♪
780 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 21:51:50.84 ] ドイツ語でメゾッドと読ませたいならmesodだ
781 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:01:20.13 ] メソッドもサブクラスもフィールドもC++の標準用語じゃないでしょでしょ 多分C#辺りから渡ってきた人。
782 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:06:59.27 ] 英語でどう呼ぶか、だな
783 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:32:59.33 ] Member Functionは、流用元となったSimulaのMember Procedureに準じた言葉。 Methodは、SimulaのMember Procedureに対し、MessageとMethodが分離されていて 別物であることを強調したSmalltalkとObjective-Cの用語。 近頃の言語は、そういう背景を踏まえずにMember Procedureと変わらんものを Method, Methodと連呼する。ちゃんとMessageを実装している言語に失礼だよね。
784 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:53:38.10 ] 勉強になります
785 名前:デフォルトの名無しさん mailto:sage [2012/06/20(水) 22:58:42.38 ] 言語の背景でプログラム書くわけじゃない
786 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 00:25:00.59 ] プロセジャーとか言い出す講師にあたったときはひどかった
787 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 05:51:46.07 ] 「プロセージャですよね?」と聞き返すべき
788 名前:デフォルトの名無しさん [2012/06/21(木) 08:19:27.01 ] AVL木と、何にもしてないただの木をC++で実装して、大量のランダムデータをinsertしてremoveする、というのの速度を比較したんですが、 データが500万件を越えたあたりでAVLの方が速く終わるようになりました。 insertくらいは普通の木が常に速いと思ったのに。これって正しいですか?
789 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 08:36:09.84 ] >>786 プログラムをプラム、プロシージャをプロセ、アセンブラをアセムって呼ぶ ICEベンダーの技術者よりはましだと思う。
790 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 10:01:50.95 ] あらゆる主要板にスレッド立てられてますなあ こりゃアフィにも広まるし 完全に日テレはネットに嫌われるね ■モ娘(狼) 日テレ韓国マンセーで遂にGP帯オール一桁wwwwwwwwww hayabusa3.2ch.net/test/read.cgi/morningcoffee/1335226115/ ■ニュー速(嫌儲) 最近フジより韓流ゴリ押しの酷い日テレ GP帯(19〜23時)視聴率オール一桁達成 engawa.2ch.net/test/read.cgi/poverty/1335228771/ 【フジ・日テレ死亡】テレビ朝日視聴率3冠おめでとうございます engawa.2ch.net/test/read.cgi/poverty/1340233396/ ■ニュース速報 【第二のフジテレビ】日テレ、韓流ゴリ押しで大爆死 engawa.2ch.net/test/read.cgi/news/1335230981/ ■なんでも実況J 【朗報】韓流ゴリ押しの日テレが低視聴率 hayabusa.2ch.net/test/read.cgi/livejupiter/1335229538/
791 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 00:36:20.43 ] State/Strategyパターンや関数ポインタテーブルを使い、動的に呼び出し先を変えるとする。 どうしてもその呼び出し先ごとに異なる変数を与えたい場合、 適当な変数を用意して代入し、呼び出し先で解釈してもらうという手法はアリ? 例えば変数hogeを用意しておいて、Foo(int hoge) と Bar(int hoge) とでは、hogeの意味(使用目的)が異なるとか。
792 名前: ◆QZaw55cn4c mailto:sage [2012/06/22(金) 01:57:49.23 ] >>791 関数ポインタテーブルでごにょごにょ、ならばやったことありますが、十分にありだと思います。 テーブルに載せてる関数のなかで一番たくさん引数をもつものにプロトタイプをあわせていました、泥臭いけど。 宿題スレでやってcodepad にもあげたけれどもみつけられかったごめんなさい。
793 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 02:00:40.61 ] >>791 ナシ 呼び出し先によって意味が変わるんじゃ呼び出し側で意味を持たせた引数を指定できない int f1(int i, int j) { static int v[5] = { 1, 2, 4, 8, 16 }; return v[i] + v[j]; } int f2(int i, int j) { return i / j; } int main() { int (*pf)(int, int) = 0; // pf(1, 0); // f2が呼ばれるならアウト // pf(9, 3); // f1が呼ばれるならアウト }
794 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 02:04:08.51 ] 状態遷移がわかっていて、引数変える分には、ハマることはないような
795 名前:791 mailto:sage [2012/06/22(金) 02:58:37.43 ] >>792-794 ありがとう。意見は割れるかあ。 便利だけど、危険性が伴うからホントどうしようかなと悩んでた。 そりゃ0除算や配列の外側へのアクセスなんかは、数値の範囲チェックをすれば良いだろうけど、 それでも心理的要因などが原因ではまる可能性はあるからなあ。 ぶっちゃけ使ってて気持ち悪いというのが大きいがw 関数ポインタじゃなくてクラスを利用しているなら、キャストを使うことも出来るだろうけど、 それをテーブル等に収めようとすると結局同じ問題が発生するんだよね。 うーん、mapで持たせたほうがスマートかなあ?
796 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 03:21:50.32 ] 書いてみて試行錯誤するしか わかってるなら、矛盾した箇所とか出てくるだろうから、そこをどうするかでしょ
797 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 06:55:44.09 ] >>791 オブジェクトで実装するのであれば無し。 そもそも、ステートオブジェクトに外から関数の引数で値を渡すんじゃなく、 関数が呼ばれたタイミングでステートオブジェクトに情報を取得させればいい。 情報の取得元は、ステート開始以前にコンストラクターとかであらかじめ指定してやる。 StateA state1( &source1 ); StateB state2( &source1 ); StateC state3( &source2 ); state1.ChangeNextState( &state2 ); state2.ChangeNextState( &state3 ); state3.ChangeNextState( &state1 ); next_state = &state1; while( next_state ) next_state = next_state->Execute();