スレを勃てるまでもないC/C++の質問はここで 19
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/06/15(水) 11:47:04.75過去ログ
01 http://pc11.2ch.net/test/read.cgi/tech/1167476845/
02 http://pc11.2ch.net/test/read.cgi/tech/1178503366/
03 http://pc11.2ch.net/test/read.cgi/tech/1187521676/
04 http://pc11.2ch.net/test/read.cgi/tech/1221633708/
05 http://pc11.2ch.net/test/read.cgi/tech/1230516307/
06 http://pc11.2ch.net/test/read.cgi/tech/1231564903/
07 http://pc11.2ch.net/test/read.cgi/tech/1232983248/
08 http://pc12.2ch.net/test/read.cgi/tech/1235921779/
09 http://pc12.2ch.net/test/read.cgi/tech/1240022781/
10 http://pc12.2ch.net/test/read.cgi/tech/1242300936/
11 http://pc12.2ch.net/test/read.cgi/tech/1245059383/
12 http://pc12.2ch.net/test/read.cgi/tech/1248010352/
13 http://pc12.2ch.net/test/read.cgi/tech/1260842197/
14 http://pc12.2ch.net/test/read.cgi/tech/1269273471/
15 http://pc12.2ch.net/test/read.cgi/tech/1273368706/
16 http://hibari.2ch.net/test/read.cgi/tech/1279285647/
17 http://hibari.2ch.net/test/read.cgi/tech/1285115590/
18 http://hibari.2ch.net/test/read.cgi/tech/1291571263/
0002デフォルトの名無しさん
2011/06/15(水) 19:46:56.63,-=―--、、,,,.―-  ̄ ̄ ヽ√ ̄ ̄ニ ̄-‐ _ィ-‐= 、
彡'" /o 三 `ヽ`ミ、ヽ '´ ,.彡=''"" ̄ `゙ミ
{ (⌒) } ヽ{ " { (⌒) ,l
丶、 ゙ ノ ヽ ノ
ー-- ' ,. 彡〃 、、 、_ー-- ´
丶ミ=-='''"´ ヽヽヽヽ ̄三=―彡
/ / ハ
/ / / / ハ / ヽ ヽ ヽ / ヽ ヽ ヽ
/ ̄ ̄ \
0003デフォルトの名無しさん
2011/06/15(水) 19:54:34.28言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリリッ
言語規格書にはSIGABRTハンドラはreturnしないと書いてある (キリリッ
0004デフォルトの名無しさん
2011/06/16(木) 13:47:58.33C/C++でのマルチスレッドプログラムのいい参考図書とかないですか?
0005デフォルトの名無しさん
2011/06/17(金) 20:52:41.400006デフォルトの名無しさん
2011/06/17(金) 21:00:19.42windowsならWM_KEYDOWNイベントを監視すれば
0008デフォルトの名無しさん
2011/06/18(土) 13:41:59.17lstrcmp()で文字列比較をしているのですが、稀に戻り値の値が間違った値になります。
具体的には、第1引数の文字列の方が辞書順で前にある場合は-1、後ろにある場合は+1が返るはずなのですが
ときどき、辞書順で前にあるはずなのに+1が返ったり辞書順で後ろにあるはずなのに-1が返ったりします。
ビルド環境はVisualStudio2005で動作環境はWindowsVista Buisiness SP2です。
VC6でビルド→WinXPで動作、VC2008でビルド→Win7で動作 の場合は
いずれも問題が起きていません。(確認した限りでは。)
lstrcmp()のかわりにCompareString()を使用しても同じ現象となります。
lstrcmp()、CompareString()ともおなじKernel32.libをインポートライブラリとして使用しているので
これが原因だったりしないかなーと思ったりしますが確証なしです。
なにか分かる方いませんでしょうか?
0009デフォルトの名無しさん
2011/06/18(土) 15:19:35.11その異常が起こる場合のテストケースをうpすれば解決は早いだろう
0010デフォルトの名無しさん
2011/06/18(土) 15:22:53.1200118
2011/06/18(土) 22:17:30.63恐縮ですがお願いします。
>>9
strcmpは使ってないので分かりません。
_mbscmp()で試したところ問題は発生しませんでした。
ちなみにVisualStudioのプロジェクトのプロパティで文字セットは”マルチバイト文字セットを使用する”にしています。
00128
2011/06/18(土) 22:29:04.69>>9
やってること(やりたいこと)は以下。
・文字列配列A と 文字列配列Bをconst指定で別々のヘッダファイルで定義。(文字列はすべて漢字、2文字から7文字、50種程度、内容はABで同一)
・ある構造体メンバに文字列配列Bの中の文字列bのアドレスをわたしておく
・構造体メンバの指している文字列bが文字列配列Aの何番目の文字列か知りたい。
・文字列配列Aの中の文字列bと同じ文字列を探索(辞書順にソートしてあり二分探索で探索)
→この際にlstrcmp(文字列a,文字列b)というようにして比較。戻り値の正負により探索先を配列の小さい方or大きい方に決める)
・稀にlstrcmp()戻り値の正負が逆に判定される
→このとき二分探索で最後まで探しても文字列が見つからずエラーとなる。
00138
2011/06/18(土) 22:29:57.85※lstrcmpの引数の文字列を文字列と16進でファイルに出力してみたところ、文字列は壊れていない。
※しかし、lstrcmpの戻り値は稀に正負が逆になっている。
※特定の文字列で発生しているという事はなく、ランダムにおかしい結果となる。
※テストプログラムをループさせて試してみたが数万回〜数十万回 lstrcmp()を実施して1回おかしくなる程度
※関係あるかわからないが、テストプログラムを実行する際に他のプログラムを起動させたりするとそのタイミングで発生しやすい。
00148
2011/06/18(土) 22:34:15.41恐らく全て漢字です。(もしかすると ひらがな もあるかも)
動作実績はあるので問題は無いはずと思っています。
0015デフォルトの名無しさん
2011/06/18(土) 22:34:20.39文字列A、文字列B、戻り値のセットでファイルにでも出力して、
何時間でも回してみるといいじゃない。
0016デフォルトの名無しさん
2011/06/18(土) 23:13:07.25あるクラスのオブジェクトのメンバ関数をほかのオブジェクトのメンバ関数の中で呼び出したいときはどうすればよいでしょうか。
そのまま関数呼び出しをすると、コンパイル時に
error: no matching function for call to ‘クラス::メンバ関数(引数)’
というエラーメッセージが出てしまいます。
教えてください。
0017デフォルトの名無しさん
2011/06/19(日) 00:04:02.41static メンバ関数ってやればいいよ
00188
2011/06/19(日) 01:02:03.17やってみました。
VistaSP2ではボロボロとlstrcmpと_mbscmpの結果が違う場合が発生しました。
何時間どころか一発で出ました。
どなたかWinXPやWin7でどうなるかやってみてもらえませんか?
++count;
for(int k=0; k<100000; k++){
for(int i=0 ; i<11; i++){
for(int j=0; j<11; j++){
if((lstrcmp((LPSTR)cmp_dst[j], (LPCSTR)cmp_src[i])) != _mbscmp((const unsigned char *)cmp_dst[j], (const unsigned char *)cmp_src[i])){
0019デフォルトの名無しさん
2011/06/19(日) 01:04:00.73書き込めなかったので分割しました。
ヘタクソなやり方で恐縮ですが。
wsprintf((LPSTR)str_buf, (LPCSTR)warning, cmp_dst[j], cmp_src[i]);
TextOut(hdc, 0, 50+i*20, str_buf, strlen(str_buf));
}
}
}
}
wsprintf((LPSTR)str_buf, count_msg, count);
TextOut(hdc, 0, 0, (LPCSTR)str_buf, strlen((const char *)str_buf));
0020デフォルトの名無しさん
2011/06/19(日) 01:15:32.92フォームアプリケーションだと難しそうで
0021デフォルトの名無しさん
2011/06/19(日) 01:30:19.83なーんか、TCHAR関係を理解してない気がする。そこはおk?
int lstrcmp(
LPCTSTR lpString1, // 最初の文字列
LPCTSTR lpString2 // 2 番目の文字列
);
int _mbscmp(
const unsigned char *string1,
const unsigned char *string2
);
TCHARを使うなら、_MBCSや_UNICODEが定義されているかどうかが決定的。
lstrcmpに渡すポインタを どうキャストして渡すか などで挙動は代わらない。
さらに、以下の「解説」の項目に興味深いこともかいてある。
http://msdn.microsoft.com/ja-jp/library/cc410902.aspx
0022デフォルトの名無しさん
2011/06/19(日) 02:18:33.58ありがとうございます。
0023デフォルトの名無しさん
2011/06/19(日) 05:34:43.91違っても普通のダイクストラ法でちゃんと動く?
0024デフォルトの名無しさん
2011/06/19(日) 17:41:10.53↓これをtypedefせずに一文で書きたい。
typedef char *arr[3];
arr& a;
0025デフォルトの名無しさん
2011/06/19(日) 18:22:07.820026デフォルトの名無しさん
2011/06/19(日) 19:43:04.67char *(&a())[3];
とさらにえぐかったです。
0027デフォルトの名無しさん
2011/06/19(日) 21:16:42.170028デフォルトの名無しさん
2011/06/20(月) 12:22:03.51BYTE配列に、char配列に入れるような文字列(と同じデータ)を、char*から入れたいのですが上手く行きません。
char Cbuff[128] = {"朝日"};
char* pCB = &Cbuff[0];
BYTE Bbuff[128];
memcpy(&Bbuff[0], pCB, sizeof(*pCB)); // 146の整数が入ってしまいます。
sprintf_s((char*)&Bbuff[0], 128, "%s", *pCB); // アクセス違反のエラー。
私は何が理解できておらず、どこを間違っているのでしょうか?
0029デフォルトの名無しさん
2011/06/20(月) 12:35:00.49>sprintf_s((char*)&Bbuff[0], 128, "%s", *pCB);
*pCBの"*"要らない
ポインタの理解がまったく足りてないので
勉強しなおせばいいよ
0030デフォルトの名無しさん
2011/06/20(月) 12:44:10.87勉強しなおしてこいカスが
0031デフォルトの名無しさん
2011/06/20(月) 13:18:53.61よくわかってないのにやろうとしてるのが丸見えになってる。
0032デフォルトの名無しさん
2011/06/20(月) 13:37:44.64これをクリアしないと前に進めない。
よくわかってないのにやろうとするのは悪くない。ただなかなか前へ進めないだけだ。
水前寺清子も歌ってる。でも3歩より下がってはいけない。
003328
2011/06/20(月) 14:38:31.77そしてsizeof・・・実体の大きさを測ってもらう と思っていたら大間違いなんですね。
ポインタが指す変数のサイズをちゃんと測ってくれるものなんですね。
双方思った通りには動いてくれましたが、まだ何か勘違いしているかもなのでポインタについて再学習を始めました。
あまり人様の見よう見まねでコードを継ぎ接ぎしない方が身の為ですね・・。色々ご助言ご指摘、ありがとうございました。
0034デフォルトの名無しさん
2011/06/20(月) 14:53:07.08延々と質面攻めになるのかと思ってたwwwwww
0035デフォルトの名無しさん
2011/06/21(火) 01:39:12.730036デフォルトの名無しさん
2011/06/21(火) 07:04:39.150037デフォルトの名無しさん
2011/06/21(火) 12:19:04.39Qt
0038デフォルトの名無しさん
2011/06/21(火) 16:26:00.670039デフォルトの名無しさん
2011/06/21(火) 16:29:11.240040デフォルトの名無しさん
2011/06/21(火) 16:46:52.15股を開いて好きにしてと半マグロタイプが構造体
どっちも調教しだいなんだけどな
0042uy ◆yyC0rYWEq2
2011/06/21(火) 20:09:16.04おまえそれ本気でいってんならマジでレベル低い
C,C++しかやったことないのか?市ね世ゴミ
ネームスペースとかゴミみたいな概念でしかない
本来やたら、それは使うべきではなく
思考停止して、とりあえず単純にささっとかきたいときに使う機能だぞ >> ネームスペースw
マジでゴミなんだな・・・・・・・・・・・・・・
0043デフォルトの名無しさん
2011/06/21(火) 23:38:26.13216 名前:uy ◆yyC0rYWEq2 [sage]: 2011/06/21(火) 04:57:05.12
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙うわ、中卒乙
うわ、中卒乙うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
うわ、中卒乙
0044デフォルトの名無しさん
2011/06/22(水) 00:37:39.63参考サイト教えてください
0045デフォルトの名無しさん
2011/06/22(水) 00:42:41.56http://irc.nahi.to/
0046デフォルトの名無しさん
2011/06/22(水) 00:44:53.90http://html5demos.com/web-socket
0047デフォルトの名無しさん
2011/06/22(水) 19:26:45.58std::stringですが、c_str()があるということは、
メモリの連続性というのは保証されているのでしょうか?
(可変長なのに、どうやって連続性持たせているのかは、私にはさっぱり想像もつきませんが)
0048デフォルトの名無しさん
2011/06/22(水) 19:33:06.750049デフォルトの名無しさん
2011/06/22(水) 19:47:24.50回答ありがとうございます。ただ説明が端的すぎで、もう少し補足をいただけると助かります。
「更新するまで」というのが、よくわかないのですが、
初期化、または代入時までということでしょうか?(要素や文字列を追加したらダメということ?)
0050デフォルトの名無しさん
2011/06/22(水) 19:52:06.47non-constantなメンバーを呼ぶまで。
0051デフォルトの名無しさん
2011/06/22(水) 20:08:02.25度々すみません。
「non-constantなメンバー」というのが、どういうものか、よく分からないんですが、
append() ,assign() ,at(),begin() ,c_str() ,capacity() ,compare()とか、メンバー関数がありますけど、
具体的にはどのメンバー関数が「non-constantなメンバー」になるんでしょうか?
(もしくは、non-constantとそれ以外(constant?)の区別はどこで分かるのでしょうか?)
よろしくお願いします。
0052デフォルトの名無しさん
2011/06/22(水) 20:12:55.35std::stringのマニュアルやインクルードファイル(string)にconstantなメンバーは特記してある。
それ以外がnon-constant
例:
size_t length() const;
0053デフォルトの名無しさん
2011/06/22(水) 20:44:38.06なるほど。丁寧な解説ありがとうございます。
0054デフォルトの名無しさん
2011/06/22(水) 21:06:58.66このlibを人にあげて、その人がリンクするときに、リンカはどうやってlibcではなくmsvcrtが必要だとわかるのですか?
libファイルの先頭に、そのlibで使われている未解決のCランタイムライブラリへの参照がシンボルの形で埋められていて、そこに一緒にマルチスレッド版のmallocが要るよ!
とか書かれているの?
それともマルチスレッド版のmallocとシングルスレッド版のmallocは違う名前になってlibファイルに埋まるの?
たとえばコンパイラに/mdオプションをつけたら、_malloc_of_msvcrtって名前でlibに埋め込まれるとか。
(いや、ほんとにそんな変な名前になるとは思わないけど、例えば。)
0055デフォルトの名無しさん
2011/06/22(水) 23:41:38.91インクリメントと1代入どっちが速いの?
0056デフォルトの名無しさん
2011/06/22(水) 23:54:52.440057デフォルトの名無しさん
2011/06/22(水) 23:57:16.17++と、+=1(リテラルの1を加算)だったら、
コンパイラが速いほうに統一してくれるだろ。
0058デフォルトの名無しさん
2011/06/23(木) 00:47:37.650059デフォルトの名無しさん
2011/06/23(木) 00:48:11.021加算は、メモリからのロード、加算、ストアのステップが必要。
1代入はリテラルをストアするだけ。
0060デフォルトの名無しさん
2011/06/23(木) 09:21:04.41意味的に読みやすいほうを選択するべきだろう
0061デフォルトの名無しさん
2011/06/23(木) 11:14:12.80if(b){
処理
}
}
if(a&&b){
処理
}
って違い出てきますか?
書きたいコードは6か7ぐらいの条件がついて無限ループ内に書くので
0062デフォルトの名無しさん
2011/06/23(木) 11:26:46.36ロジック的な違いはない。
速度的に違いがあるコードが生成される可能性は無いか?
と問われれば、とても間抜けなコンパイラが無駄なコードを吐く可能性を
否定できないので「違いが出る可能性はゼロではない」。
0063デフォルトの名無しさん
2011/06/23(木) 12:09:00.29char str[5000][800][500]; // 5000行 800項目 1個500byte
に入っている文字列をstrcatで800項目連結してはfputsして、それを5000行分行っているのですが、
大したデータ量ではないのにやたらと時間がかかってしまいます。(1回40秒くらいでしょうか・・)
もっと素早く処理するにはどうすれば良いでしょうか?
0064デフォルトの名無しさん
2011/06/23(木) 12:14:34.240065デフォルトの名無しさん
2011/06/23(木) 12:17:39.63strcat()しない。
どうせfputs()するんだから、最初からfprintf()してしまえばいい。
多少は早くなるはずだ。
それでダメなら、fprintf()もやめて小刻みにfputs()かな。
cygwinみたいな環境でもなければ、どうせバッファリングされるから。
つーか、大した量だよw
0067デフォルトの名無しさん
2011/06/23(木) 12:20:41.03C++0xより前では連続性は保証されていない
ただ、普通に触れる処理系ならまず大丈夫なので気にする必要はない(0xより前の古いものでも大丈夫、つかダメなの聞いたことがない)
可変長なのに連続しているのは単に現在確保してるメモリを超えるなら確保しなおしてるだけだよ
0068デフォルトの名無しさん
2011/06/23(木) 12:23:35.50単に端末の問題じゃ?fputsコメントアウトしたら一瞬で終わるか?
0069デフォルトの名無しさん
2011/06/23(木) 12:23:46.380070デフォルトの名無しさん
2011/06/23(木) 12:24:23.200071デフォルトの名無しさん
2011/06/23(木) 12:33:19.175000行持つのを諦めるとか、可変長にするとかしないと根本解決にならない気が。
0072デフォルトの名無しさん
2011/06/23(木) 13:14:09.19007363
2011/06/23(木) 13:37:09.99fputsを減らさないと重くなる と先入観が有ったのですが、
strcatを全部消してfputsだけにしたら2秒弱で終わりました;
時と場合でやり方は変えないとだめなんですね。 ありがとうございました。
007463
2011/06/23(木) 13:42:02.480075デフォルトの名無しさん
2011/06/23(木) 14:50:15.985000 * 800 * 500 = 2,000,000,000 = 2,000,000K = 2,000M = 2G
0076デフォルトの名無しさん
2011/06/23(木) 14:57:55.58http://codepad.org/IHZVrSjS
007763
2011/06/23(木) 19:07:13.11でもタスクマネージャの稼動中のプロセス見ても100KBすらメモリ使っていない・・。
扱うファイルが10〜300KBくらいだと全部メモリ確保しないのかな・・なんでだろう・・。(´・ω・`)
0078デフォルトの名無しさん
2011/06/23(木) 20:09:47.79007963
2011/06/24(金) 23:43:56.480080デフォルトの名無しさん
2011/06/25(土) 21:48:20.84たとえば30fpsですと33.33ミリ秒周期なので処理間隔を33ms or 34msにして1秒間あたりの
処理フレームが設定どおりにしたいと考えています。
で、間隔を33msにするか34msにするかというところの処理を書いてみたのですが、
もう少し良い書き方が無いものかご教示お願いします。
008180
2011/06/25(土) 21:49:29.06int count=1;//1sec計測用
DWORD fps, cycle=0;
DWORD prev_time=0, cur_time=0, sum_time=0;
double cycle_d=0.0, cycle_int=0.0;
fps=30;//入力映像のFPS値
prev_time = timeGetTime();
cycle_d=(double)modf((double)1000.0/fps, &cycle_int);//フレーム周期(整数部、小数部)求める
while(sum_time<CONTENTS_TIME){//入力映像の長さ(ミリ秒単位)
cur_time = timeGetTime();
cycle=(int)cycle_int+((int)(cycle_d*(double)count)-(int)(cycle_d*(double)(count-1)));//←もっとスマートなやり方はないでしょうか?
if(cycle<=cur_time - prev_time){
/* ここにフレームの処理を記述 */
prev_time=cur_time;
count++;
}
}
008280
2011/06/25(土) 21:51:37.84fps値と入力映像の時間は外から与えるようにする予定です。
0083デフォルトの名無しさん
2011/06/25(土) 22:18:42.02ゲーム小僧死ねよ
0084デフォルトの名無しさん
2011/06/25(土) 22:21:26.650085デフォルトの名無しさん
2011/06/25(土) 22:25:17.830086デフォルトの名無しさん
2011/06/25(土) 22:31:24.240087デフォルトの名無しさん
2011/06/25(土) 22:31:31.680088デフォルトの名無しさん
2011/06/25(土) 23:28:09.65日本語でOK
008980
2011/06/25(土) 23:32:27.28拙いコードで恐縮です。
ゲームではありません。
センスが無いのは承知しておりますが
他に食べ方を知らないのです。
申し訳ないですがご教示願えれば幸いです。
0090デフォルトの名無しさん
2011/06/25(土) 23:43:34.812ちゃんでそれを聞くような人が。
0092デフォルトの名無しさん
2011/06/26(日) 00:26:15.12009380
2011/06/26(日) 00:30:14.900094デフォルトの名無しさん
2011/06/26(日) 02:52:21.20問題の箇所は、普通にファイルをオープンしているだけなのですが・・・
std::ifstream(filename);
プログラムがここにきたときに強制終了してしまいます。
なぜなのでしょうか・・・
QtCreatorで開発しています
0095デフォルトの名無しさん
2011/06/26(日) 03:03:33.81◯ Qt Creator
0096デフォルトの名無しさん
2011/06/26(日) 08:17:30.350097デフォルトの名無しさん
2011/06/26(日) 15:56:43.380098デフォルトの名無しさん
2011/06/26(日) 15:59:46.130099デフォルトの名無しさん
2011/06/26(日) 18:09:28.680100デフォルトの名無しさん
2011/06/26(日) 18:09:57.57どうもです
0101デフォルトの名無しさん
2011/06/26(日) 18:11:52.80何使えばいいの?
0102デフォルトの名無しさん
2011/06/26(日) 18:13:31.36え?マジでいってんの?
0103デフォルトの名無しさん
2011/06/26(日) 18:14:19.90マジだからどうすれば教えてくださいよwwwwwwwww
0104デフォルトの名無しさん
2011/06/26(日) 18:18:06.68std::cout
0105デフォルトの名無しさん
2011/06/26(日) 18:21:23.29あんな使いにくいものよく使うね
0106デフォルトの名無しさん
2011/06/26(日) 18:21:59.42え?マジでいってんの?
0107デフォルトの名無しさん
2011/06/26(日) 18:23:00.73同意w
C++はOOPLなんでオブジェクトシコーっぽくいきまつ、
さっそくオペレータ<<をオーバーライドしてみますたwww
みたいな悲しさを感じる。
0108デフォルトの名無しさん
2011/06/26(日) 18:26:04.640109デフォルトの名無しさん
2011/06/26(日) 18:52:01.27全く同意。
C++はオペレータをオーバーライドできまつ。
一例として入出力はその結果<<や>>をオーバーライドすることでこんなふうに書けまつ。
みたいのをずっと引きずってるように見えてならない。
0110デフォルトの名無しさん
2011/06/26(日) 23:20:10.46名前空間使いまくっている馬鹿をどうにかしてください
0111デフォルトの名無しさん
2011/06/27(月) 01:36:41.02String text = String("h") + "e" + "l" + "l" + "o";
text.setWriteTagert(IO::Console);
text.write();
text.setReadTarget(IO::Keyboard);
text.read();
0112デフォルトの名無しさん
2011/06/27(月) 01:41:04.070113デフォルトの名無しさん
2011/06/27(月) 01:59:31.92ミニ言語になってしまってる C のフォーマット関数がまづ問題で
フォーマッタ出力とストリーム出力機能を別モノにしまってイイのかという問題もあるし(sprintf とか便利だけどなんか歯痒いじゃん?
オブジェクトの役割的にiostream 自体がデフォで中間状態をもってイイのかてのもあるし
0114デフォルトの名無しさん
2011/06/27(月) 04:51:13.410115デフォルトの名無しさん
2011/06/27(月) 12:13:00.00cout << boost::format("%05d %x %f %%") % 200 % 255 % 3.33 << endl;
0116デフォルトの名無しさん
2011/06/27(月) 13:42:53.50バイナリで扱いたいんジャーとかストリーム関数ラブの人向けに旧方式もフリーズして互換維持の方向で
0117デフォルトの名無しさん
2011/06/27(月) 17:56:50.25public:
bool operator<(const CManiac& rmaniac) const {
// *this が rmaniac よりも小さいという条件をコーディングし、bool 値を返す。
return b;
}
}
上の例のような,仮引数と関数定義の間にあるconst修飾子の表す意味が分かりません.
どなたかぜひ教えてください.
0118デフォルトの名無しさん
2011/06/27(月) 18:01:47.39おおざっぱに噛み砕いて言うと
メンバ変数をいじらないよーっていう表明
オブジェクトをconstで作っても呼び出せるメンバ関数になる
0119デフォルトの名無しさん
2011/06/27(月) 18:04:41.10位置がなぞめいててイラッとさせるが、意味は>>118の言うとおり。
constメンバ関数、っていう言い方をしたりする。
0120デフォルトの名無しさん
2011/06/27(月) 18:26:07.42その関数の中ではthisポインタにconstが付いている、という見方もできる。
0121デフォルトの名無しさん
2011/06/27(月) 19:33:43.66謎が解けました.
解説ありがとうございました.
0122デフォルトの名無しさん
2011/06/27(月) 19:37:32.78ソースコードは間違っていないはず。例えば韓国語だと
#include<iostream>
#include <fstream>
using namespace std;
int main(){
char s[10]="테스트";
ofstream ofs("test.txt");
ofs<<s<<endl;
ofs.close();
return 0;
}
0123デフォルトの名無しさん
2011/06/27(月) 20:19:48.10韓国語Winと韓国語VCでどうぞ
0124デフォルトの名無しさん
2011/06/27(月) 21:14:46.55というか、その国向けの開発環境じゃなきゃ出来ないとかあるはずないよね
0125デフォルトの名無しさん
2011/06/27(月) 21:40:09.920126デフォルトの名無しさん
2011/06/27(月) 22:02:06.160127デフォルトの名無しさん
2011/06/27(月) 22:12:17.66charで書き込み(読み込み)したいんですよ。
0128デフォルトの名無しさん
2011/06/27(月) 22:14:01.120129デフォルトの名無しさん
2011/06/27(月) 23:55:46.00と
char hoge[]
の違いがわかりません
0130デフォルトの名無しさん
2011/06/27(月) 23:57:31.22ありがとう、いろいろ調べてるうちにそのほれにたどり着いたけど、処理超面倒だね
>>128
文字列型ってstring?unicodeで使ったらまともに動作しなくね?
0131デフォルトの名無しさん
2011/06/28(火) 00:02:56.19char *hoge[255]みたいな宣言だとすると
*hoge[255]=*hoge×255
hoge[255]=hoge×255
0132デフォルトの名無しさん
2011/06/28(火) 00:03:51.93TCHR
あたりで
0133デフォルトの名無しさん
2011/06/28(火) 00:04:46.35ちがうよ
0134デフォルトの名無しさん
2011/06/28(火) 00:06:13.53>>133
どうなんですか?
0135デフォルトの名無しさん
2011/06/28(火) 00:17:06.46別のヘッダーファイルで使用するため、
前送り宣言したい
(struct Cl::St;みたいな)
何かいい方法ない?
0136デフォルトの名無しさん
2011/06/28(火) 00:44:27.39imbue()しなきゃだめだろ
処理系が韓国語に対応してるか調べてみ
無理ならgccのeucで試してみるとか
0137デフォルトの名無しさん
2011/06/28(火) 00:48:23.40オマエのレスをつい最近見た事があるぞ
0138デフォルトの名無しさん
2011/06/28(火) 01:27:03.69その値を複数の関数であれこれ操作するとき
この変数はグローバル変数するのがベターなんですかね?
・グローバル変数あり
int age,sex,no
関数1(age,sex,no)
関数2(age,sex,no)
関数3(age,sex,no)
・グローバル変数なし
int age,sex,no
関数1_1(age)return age;
関数2_1(age)return age;
関数3_1(age) return age;
関数1_2(sex)return sex;
関数2_2(sex)return sex;
関数3_2(sex) return sex;
関数1_3(sex)return no;
関数2_3(no)return no;
関数3_3(no) return no;
あり・なしを比較するとこういうイメージなのですが
0139デフォルトの名無しさん
2011/06/28(火) 01:35:25.630140デフォルトの名無しさん
2011/06/28(火) 01:37:17.01Cはもう暫くするとマルチスレッド対応になるよ
0141デフォルトの名無しさん
2011/06/28(火) 01:52:09.29struct Mytemplate<>::Mystruct;
みたいなことをしたい
0142デフォルトの名無しさん
2011/06/28(火) 01:54:03.73struct Mytemplate<t>::Mystruct;
でいけないか
0143デフォルトの名無しさん
2011/06/28(火) 02:24:51.92gcc4.5.2(MinGW) + Eclipse CDTでimbueする事無く普通に表示されたぞ
多分入力コードが10進UNICODEになってるのがまずいんじゃないか?
UNICODEにしたら普通に表示された
0144デフォルトの名無しさん
2011/06/28(火) 02:40:10.23while (fin.getline(addata[i].name,50))
{
処理
i++
}
行末ならgetlineで問題ないですが・・・
0145デフォルトの名無しさん
2011/06/28(火) 07:16:00.730146デフォルトの名無しさん
2011/06/28(火) 08:01:39.060147デフォルトの名無しさん
2011/06/28(火) 08:05:23.30int check(){
int test;
static int chk;
test = チェック関数 ;
if( test>1){chk++;}
else{chk=0;}
return chk;
}
-------------------
#include sub.h
main(){
int chk1;
while(){
if(check(check()==1){処理}
}
}
とある処理が連続では実行されず、一度休むまで受け付けないという感じのプログラムです
#include sub.h
main(){
int chk0;
chk0=check();
while(){
if(chk0==1){処理}
if(chk0)>40){別処理}
}}
このよう変更するとstatic int chkの値が40を超えるとリセットされず無限に増え続けるようになります
何が問題なのでしょうか?
0148デフォルトの名無しさん
2011/06/28(火) 09:04:10.59それ以前にchk0=check();がループの外に出てるんだけど?
それ以前にコンパイ(ry
0149デフォルトの名無しさん
2011/06/28(火) 09:06:11.760150デフォルトの名無しさん
2011/06/28(火) 11:22:27.10関数の仕様がおかしいんじゃね?
グローバル変数を使う位なら引き数要らないだろ。
つーか、グローバル変数を使う積極的理由がない。
例えば、関数1の中でageその他に触れたいなら、
・ageその他を構造体に纏めて参照渡しにする。
・ageその他を構造体に纏めてポインタ渡しにする。
・ageその他を構造体に纏めて引き数で渡して戻り値で受け取る。
の三択でいいよ。
0151デフォルトの名無しさん
2011/06/28(火) 17:08:29.67標準であればもっとわかりやすいと思うんですが。
0152デフォルトの名無しさん
2011/06/28(火) 17:11:45.530153デフォルトの名無しさん
2011/06/28(火) 17:12:01.720154デフォルトの名無しさん
2011/06/28(火) 17:19:21.970155デフォルトの名無しさん
2011/06/28(火) 17:21:35.020156デフォルトの名無しさん
2011/06/28(火) 17:48:55.47それをsscanf系で配列に格納したいのですが
スマートなコードの書き方ってないですか?
つ[volatile]
0158138
2011/06/28(火) 17:50:45.96確かにグローバル変数をつかっているのに引数はおかしな話でした。
まとめて渡すとなると
struct hito{
age
sex
no
}
struct hito eigyo[10];
関数1(eigyo)
関数2(eigyo)
関数3(eigyo)
ってイメージですかね
0159デフォルトの名無しさん
2011/06/28(火) 17:53:29.260160デフォルトの名無しさん
2011/06/28(火) 17:54:57.530161デフォルトの名無しさん
2011/06/28(火) 18:43:08.38等のファイル指定の文字列を
#define DATA_PATH "data\\data01\\data02"
と定義して
fopen("DATA_PATH+00001.txt")のような事をしたいのですが
どうすればよいでしょ?
0162デフォルトの名無しさん
2011/06/28(火) 18:46:09.36fopen(DATA_PATH"00001.txt")
0163161
2011/06/28(火) 19:42:09.210165デフォルトの名無しさん
2011/06/28(火) 20:39:02.70printf("%d\n"
"%s", 1, "a");とか改行してもいい
0166デフォルトの名無しさん
2011/06/28(火) 20:45:28.77まじか、そうだったのか
ありがとうございます
0167デフォルトの名無しさん
2011/06/28(火) 20:53:40.45☆☆☆△△△□□□□
☆☆☆△△△□□□□
☆☆☆△△△□□□□
☆☆☆△△△××××
■■■■■■××××
■■■■■■××××
■■■■■■○○○○
■■■■■■○○○○
if(x<400) //中央の左右判定
{
if(y<300) //左側の高さ判定
{
if(x<200) { ☆; } //左上の左右判定
△;
}
■;
}
細かくなればなるほど、if文が増えてしまうのは仕方ないのでしょうか?
0168デフォルトの名無しさん
2011/06/28(火) 20:55:49.670169168
2011/06/28(火) 23:05:06.29インターフェース関連のマウス位置はこれで範囲指定するのが定番なのかな・・・?
0170デフォルトの名無しさん
2011/06/28(火) 23:14:26.01プラットフォーム、使用ライブラリ等でいくらでも変わってくると思われ
0171デフォルトの名無しさん
2011/06/29(水) 01:54:29.000172デフォルトの名無しさん
2011/06/29(水) 02:02:17.440173デフォルトの名無しさん
2011/06/29(水) 03:07:07.269000
50
700
3
を
0,9,0,0,0
0,0,0,5,0
0,0,7,0,0
0,0,0,0,3
と言う感じに桁を合わせる&分解にはどうすれば良いのでしょうか?(カンマは不要です)
0174デフォルトの名無しさん
2011/06/29(水) 03:16:26.39ありがとう
0175デフォルトの名無しさん
2011/06/29(水) 03:41:01.370176173
2011/06/29(水) 04:43:25.89スルーしてください
0177デフォルトの名無しさん
2011/06/29(水) 04:46:18.170178デフォルトの名無しさん
2011/06/29(水) 06:05:24.05struct ABC{
int x;
int y;
};
main(){ //↑メインより先に宣言しているからグローバル扱い?
struct ABC bbb;
func(bbb)
{
int func(struct ABC test)
{
test.x
test.y
}
または
int func(struct ABC *test)
{
test->x
test->y
}
でも、構造体をグローバルで宣言しているからわざわざ引数にする必要が無いと思うのですが?
グローバルでなくローカルで構造体を宣言した場合は引数として使えないようですし
0179デフォルトの名無しさん
2011/06/29(水) 06:23:08.550180uy ◆hi.ht/Isu2
2011/06/29(水) 06:28:59.91構造体をわざわざ引数にする必要が無いっていうのはいいところに目を付けてるよ
それは、ただ作法的にローカルにしちゃってるだけ
型宣言を、ローカルに閉じ込めて置けないのが、痛々しい言語仕様だよね
C,C++みたいな中途半端な出来栄えの言語だとね、どう頑張っても完璧に組むのは不可能に近いから
誰がどういう説明していようと、そういうのは無視して
かきたいようにかいたほうがいい
特にC,C++を、初心者時代を超えても未だに使い続けている奴ってのは、頭がおかしいので
頭のおかしいソースコードで解説をしている事が多い
Web上にはそういうサンプルがとても多いので、だまされてはいけない そして、適当にある程度のところまで覚えたら
さっさとC,C++を捨てること
0181デフォルトの名無しさん
2011/06/29(水) 06:35:07.520182uy ◆hi.ht/Isu2
2011/06/29(水) 07:32:00.390183デフォルトの名無しさん
2011/06/29(水) 07:39:58.630184デフォルトの名無しさん
2011/06/29(水) 07:53:23.38普通に
func(){
bbb.x
bbb.y
}
って使えるから
0185178
2011/06/29(水) 09:05:01.17別ファイル(ヘッダーファイル等)の関数では利用できない
逆にクラスなら使える
素人はとりあえずクラスで定義しておけ
って感じですか?
0186デフォルトの名無しさん
2011/06/29(水) 09:08:08.10structもclassもそんなに違わない
最初からついてるアクセス指定子がprivateかpublicかの違いだけ
構造体もヘッダで宣言すればincludeしたcppから使える
0187デフォルトの名無しさん
2011/06/29(水) 09:08:28.65全く違う
class と structは
メンバと継承のときにpublicとかprivateとかつけなかったときのデフォルトが違うだけで他は全く一緒
(一応typeidしたときのname()も違うが)
0188178
2011/06/29(水) 09:30:22.52>構造体もヘッダで宣言すればincludeしたcppから使える
cppで宣言した構造体を
ヘッダーファイルで扱うのは無理なんですか?
-----main.cpp-----
void hoge3(strcut hoge hoge1)
struct hoge{
int x;
int y;
}
struct hoge hoge1;
main(){
}
hoge3(hoge hoge1){
hoge1.x
hoge1.y
}
これは動作するのですが、hoge3()をヘッダーファイルに表記すると動作しなくなってしまって
0189デフォルトの名無しさん
2011/06/29(水) 09:35:42.12適当なこと言うなしね
0190デフォルトの名無しさん
2011/06/29(水) 09:36:09.74宣言が見えなきゃ使えるわけないだろ
複数のcppファイルから構造体使いたいならヘッダに宣言しとけ
0191デフォルトの名無しさん
2011/06/29(水) 09:38:32.890192178
2011/06/29(水) 09:41:50.14大体こういう感じで動いてるという意味です
そのあたりは補完してください
0193デフォルトの名無しさん
2011/06/29(水) 09:48:18.99cpp1つ。残り全部ヘッダファイル。じゃ駄目なん?
ヘッダファイルとcppの違いがワカラン!
0194デフォルトの名無しさん
2011/06/29(水) 09:50:04.79複数のcppにするのは分割コンパイルってのをしたいんだよ
それがどういうものかはググッてくれ
説明すると長いから
0195uy ◆hi.ht/Isu2
2011/06/29(水) 10:53:02.82このあたりが滅茶苦茶なんだよ
ゲームか何かが作りたいわけェ? C#やっとけよボケが
作法的にはこう
---------------------a.h-------------------------
struct hoge{
int x;
int y;
};
void hoge3(struct hoge * hoge1);
-----------------------a.cpp--------------------------
#include<stdio.h>
#include "a.h"
main(){
struct hoge h = { 0 };
hoge3( &h );
printf("%d %d" , h.x , h.y ) ;
}
void hoge3(struct hoge * hoge1){
hoge1->x = 33;
hoge1->y = 44;
}
で、構造体の定義前に struct hoge hoge1 戸かやりたい場合は
struct hoge; ← これで先に名前だけ押しておく必要がある
0196uy ◆hi.ht/Isu2
2011/06/29(水) 10:55:29.47---------------------a.h-------------------------
struct hoge;
void hoge3(struct hoge * hoge1);
-----------------------a.cpp--------------------------
struct hoge{
int x;
int y;
};
-----------------------わかったか?カス-------------------------
きいているのはC++のカスさのほう こうやって、「いちいち」 面倒な手続きをしなければならないのが C,C++
0197uy ◆hi.ht/Isu2
2011/06/29(水) 11:06:36.34------と---り---あ---え---ず---お---し---え---と---い---て---や---る---け---ど------
で#includeについkて教えておくと
C,C++で
# のついてる奴はすべてがsプリプロセッサなんだよl?
つまりコンパイル舞えに処理さレルってわけl
つまり、rrrr
#include "a.h" ってやったらsz
a.h の内容が その場所に、コピペされるってこと
----------------------------------------------------------------------
----------------理-------解-------し-------た-------?---------------------------
で、しかも書いている内容が自称年齢に見合わないほど古臭い不思議。
0199デフォルトの名無しさん
2011/06/29(水) 12:31:27.81拡張子以外全部C(笑)
0200デフォルトの名無しさん
2011/06/29(水) 12:38:35.34C++を知らないんですよ。そっとしておきましょう。
0201uy ◆KOAgYBL/Xg
2011/06/29(水) 13:04:26.9420超えてもC++やってる奴は低脳
いつまで無駄なことを続けるんだか
0202デフォルトの名無しさん
2011/06/29(水) 13:11:54.05ApacheやUNIXやFirefox書いてる奴は低脳ですよね
0203デフォルトの名無しさん
2011/06/29(水) 13:14:16.020204uy ◆KOAgYBL/Xg
2011/06/29(水) 13:34:14.45そういう奴らはC++なんて使ってないんだよ
仕事で扱ってるだけ。おれもC++を仕方なく「扱う」時はあるよ。
0205デフォルトの名無しさん
2011/06/29(水) 13:38:31.82なぜリプレースしようとするプロジェクトが出てこないんですかねー?
0206天使 ◆KOAgYBL/Xg
2011/06/29(水) 14:12:16.380207デフォルトの名無しさん
2011/06/29(水) 20:53:49.650208デフォルトの名無しさん
2011/06/29(水) 21:55:14.50一般にはそれはポリモーフィズムとは言わないなぁ
そもそもただの関数だってオーバーロードできるしな
0209デフォルトの名無しさん
2011/06/29(水) 22:57:39.74オーバーロードはオーバーロード
ポリモフは継承&オーバーライド
0210デフォルトの名無しさん
2011/06/29(水) 23:06:01.670211デフォルトの名無しさん
2011/06/29(水) 23:12:09.740212デフォルトの名無しさん
2011/06/29(水) 23:14:36.02おまえほんとにオブジェクト指向りかいしてんのかおwww
0213デフォルトの名無しさん
2011/06/29(水) 23:43:17.93カンタンに想像付くから怖い。
「〜はデザパタの一種と言えるでしょう」
「俺俺デザパタつくってみました」
「オーバーロードはポリモの一種」
不正確なもんを押し通そうとする力が怖い。
0214天使 ◆KOAgYBL/Xg
2011/06/30(木) 04:16:49.99本でも書くん? そうでないなら細かい定義はいらない
殆ど変わらない概念でも別物であるもので
まだ名前のついていない概念にたいし、1個、1個、おれが付けていったら
明日から、数千個くらいIT用語増えるから覚悟しとけよ
0215デフォルトの名無しさん
2011/06/30(木) 04:23:09.52int hoge[5]
この時hoge[5]が空だったら、10を入れる、というif文をつくるとしたらどういう条件にすればよいのでしょう?
初期値としてhoge[5]={10};と設定するのではなく
全部入らない場合の配列の空きスペースをみつけて埋めるという処理がしたいので
0216デフォルトの名無しさん
2011/06/30(木) 05:11:22.97hogeの要素全てにあらかじめ-1でも入れておいて
if(hoge[5] == -1) hoge[5] = 10;
とでもすればよろし。
0217天使 ◆KOAgYBL/Xg
2011/06/30(木) 06:02:38.20NULLさえ実装されていない
だから何らかの初期値を与えるしかな、 基本的にそれには0を使うのがベスト
0って数字もときより使う配列ならマイナス数値とかにして、「ごまかす」しかない
Cなんてさっさとやめちゃえよ
0218デフォルトの名無しさん
2011/06/30(木) 06:45:19.92構造体の配列だから入れてからだと面倒かと思ったのですが、普通にそうやることにします
0219デフォルトの名無しさん
2011/06/30(木) 09:20:31.41std::vector<int> hoge;
if(hoge.empty())
{
}
というのは可能だ 参考までに
0220デフォルトの名無しさん
2011/06/30(木) 09:51:22.690221デフォルトの名無しさん
2011/06/30(木) 10:00:55.10よくわからん
そもそもhoge[5]なんて存在しないぞ
0222デフォルトの名無しさん
2011/06/30(木) 10:01:07.41int hoge[5]で
hoge[5]はねーだろそこを指摘しろよ
>>217
ぬるぽはC++では作られたろーがボケ
0223デフォルトの名無しさん
2011/06/30(木) 10:05:34.950224デフォルトの名無しさん
2011/06/30(木) 11:22:53.95MAXが5個で1〜5個で変動する
プログラムって自分好みに作れるわけじゃねーからな
第三者のニーズに応えるためにあれやこれやたられば機能を拡張しなければならない
こっちが「こういうプログラムなんでデータや形式はそれに合わせてください!」というなら楽なんだけどなwwww
0225デフォルトの名無しさん
2011/06/30(木) 16:22:38.92りんご
みかん
ぱいなぽ
ばなな ←最終行
-------
このテキストファイルを読み込んで配列データに格納して出力をする処理です
int i;
i=0;
while(!fin.eof())
{
fin.getline(data[i].[40],30);
i++;
}
fin.close();
4行目の『ばなな』まで配列も0〜3に綺麗に入っています
ですが配列[4]に改行(?)データが入るのか、隙間が出来てしまいます
どうすれば空データ(改行?)を回避できるのでしょう
0226デフォルトの名無しさん
2011/06/30(木) 16:24:53.330227デフォルトの名無しさん
2011/06/30(木) 16:26:51.150228デフォルトの名無しさん
2011/06/30(木) 17:22:31.650229デフォルトの名無しさん
2011/06/30(木) 17:25:30.08別にいらないけど付けたほうが分かりやすいっておもったら付けてもいいんじゃないかな
0230デフォルトの名無しさん
2011/07/01(金) 03:16:06.50今は-'0'で擬似的に数字扱いにして文字のまま計算しています
(あいにく0〜9までの範囲しか使わない値なので)
0231デフォルトの名無しさん
2011/07/01(金) 03:20:26.37それでいいよ
それが一般的
0232デフォルトの名無しさん
2011/07/01(金) 09:00:57.090233デフォルトの名無しさん
2011/07/01(金) 09:05:31.180234デフォルトの名無しさん
2011/07/01(金) 09:06:11.26要らないよ。
--
int val;
sscanf("5", "%1d", & val);
0237デフォルトの名無しさん
2011/07/01(金) 12:00:09.69文字列になってるじゃねーかwwww
なにが「要らないよ」だよww
char型に入った文字の変換の話だよ?
0238デフォルトの名無しさん
2011/07/01(金) 12:20:59.66だから要らないんだって。
char foo = '5';
sscanf(& foo, 以下略
応用が利かない奴はこれだから……
0239デフォルトの名無しさん
2011/07/01(金) 12:24:16.83・・・・・・教科書やり直してこいよ
0240デフォルトの名無しさん
2011/07/01(金) 12:34:32.25何が不満なのか知らんが、自分の浅墓さを省みることもたまにはしてみたら?
http://ideone.com/BmHgi
0241デフォルトの名無しさん
2011/07/01(金) 12:40:48.18それは応用というより標準ライブラリの実装依存の邪道だろ。
0242デフォルトの名無しさん
2011/07/01(金) 12:47:50.66動いたから正しいとか
Cでは通用しないんだよ
0243デフォルトの名無しさん
2011/07/01(金) 13:17:50.91邪道で正しくないと言う根拠をたのむ。
0244デフォルトの名無しさん
2011/07/01(金) 13:21:49.42頭悪すぎ
0245デフォルトの名無しさん
2011/07/01(金) 13:41:54.67%1dの意味が分かってないんじゃないの?
0246デフォルトの名無しさん
2011/07/01(金) 13:52:47.63頭悪すぎ
0247デフォルトの名無しさん
2011/07/01(金) 13:59:36.37よく考えたら仕様で確認したこと無かった
誰か詳しい人教えて
0248デフォルトの名無しさん
2011/07/01(金) 14:01:54.42フォーマットの指示を正確にできてないプログラマが悪い、
っていう話をなぜか連想した。
0249デフォルトの名無しさん
2011/07/01(金) 14:25:02.38「仕様見に行かないと正しいか微妙」
な書きかたは避けたほうが無難では?
まあ勉強のため、というのはアリだが
「こんなことも出来るんだぜ?俺スゲー!」
はやはり有害な思考かなと思う
0250天使 ◆uL5esZLBSE
2011/07/01(金) 18:55:53.44ほんとこのスレにいる分際のゴミ同士なかよくやってろよ
0251デフォルトの名無しさん
2011/07/01(金) 19:00:08.010252デフォルトの名無しさん
2011/07/01(金) 19:23:42.42なかまに なりたそうに こちらをみている!
なかまに してあげますか?
0254天使 ◆uL5esZLBSE
2011/07/01(金) 19:33:35.67まさかC++使える自分SUGEEみたいな?
そっかwwwwwwwwwwww っじゃwwwww一生C++やってろよwwwwwwwwwwwwwwww
0255デフォルトの名無しさん
2011/07/01(金) 19:39:38.65え? もしかしてC++使えないのがコンプレックスなの?
0256天使 ◆uL5esZLBSE
2011/07/01(金) 20:02:49.20C++バカって言葉いいな 今度からそうよぼう
だってバカの一つ覚えみたいなもんだし
0257デフォルトの名無しさん
2011/07/01(金) 20:47:28.190258デフォルトの名無しさん
2011/07/01(金) 23:07:19.50ライブラリ多いじゃん
0259デフォルトの名無しさん
2011/07/01(金) 23:20:13.05プロセッサ時間メモリ空間で最善になるようにかける言語
その次に大規模開発 最後に手軽さ
0260デフォルトの名無しさん
2011/07/01(金) 23:25:23.04Cでは'0'から'9'が連続していることが保証されているべえ?
0261デフォルトの名無しさん
2011/07/01(金) 23:29:04.980~9については保証されてるな
0262デフォルトの名無しさん
2011/07/01(金) 23:30:07.09>>232が馬鹿なだけだから気にすんな
0263天使 ◆uL5esZLBSE
2011/07/02(土) 00:03:01.26ライブラリ多いじゃん (キリッ
本気でC++なんだね^^;
一生やっててください
0264デフォルトの名無しさん
2011/07/02(土) 04:04:59.14キャベツ,100,10,
じゃがいも,120,20,
もろへいや,200,12,
for(i=0;i<3;i++){
fin.getline(name[i], 20 , ',');
fin.getline(kakaku[i], 20 , ',');
fin.getline(kazu[i], 20 , ',');
}
このような感じに組むと2行目以降頭に”.”ピリオドが追加されます。
キャベツ,100,10,
.じゃがいも,120,20,
.もろへいや,200,12,
恐らくこういう処理になっている
キャベツ,100,10,[]
じゃがいも,
↓
[]じゃがいも
getlineで改行コード判定をしていても、改行コードは取り込んでいる?という理解ですが
どうすれば改行コードを排除して2行目以降の先頭の文字列を読み取れるのでしょうか?
0265デフォルトの名無しさん
2011/07/02(土) 06:19:02.59「キリッ」って。
茶化してるってことは、痛いところつかれて反論できないってことか。
kazu[]は本来数値だろ。カンマで切らず行末まで読んでatoi()すればいい。
0267デフォルトの名無しさん
2011/07/02(土) 09:32:20.68int hoge[5]={1,2,3,4,5}
を
hoge[5]={2,3,4,5,0}
や
hoge[5]={0,1,2,3,4,}
というプログラム
0268デフォルトの名無しさん
2011/07/02(土) 09:50:32.99自分でいちいち代入するしかない
0269デフォルトの名無しさん
2011/07/02(土) 11:04:55.96int (*hoge)[5];=(int(*)[5])&fuga[4];
0270デフォルトの名無しさん
2011/07/02(土) 11:11:27.33char b[4]="aaaa";
配列aは問題ないのに、配列bは配列数を5個用意しろと言われるのはなぜ?
0271デフォルトの名無しさん
2011/07/02(土) 11:14:37.89{'a','a','a','a' '\0'}だから
0272天使 ◆uL5esZLBSE
2011/07/02(土) 13:33:23.63「「「「「「「「「「「「「「 kazu[]は本来数値だろ。カンマで切らず行末まで読んでatoi()すればいい。 」」」」」」」」」」」」」」(キリッッッッ!!キリッッッッ!!!!ッッ!!!!
∧∧∧∧(キリ!
ゴッミゴミだな
0273デフォルトの名無しさん
2011/07/02(土) 15:21:35.090274デフォルトの名無しさん
2011/07/02(土) 15:24:11.450275デフォルトの名無しさん
2011/07/02(土) 15:32:32.98なんだから標準だろw
0276デフォルトの名無しさん
2011/07/02(土) 15:36:45.850277デフォルトの名無しさん
2011/07/02(土) 15:38:11.27ばか?
0278デフォルトの名無しさん
2011/07/02(土) 15:46:59.890279デフォルトの名無しさん
2011/07/02(土) 15:49:11.84>>277
String≠string
0280デフォルトの名無しさん
2011/07/02(土) 20:05:26.28char hoge[50];
}
void strfunc(){
hoge[50]="aiueo"
}
配列の値を変更して、メイン関数に反映させたいのですがどうすればよいでしょう?
void strfunc(char hoge[]){
hoge[50]="aiueo"
}
参照するだけならこの方法で問題ないという事は理解してます
0281デフォルトの名無しさん
2011/07/02(土) 20:07:43.880282デフォルトの名無しさん
2011/07/02(土) 20:07:44.67char hoge[50];
strfunc(hoge);
printf("%s\n", hoge);
}
void strfunc(char hoge[]){
strcpy(hoge, "auieo");
}
0283デフォルトの名無しさん
2011/07/03(日) 00:48:13.990284デフォルトの名無しさん
2011/07/03(日) 01:23:04.93そのときの引数ってどうやってるの?
0285デフォルトの名無しさん
2011/07/03(日) 07:13:51.17毎回fopenで呼び出して特定のファイルを出力するのと
一番最初にfopenで4データを呼び出して、staticな配列に入れておいて
その配列を使いまわすのではPCの処理的にどちらが良いのでしょう?
0286デフォルトの名無しさん
2011/07/03(日) 08:12:03.71途中から計算がおかしくなってしまうのですがどうすれば正しく動きますか?
0287デフォルトの名無しさん
2011/07/03(日) 08:36:15.79出力したいのか入力したいのかどっちなのかと
0289デフォルトの名無しさん
2011/07/03(日) 11:10:54.26ファイルのデータをプログラム内で利用(出力?)です
0290デフォルトの名無しさん
2011/07/03(日) 11:32:18.94いまどきのPCなら16Kのデータをメモリ上に保持する事なんて屁でもない。
0291デフォルトの名無しさん
2011/07/03(日) 11:34:18.450292デフォルトの名無しさん
2011/07/03(日) 11:48:15.02ショボいプログラムでも55MBも使っていた・・・・
まっさらでウィンドウを表示させただけでも44MBって
0293デフォルトの名無しさん
2011/07/03(日) 11:52:47.180294デフォルトの名無しさん
2011/07/03(日) 12:18:30.19そういう話じゃないならどういう話だよ。
0295デフォルトの名無しさん
2011/07/03(日) 12:36:04.05C++そのものをよく理解してないけどWin32で作っているのが問題っぽい
Windowプロシージャだっけ?あれでウィンドウを表示すると、それだけで数十MB喰われるって認識でいいのかな
コンソールで適当なのを組んだら動作させたら256kだった
0296デフォルトの名無しさん
2011/07/03(日) 12:39:31.430297デフォルトの名無しさん
2011/07/03(日) 14:57:53.030298大天使 ◆uL5esZLBSE
2011/07/03(日) 16:31:58.71って何度もいっているのにバカは効率を理解しない
0299デフォルトの名無しさん
2011/07/03(日) 16:49:56.600300デフォルトの名無しさん
2011/07/03(日) 17:28:59.990301デフォルトの名無しさん
2011/07/03(日) 17:31:24.92統合失調症とかいうやつかな?かわいそう
0302デフォルトの名無しさん
2011/07/03(日) 18:52:50.23条件で分岐しながら進行して行く、シナリオ的なシステムを作っているのですが、
#define ROOT 12 // 上の処理を並列して12個同時進行
#define ACT 45 // 条件を満たした時に飛ぶ条件セット
#define IF 12 // ACT1個あたりのifの数
#define ORDER 3 // IFを満たした時に実行できる命令は3つだけ
#define VALUESIZE 32 // 命令文が抱える変数や文字列の格納用
BYTE root[ROOT][ACT][IF][ORDER][VALUESIZE]; // 合計622KB
現在こうしてtxtファイルからメモリに受け取って処理をしているのですが、
変数のサイズが気になって、不便な制約が増え、制約を超える為に変な仕様を追加して と悪循環になっています。
大元のデータは100KBすら無く、多くのメモリは無駄 でも使いたい所では足りない という事になっています。
どうすれば無駄なメモリを確保しまくらずに、個数制限をしまくらなくて良いプログラムにできるでしょうか・・?
0303デフォルトの名無しさん
2011/07/03(日) 19:04:41.87たとえば、int a[1000000];があって、ほとんど不使用なのに確保するの事と同じだろ?
そしたら、出現するデータペアだけ記録したらいい。mapなど。
0304デフォルトの名無しさん
2011/07/03(日) 21:41:52.70ありがとうございます。vectorも適しているんですね。学習しなおして設計しなおしてみようかと思います。
0305デフォルトの名無しさん
2011/07/03(日) 21:46:05.93それをSTLのvectorに入れたら、2分探索できる。
mapより省メモリになり得る。
0306デフォルトの名無しさん
2011/07/03(日) 21:50:14.920307デフォルトの名無しさん
2011/07/03(日) 22:02:37.05具体的には1024bitになるまで0をstring型変数に追加していきます。
str = str + "0" みたいな感じです。
0308デフォルトの名無しさん
2011/07/03(日) 22:09:00.38sortしてからならbinary_search出来るが、mapやsetは内部データ構造が初めから二分木
(大抵赤黒木、実装依存)
0309デフォルトの名無しさん
2011/07/03(日) 22:24:55.35vector(x,output) (x=100a + 10b + c)
のほうが省メモリになり得る。
0310デフォルトの名無しさん
2011/07/03(日) 22:25:14.04size_t len = str.length();
if(len<1024){
str.resize(1024);
std::fill(str.begin()+len, str.begin()+1024, '0');
}
0311デフォルトの名無しさん
2011/07/03(日) 22:26:15.330312デフォルトの名無しさん
2011/07/03(日) 22:48:34.02ありがとうございます。ものすごく参考になりました。
0313大天使 ◆uL5esZLBSE
2011/07/04(月) 06:47:24.15宗教論争とかそういう次元の話じゃないじゃん
効率が違いすぎる
まず君、このC,C++が何年前に作られた言語なのか理解しているのか
それすら分からなかったらマジでゴミだぞ
>>265
マジでおまえ理解してないんだ
そうか、じゃあやっぱり一生C++やってろよゴミw
おまえの中ではそれが効率いいんだろ?w
おまえがそう思うんならそうなんだろうwwwwwwおまえんなかではなwwwwww
わかったか?ゴミ
0314デフォルトの名無しさん
2011/07/04(月) 08:48:59.35では、C++の代用になるお勧めの言語はなんですか?
0315デフォルトの名無しさん
2011/07/04(月) 10:37:31.700316大天使 ◆uL5esZLBSE
2011/07/04(月) 11:13:15.76が、多いのがネット上のC++コミュニティだからなぁ
Boostまでいってる奴以外はゴミだよ
0317デフォルトの名無しさん
2011/07/04(月) 15:22:53.20{
class C { };
void f(const C& c)
{}
}
void g()
{
f(ns::C());
}
がコンパイル通るのは仕様通りなのでしょうか。
それともgcc 4.5のバグでしょうか。
0318デフォルトの名無しさん
2011/07/04(月) 15:31:59.81自己解決しました。
「Argument-dependent name lookup」
っていう言語仕様ですね。
0319デフォルトの名無しさん
2011/07/04(月) 16:19:40.64C++の汚い部分
慣れるしかない
0320デフォルトの名無しさん
2011/07/04(月) 21:58:14.42検索した結果、2005 SP1、2008 SP1、2010 SP1を発見しましたが、
ATL版を入れるべき という主張をあちこちで見ました。
同様に検索すると、ATL版も発見できたのですが、
本当にそれでいいのかいまひとつ判断がつきません。
よろしければご教示お願いします。
0321デフォルトの名無しさん
2011/07/04(月) 22:14:42.570322デフォルトの名無しさん
2011/07/05(火) 10:47:41.710323デフォルトの名無しさん
2011/07/05(火) 11:38:12.440324デフォルトの名無しさん
2011/07/05(火) 15:45:18.56doubleは小数点以下の計算で微妙な誤差が出るっていうけど、
数値が整数のみになるように、整数のみで計算していれば誤差はでないんだろうか?
0325デフォルトの名無しさん
2011/07/05(火) 15:53:22.320326デフォルトの名無しさん
2011/07/05(火) 15:57:42.96予め確保してある一つの変数を場合によってintとdoubleで使い分けたいんだよ
doubleを注意して扱えばintと同等に比較できるならそうしたい
共用体だと別の名前にしなきゃいけないし
0327デフォルトの名無しさん
2011/07/05(火) 16:09:14.68intとして扱ってるときもdoubleと同じ方法の比較で、判定できるんじゃないの。
0328デフォルトの名無しさん
2011/07/05(火) 16:20:11.88そこまでは整数と扱って問題ない
0330デフォルトの名無しさん
2011/07/05(火) 16:25:38.15i=100.000004とかになると、
if(i==100)に引っかからないような気がして心配だったんだ
ありがとう
0331デフォルトの名無しさん
2011/07/05(火) 16:36:06.58それだと暗黙的にアップキャストされるから
if((int)i==100)とかでダウンキャストしないとだめ
0332デフォルトの名無しさん
2011/07/05(火) 16:38:46.07変数の中に常に整数しか入ってないのか、少数もはいる場合があるのかよくわからん。
0333デフォルトの名無しさん
2011/07/05(火) 16:49:30.82そうなのか……
でもそれだと今度は99,999996とかの場合に99になってしまいそう
>>332
整数のみの計算をしていても、誤差で少数になってしまう場合もあるのかどうか、ってのが知りたかったんだ
0334デフォルトの名無しさん
2011/07/05(火) 16:53:41.52実数を比較する方法を常に使っていたら、整数として扱ってても
問題ないんじゃね。
0335デフォルトの名無しさん
2011/07/05(火) 16:56:20.42double に整数つっこんで加減乗を行っても誤差は出ない(一般的な実装なら)
10.000000004とかにはならないの
割り算は説明するまでもない
0336デフォルトの名無しさん
2011/07/05(火) 17:03:05.29floorしてからキャストでおk
0337デフォルトの名無しさん
2011/07/05(火) 17:07:41.70それなら何も問題はないや、安心した!
0338デフォルトの名無しさん
2011/07/05(火) 21:31:25.74mapとかはキー値とバリュー値の宣言をしなきゃいけないみたいですし。
0339デフォルトの名無しさん
2011/07/05(火) 21:37:59.470340デフォルトの名無しさん
2011/07/05(火) 21:38:16.12boost.any
0341デフォルトの名無しさん
2011/07/05(火) 22:02:00.30>>340
ちょっと調べてみましたがCで言うvoid型みたいなものっぽいですね。
テストプログラム書いてみます。ありがとう。
0342デフォルトの名無しさん
2011/07/06(水) 07:15:52.410343デフォルトの名無しさん
2011/07/06(水) 08:16:07.48http://theron.ashtonmason.net/
http://code.google.com/p/libactor/
0344デフォルトの名無しさん
2011/07/06(水) 08:32:34.27int b[5]={3,4,5,6,7}
int a[2]={1,2}
int ab[10];
から
ab[10]={3,4,5,6,7,1,2} //残りは空
といった感じに配列単位で詰め込む事はできないでしょうか?
1つずつ取り出して、1つずつ入れるしか無い・・・?
0345デフォルトの名無しさん
2011/07/06(水) 08:52:48.28memcpy(ab, b, sizeof b);
memcpy(ab + sizeof b / sizeof *b, a, sizeof a);
0346デフォルトの名無しさん
2011/07/06(水) 09:00:33.09すごい。やっぱ知ってる人は知ってるんだな。
これって副作用については自己責任なのかな。読んでみます。
ありがとう。
0347デフォルトの名無しさん
2011/07/06(水) 09:47:58.59知ってるのはオレじゃなくてgoogle先生。
0348デフォルトの名無しさん
2011/07/06(水) 09:50:56.930349天使 ◆uL5esZLBSE
2011/07/06(水) 10:20:22.27そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ゴミだな
0350デフォルトの名無しさん
2011/07/06(水) 22:39:38.53画像が移動する向きに向かせたいのに、加速度・速度をx,yに分解したら画像の段階にきてしょんぼりだった…
0351デフォルトの名無しさん
2011/07/06(水) 22:41:22.60逆関数自体は高3あたりの内容だろ
0352デフォルトの名無しさん
2011/07/06(水) 22:57:38.07asin,acos
0353デフォルトの名無しさん
2011/07/06(水) 23:15:41.770354デフォルトの名無しさん
2011/07/06(水) 23:33:21.60ああ、逆関数…そうか
arcsin arccosは習ってなくともちょうど高3で逆関数は習ってたところだった
逆関数の意味をもうちょっと深く考えるべきだった、感謝です
0355デフォルトの名無しさん
2011/07/07(木) 22:16:52.280356デフォルトの名無しさん
2011/07/07(木) 22:25:48.470357デフォルトの名無しさん
2011/07/07(木) 22:31:21.30ああそうです
最初規則と書いていたけど
違うなと思って書き直しても間違ってた
0358デフォルトの名無しさん
2011/07/07(木) 22:55:11.89同じライブラリやプロジェクトとかでは揃える
仲間内での約束みたいなもん
0359デフォルトの名無しさん
2011/07/07(木) 23:13:51.69これをたとえばb[2]を削除してそれ以降のを詰めていくにはどうしたらいいですか?
本当はint型じゃなくて自分で定義したクラスです
0360デフォルトの名無しさん
2011/07/07(木) 23:19:45.87swap(b[3],b[4]);
0361デフォルトの名無しさん
2011/07/07(木) 23:24:12.35キャメルとかパスカルとかスネークとかでググれ
0362デフォルトの名無しさん
2011/07/08(金) 08:55:51.11こうやって糞コードが増えていくんだな
0363デフォルトの名無しさん
2011/07/08(金) 12:42:55.30SubCommon.hに書いた構造体の宣言 struct DATAPACK { int t; };
これを
DataManage.hで #include "SubCommon.h"してから
struct DATAPACK datapack_A; と実体を作ろうとすると、定義されていないと警告が出ます。
不可解な事にほぼ同じ事を別の2組のヘッダーで行うと問題なく実体が作れるのに
なぜ未定義となってしまうのでしょうか?
うっすらでも思い当たる事が有ればご指摘頂けますと幸いです。
0364デフォルトの名無しさん
2011/07/08(金) 12:44:40.670365デフォルトの名無しさん
2011/07/08(金) 12:57:37.65実はインクルードされてないのでは?
インクルードガードが邪魔してるとか。
0367デフォルトの名無しさん
2011/07/09(土) 11:08:08.9010より↑か↓かの処理で
if(i<10){
10未満だよ;
}
if(i>10){
10以上だよ;
}
と
if(i<10){
10未満だよ;
}
else{
10以上だよ;
}
前者は以下のチェック→以上のチェック。
後者は以下のチェック→それ以外ならの処理
どちらも同じ動きをしてくれると思うのですが、条件は2分岐の時
ifを2つとif、else。どちらが処理が早いのでしょう?
イメージ的にはifが2つのが理解しやすいのですが、if文=処理が重いという先入観がありまして
処理速度はelseとifで大きく変わるものですか?
0368デフォルトの名無しさん
2011/07/09(土) 11:11:39.67かわらない
0369デフォルトの名無しさん
2011/07/09(土) 11:12:25.680370デフォルトの名無しさん
2011/07/09(土) 11:15:27.85余程のことが無い限り、速度の為にわけの分からない表記にはしるのはよせ
そしてそれをやるなら実測結果とかに基づいて行え
0372デフォルトの名無しさん
2011/07/09(土) 11:25:07.37プログラマとしてやっていくなら、死ぬまで有効な格言を教えよう。
KISS。これはどこまでいっても役に立つ。
0373デフォルトの名無しさん
2011/07/09(土) 11:25:22.83そうすれば日本人もくだらない無意味な節電なんてやめられる
0374デフォルトの名無しさん
2011/07/09(土) 11:27:35.33誤爆?
次からは気をつけろよ
0375デフォルトの名無しさん
2011/07/09(土) 11:40:08.72すみませんでした
0376デフォルトの名無しさん
2011/07/09(土) 11:45:29.67反省したなら腹切って死ねカス
0377デフォルトの名無しさん
2011/07/09(土) 11:48:10.26それは嫌ですが
このあたりで止めにしましょう
この話題はこれで終了ということで
0378デフォルトの名無しさん
2011/07/09(土) 11:50:02.97#include<stdio.h>
void main()
{
int i;
char a[20];
for (i=0;i<=9;i++) {
scanf("%c%*c",&a[i]);
a[i+1]='\0';
printf("%s\n",&a);
}
}
これのchar型配列をNULLで初期化する意味を教えてください。
0379デフォルトの名無しさん
2011/07/09(土) 11:50:16.79. / \
/ _ノ '' ⌒\
/ (● ) (● ) \
| :::::⌒, ゝ ⌒::::| そんなカリカリすんなよ まったく
\ `ー=-' /
⊂⌒ヽ/ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0380デフォルトの名無しさん
2011/07/09(土) 11:51:33.39あ?逃げてんじゃねーよ
切腹だ切腹。はやくしろ
みんないつもお前には迷惑してんだよ
0381デフォルトの名無しさん
2011/07/09(土) 11:52:31.38>char型配列をNULLで初期化する
この表現がよく分からないな、詳しくたのむ
0382デフォルトの名無しさん
2011/07/09(土) 11:54:42.09おかしくねーか?
0383デフォルトの名無しさん
2011/07/09(土) 11:56:55.43こっちやな
0384デフォルトの名無しさん
2011/07/09(土) 12:40:20.07わかりやすさ重視ってif二つを採用するんじゃないだろうな。
if二つのほうは、二つの条件を見比べて、かつ最初のifの中でiが変化してないって
確認しないと排他条件になってるって理解できないからわかりにくいぞ。
0386デフォルトの名無しさん
2011/07/09(土) 15:10:28.612つの条件以上増えないと確定しているならif2つよりelseのが分かりやすいが
暫定的であって今後条件が3つ4つと増える可能性があるプログラムなら、ifを2つにしておいたほうが拡張しやすくね?
0387デフォルトの名無しさん
2011/07/09(土) 15:23:12.56…
} else {
…
}
を
if (cond) {
…
}
if (!cond) {
…
}
と書くのはちょっとないわ。
0388デフォルトの名無しさん
2011/07/09(土) 16:31:58.47上と下では意味が違う場合がある
0389デフォルトの名無しさん
2011/07/09(土) 16:58:55.330390デフォルトの名無しさん
2011/07/09(土) 17:32:29.56else if(a>b) { doSomething2(); }
else { doSomething3(); }
この対称性の無さがイラつくから
if(a==b)
0391デフォルトの名無しさん
2011/07/09(土) 17:34:01.66if(a>b) { doSomething2(); return; }
if(a<b) { doSomething3(); return; }
って書いちゃう
0392デフォルトの名無しさん
2011/07/09(土) 17:38:16.83下はTRUE内でフラグを書き換えるとそれ以降の文が実行される可能性がある
どっちも使っても問題ない書き方だけど、実行結果として差が出たりするし意味合いが違うから、
ifとelseの代わりに使うものではないなぁ
0393デフォルトの名無しさん
2011/07/09(土) 18:42:46.41だから書かなくて済むなら極力書かないほうが良い
0394デフォルトの名無しさん
2011/07/09(土) 18:47:13.88わかりました
ありがとうございます
0395デフォルトの名無しさん
2011/07/09(土) 21:24:47.06そこは本当に大丈夫か?
0396デフォルトの名無しさん
2011/07/09(土) 22:16:46.900397デフォルトの名無しさん
2011/07/09(土) 23:27:36.76aa,10,12,10,
bb,11,22,20,
cc,22,10,11
char hozon[30][3];
ifstream file("memo.txt")
while(file.eof)
{
file.getline(str,sizeof(str), ',');
hozon[i]=str;
i++;
}
テキストから文字列を読み取って、それを配列に格納する処理をしたいのですが
改行まで行くとそこから先に進みません
どうすればよいのでしょうか?
0398デフォルトの名無しさん
2011/07/09(土) 23:41:58.12< while(file.eof) {
< file.getline(str,sizeof(str), ',');
---
> while(file.getline(str,sizeof(str), ',') !=file.eof) {
0399デフォルトの名無しさん
2011/07/10(日) 11:07:03.21a[5]=1;
a[3]=9;
int a[10000];
a[500]=1;
a[300]=9;
データの処理速度やメモリの使用量に違いってあるんですか?
試しにa[10000]みたいな宣言をしたけど処理がガクっと落ちたり、消費メモリ量が跳ね上がったりする事はなかったもので
0400デフォルトの名無しさん
2011/07/10(日) 11:18:01.72実際どういう処理を記述したのかが分からないから確かなことは言えないんだが
仮想メモリという仕組みがあるので、大きな配列を確保しても確保しただけじゃタスクマネージャ等から確認するようなメモリ消費量は増えないことがある
もしくはint a[10000]で跳ね上がらないとか言ってるから
それが通常40KBほどでしか無いほどを理解してないとか
0401デフォルトの名無しさん
2011/07/10(日) 11:20:27.03仮想メモリじゃOSのメモリ内容退避する機能ばっかでてくるわ
0402デフォルトの名無しさん
2011/07/10(日) 11:28:33.27どもです。参考になりました
0403デフォルトの名無しさん
2011/07/10(日) 12:18:48.39大きな多次元配列を用意して
下位の次元を内側にしたループ
上位の次元を内側にしたループ
これを比較してみると全然速度が違うことがわかるよ
0404デフォルトの名無しさん
2011/07/10(日) 12:19:57.36当たり前だ
0405デフォルトの名無しさん
2011/07/10(日) 12:46:22.30i=10で死ぬ
0406デフォルトの名無しさん
2011/07/10(日) 12:48:52.42つかそれって既出だよね
0407デフォルトの名無しさん
2011/07/10(日) 12:52:26.550408デフォルトの名無しさん
2011/07/10(日) 12:53:24.71本質を理解できず、重箱の墨についてひたすら気にする奴って
367の要件から
10の判定が重要で、それについてあれこれ会議するのか
10の判定は仮定のデータであり実際にはどうでもよくて、ifの処理速度が要件の肝であるか
0409デフォルトの名無しさん
2011/07/10(日) 13:27:14.380410デフォルトの名無しさん
2011/07/10(日) 13:36:26.15駄、上級プログラマー関係ない
;が無い。スペルが間違っている。()が足りない。
こういう奴は根本的に一緒に仕事したくないw
0411デフォルトの名無しさん
2011/07/10(日) 13:37:59.26仕事でプログラム書かなきゃいけない人は好き好んでこんな所見てないでしょ
ちなみに俺は趣味グラマ
0412デフォルトの名無しさん
2011/07/10(日) 13:42:37.13保守
仕事
趣味
レスのルーチンを理解出来てないな
プログラムより日本語を勉強した方が良いな
0413デフォルトの名無しさん
2011/07/10(日) 13:45:53.600414デフォルトの名無しさん
2011/07/10(日) 14:03:07.79クラス内の変数に次々代入ってどうやるの?
0415デフォルトの名無しさん
2011/07/10(日) 14:04:42.410416デフォルトの名無しさん
2011/07/10(日) 14:07:17.89そうなんですか
ありがとうございました
0417デフォルトの名無しさん
2011/07/10(日) 14:17:51.93Luaでやるといいよ
0418デフォルトの名無しさん
2011/07/10(日) 15:22:09.65ん?普通にやればいいんじゃないかと思ってしまうんだが、
特別な用件でもあるのだろうか?
0419デフォルトの名無しさん
2011/07/10(日) 16:18:01.49ところが、アルファベットを入力してしまうとバグってしまいます
指定した型以外が入力された場合に、入力に戻ってもう一度入力させるには
どうしたらいいのでしょうか?
0420デフォルトの名無しさん
2011/07/10(日) 16:19:07.860421デフォルトの名無しさん
2011/07/10(日) 16:21:12.22返ってくるから、自分でフラッシュしないとならない
まあscanfは勉強の間だけ使うんだろうから代替を進めたりはしないでおくか
0422デフォルトの名無しさん
2011/07/10(日) 17:25:31.511,谷,40
2,鈴木,32
3,佐藤,170
・
・
・
100,内藤,341
内藤のデータを呼び出す場合、1行ずつ総当たりするしかないですかね?
もしくはデータに規則性を持たせて、1行のデータ量を均一にして
001,谷[][][][][][],040
seekで飛ばすというのも有効なんですが?(思い浮かんだだけで実際には組んでいません)
データベース等大掛かりなものでなく、プログラムで簡単に操作できるのか
簡単にすませるつもりなら、データを整えた方が圧倒的に楽なのか
意見を〜
0423デフォルトの名無しさん
2011/07/10(日) 17:31:20.83全部いっぺんに読んで内部で配列やリスト、ハッシュにしておくこともあるけど。
DB覚えると何でもDBに入れたくなるよ
0424デフォルトの名無しさん
2011/07/10(日) 17:49:17.540425デフォルトの名無しさん
2011/07/10(日) 17:54:49.53インメモリデータベースvsC++標準ライブラリコンテナ
インメモリデータベースのコードは、前回最速だったCase5を使用します。
測定結果は以下のようになりました。
http://www.sutosoft.com/room/archives/images/20070127_graph1.png
http://www.sutosoft.com/room/archives/000482.html
0426デフォルトの名無しさん
2011/07/10(日) 18:04:09.27データ格納方法とかを自作する必要がなくなる。
0427デフォルトの名無しさん
2011/07/10(日) 18:07:11.94たとえばcsvが一ギガでメモリに全部載せるのが難しい場合は、
全文検索のようにしたらいい。
0428デフォルトの名無しさん
2011/07/10(日) 18:41:18.80大規模なデータベースでなく、CSVに毛が生えた程度の小規模のデータ郡を扱うなら
STLのLISTを駆使しろって事なのかな?
0429デフォルトの名無しさん
2011/07/10(日) 18:56:42.91速いっていってもこれ要素追加のみの話、どっち使うべきというほどの結論にはつなげられないんじゃないかな
せいぜいDBめちゃめちゃ遅いと思ってる人に、そうでもないよって言えるぐらいの意味しかないんじゃない?
0430デフォルトの名無しさん
2011/07/10(日) 19:09:28.42DB最速のメモリベースとの比較。普通のファイルにしたら遙かに遅い。
0431デフォルトの名無しさん
2011/07/10(日) 19:13:40.551次元配列的なソート関数ならわかるけど、多次元配列のソートになるとよくわからない
キー 品名 価格 在庫数 品名は数値で表す
1 1(きゃべつ) 200 1000
2 2(レタス) 100 2300
3 4(トマト) 140 3200
4 3(きゅうり) 142 3000
5 5(だいこん) 242 3000
こんな配列で
yasai[5][4]={
{1,1,200,1000}
{2,2,100,2300}
{3,4,140,3200}
{4,3,142,3000}
{5,5,242,3000}
}
価格でソートという方法が良くわからない
0432デフォルトの名無しさん
2011/07/10(日) 19:14:57.02DB、SQLつかえ。
0433デフォルトの名無しさん
2011/07/10(日) 19:18:51.90boost.multi_index
0434デフォルトの名無しさん
2011/07/10(日) 19:20:54.53C/C++が扱えるならなるべく工夫しろって事。
0435デフォルトの名無しさん
2011/07/10(日) 19:21:39.63いやファイル版との比較もあるよ
15倍程度になってる
0436デフォルトの名無しさん
2011/07/10(日) 19:23:56.94STLのlistと比較するならオンメモリで妥当じゃないのか?
0437デフォルトの名無しさん
2011/07/10(日) 20:10:09.43保存時に別データベースをオープンして全データ流し込むの?
0438デフォルトの名無しさん
2011/07/10(日) 21:27:17.87設計をどうしたら良いか悩んでいます
class ISprite
{
0439デフォルトの名無しさん
2011/07/10(日) 21:34:18.160440デフォルトの名無しさん
2011/07/10(日) 21:37:15.57【初心者】スレを立てる前にココで質問を【Part23】
http://hibari.2ch.net/test/read.cgi/gamedev/1309450150/
0441438
2011/07/10(日) 21:50:15.08スプライトは種類ごとに32bit整数のタイプIDを持っています。
セーブするときは種類を示す文字列に変換し、
ロードするときは文字列をタイプIDに変換させたいのですが
連想配列2つ用意しておいて、起動時にID、名前、関数ポインタの3つを登録すれば
いいかな、とは思いますが、何だか変な設計のような気がして
・タイプIDから文字列とスプライトを作成する関数のポインタを取得する連想配列
・文字列からタイプIDを取得する連想配列
0442デフォルトの名無しさん
2011/07/10(日) 22:04:38.84悩んでいる所をつかめているか分からないからボヤっとした回答だが
・boost::serializationとかでシリアライズする
・cvsとかに変換テーブルデータ書いておく
・データが乱雑になってきたらsqliteとかで管理する
とかの方法もあると思うな
0443442
2011/07/10(日) 22:06:45.99csvだよ
0444デフォルトの名無しさん
2011/07/10(日) 22:12:41.94シムシティと、RPGでは違うだろ。
0445438
2011/07/10(日) 22:31:38.03悩んでいる部分は「名前から各クラスのインスタンスを作るときの方式」です。
連想配列じゃなくて、配列使った線形探索ならできそうなのが分かったのでこっちにします・・・
class ISprite
{
E_SPRITE_TYPE getType() const
{
return EST_IMAGE;
}
}
class CSpriteManager
{
void addSpriteType(int type, char* name, FACTORYFUNC_T func)
{
// 種類を追加
Types.push_back(SSpriteType(type, name, func));
}
ISprite* createSprite(const char* name)
{
// 線形探索で一致するものを探す
}
char* getSpriteName(E_SPRITE_TYPE type)
{
// 線形探索で一致するものを探す
}
array<SSpriteType> Types;
}
0446デフォルトの名無しさん
2011/07/11(月) 13:03:06.60typedef struct {
char name[256];
int age;
int sex;
} People;
こんな記述を見たのですが、
PeopleのPが大文字になっているのは何か理由があるのでしょうか?
0447デフォルトの名無しさん
2011/07/11(月) 13:26:26.990448デフォルトの名無しさん
2011/07/11(月) 13:35:45.01なにか意味を考えるとしたら
ユーザー定義型を区別するため
C++ や Javaでのクラスでの一般的なつけ方を使った
とかかなぁ
0449デフォルトの名無しさん
2011/07/11(月) 21:32:27.70ペア型(キー,値1)の紐付けじゃ、1次元配列でよくね?と思ってしまうわけで
キー,値1,値2,値3,みたいな運用ができれば重宝したのに
0450デフォルトの名無しさん
2011/07/11(月) 21:36:34.03map<key, value> m;
0451デフォルトの名無しさん
2011/07/11(月) 21:41:02.96むしろそういう使い方の方が一般だと思うよ
0453デフォルトの名無しさん
2011/07/11(月) 21:47:09.49vectorを突っ込めば済むだろ
0454デフォルトの名無しさん
2011/07/11(月) 22:11:18.81mapって総舐めでアクセスするんだっけ
struct hoge{
int aa;
int bb;
char cc;
int dd[10];
};
hoge datalist[1000];
データ数が変更されないリスト表的なデータなら
構造体の配列要素をキーにしたほうが扱いやすくね?
0455デフォルトの名無しさん
2011/07/11(月) 22:24:52.17などという手もあるぞ
0456デフォルトの名無しさん
2011/07/11(月) 22:42:28.63だいたいは二分木使って実装されてるでしょ
0457デフォルトの名無しさん
2011/07/11(月) 23:23:41.990458デフォルトの名無しさん
2011/07/12(火) 02:37:29.13現在の「コスト+ゴールまでの予想コスト」の小さいもの。に置き換えた版ってことであってる?
0459デフォルトの名無しさん
2011/07/12(火) 20:00:28.48char b[2][20]
a[0]="00"
b[1]="00"
if(a[0] == b[1]){
}
このif文が成立しないのですが何故でしょう?
%sで確認すると 00 と 00 で同じ
%dで確認すると微妙に違う値(220341 220752 みたいな感じ)
atoiで数字に変換してから比較すると 0と0 でif文がちゃんと動作
厳密にはchar配列に直接文字列を書き込んでいるのではなく、代入で”00”を入れているので若干動作が違いますが
%s上は同じ文字列なのに%d(int)で調べると値が異なるというのがわかりません。配列の大きさも同じなのに
0460デフォルトの名無しさん
2011/07/12(火) 20:06:30.48b[1]="00"
はスタック上の違う場所に"00"って文字をつくって、そのアドレスを突っ込んでるから。
アドレスが違うので違う。
0461デフォルトの名無しさん
2011/07/12(火) 20:12:30.64strcmpって知ってる?それがなんの為にあるとおもってんの?
0462デフォルトの名無しさん
2011/07/12(火) 20:18:35.54知りません。
が、調べたら単純な2つの文字列比較strcmpで対応すれば間違いは無さそうですね
if(strcmp(a[0],b[1])==0)
{
}
で正常に動作しました
0463デフォルトの名無しさん
2011/07/12(火) 20:18:53.880464デフォルトの名無しさん
2011/07/12(火) 20:22:48.61教科書やり直してこい
この馬鹿にちゃんと指摘してやれよ
説明面倒だから俺はやらんが
0465デフォルトの名無しさん
2011/07/12(火) 20:56:32.060466デフォルトの名無しさん
2011/07/12(火) 20:58:05.810467デフォルトの名無しさん
2011/07/12(火) 21:00:13.950468デフォルトの名無しさん
2011/07/12(火) 21:03:33.51え?
0469デフォルトの名無しさん
2011/07/12(火) 21:23:03.09b[1]="00\0";
こうだよね☆(ゝω・)v
0470デフォルトの名無しさん
2011/07/12(火) 21:27:25.77馬鹿なの?死ぬの?
0471デフォルトの名無しさん
2011/07/12(火) 21:33:28.13ネタだとしても意味わかんないし(汗
0472デフォルトの名無しさん
2011/07/12(火) 21:36:38.09の場合\0の後にももう1個\0つくの?
0473デフォルトの名無しさん
2011/07/12(火) 21:39:40.310474デフォルトの名無しさん
2011/07/12(火) 21:40:38.58さんくす
0475デフォルトの名無しさん
2011/07/12(火) 22:12:40.591 2
3 4
という中身の2行のファイルがあって、標準入力から下記のループで読み込みます。
for(;;) {
int a,b;
if(!cin) {
break;
}
cin >> a >> b;
cout << a << " " << b << endl;
}
すると、下記のように余分に1行出力されるのですが、こういう場合、普通はどう書くのでしょうか?
$ ./hoge.exe < src
1 2
3 4
3 4
環境は cygwin の g++ です。
0476デフォルトの名無しさん
2011/07/12(火) 22:21:43.43int a,b;
for(;;) {
cin >> a >> b; if(!cin) break;
cout << a << " " << b << endl;
}
0477デフォルトの名無しさん
2011/07/12(火) 22:23:17.870478デフォルトの名無しさん
2011/07/12(火) 22:25:28.13二行目の4がbに入るループの終わりではまだcinに改行が残ってる
その次のループでcinはまだ終端ではないのでif文はスルーされる
cinは失敗するが改行は読み込むというか読み飛ばす
a, bには前のループの値のままなので3 4が出力される
cinはもう終端なので次の周のifでbreakされる
0479デフォルトの名無しさん
2011/07/12(火) 22:25:47.20>>477
おぉ、いけました。ありがとうございます!
0480デフォルトの名無しさん
2011/07/12(火) 22:27:13.63ありがとうございます、理解しました
0481デフォルトの名無しさん
2011/07/13(水) 02:34:24.55全てのデータの型をstaticにして
最初に前回の数字と同じだったらスキップするという感じのif文で囲ってしまうのと
同じでも毎回同じ処理をさせるのとどちらがよいのでしょう?
根拠は特にないのですが、staticだらけってのはなんかダメというイメージが・・・
処理内容は200個未満の配列要素をifったりforしたり
その結果でちっちゃなファイルからデータを読み取って反映させる程度です
0482デフォルトの名無しさん
2011/07/13(水) 02:49:32.04staticがよくない理由は
マルチスレッドで対策なしで使うと値が無茶苦茶になることがある
同じ物を代入したのに結果が変わる関数を作れるので、これはあまりよくないとされる
(関数を呼び出した時の引数だけじゃなくて、前回どう呼び出したが関わってしまい面倒といった感じの理由で)
なので、マルチスレッドで使わないというなら
その使い道は別に構わないのではないでしょうか
どっちにすべきかの話をしてるなら内容次第なのでなんとも
0483デフォルトの名無しさん
2011/07/13(水) 03:14:32.10クリティカルセクションとかmutexとかセマフォとか
0484デフォルトの名無しさん
2011/07/13(水) 03:20:09.43用語だけでも添えておけということか
0485デフォルトの名無しさん
2011/07/13(水) 03:21:45.250486デフォルトの名無しさん
2011/07/13(水) 03:53:15.01頭大丈夫?
0487デフォルトの名無しさん
2011/07/13(水) 04:19:38.070488デフォルトの名無しさん
2011/07/13(水) 04:21:29.77心配してくれてありがとう
0489デフォルトの名無しさん
2011/07/13(水) 05:33:51.31お前がアホ
0490デフォルトの名無しさん
2011/07/13(水) 08:33:31.760491デフォルトの名無しさん
2011/07/13(水) 08:35:42.930492デフォルトの名無しさん
2011/07/13(水) 08:50:47.860493デフォルトの名無しさん
2011/07/13(水) 08:58:09.896割くらいだろう
0494デフォルトの名無しさん
2011/07/13(水) 09:10:23.450495デフォルトの名無しさん
2011/07/13(水) 11:31:24.46アマプログラマに負けてるレベル。
0496デフォルトの名無しさん
2011/07/13(水) 11:34:59.680497デフォルトの名無しさん
2011/07/13(水) 14:35:27.870498デフォルトの名無しさん
2011/07/13(水) 20:25:40.530 1 2 3 4
0001 岩手 100 C エカ
0002 福島 70 E トチト
0003 栃木 60 D サクケ
0004 東京 500 A カカカ
こういう感じの項目が綺麗に整っているデータでなく
0001 岩手 C エカ 100
0002 福島 E 70 トチト
0003 栃木 サクケ 60 D
0004 東京 500 A カカカ
完全ランダムではないが、データの配置が数パターンに分かれているとき
どうやって扱えばいいのでしょう?
案1 if文
3番目が〜だからdatalist[2]でなく[3]に入れる。
といった感じで条件でデータの値を調べつつ読み取る
案2 読み取りリストを用意する
岩手 0,1,3,4,2
福島 0,1,3,2,4
栃木 0,1,4,2,3
東京 0,1,2,3,4
東京だったら、読み取りリストにアクセスして参照しながら取り出す
元データ数と同じ分だけリストを入力しなければならない。
データ数は300以下。パターン数は6前後(データの項目数は勝手に増減しない)
0499デフォルトの名無しさん
2011/07/13(水) 20:37:27.68例を見る限り、数字、英字、カナで判別出来そうだが。
0500デフォルトの名無しさん
2011/07/13(水) 20:42:20.65実際にはもう少し横に項目数があり、数字で別データもあるという感じでお願いします
0501デフォルトの名無しさん
2011/07/13(水) 20:53:16.92その巫山戯た仕様をぶち壊せ。
0503デフォルトの名無しさん
2011/07/13(水) 22:21:37.47読めるように間違えろ!
0504デフォルトの名無しさん
2011/07/13(水) 22:28:45.50どういう文字列を変換したのか予想がつかないw
みざんぎ?
0505デフォルトの名無しさん
2011/07/13(水) 22:31:43.830506デフォルトの名無しさん
2011/07/13(水) 22:32:46.38ふざけんな!って言葉自体良く使うが、漢字の書き方は初めて知ったw
0507デフォルトの名無しさん
2011/07/13(水) 22:36:06.15フザケル
御ふざけ
でないじゃん
0508デフォルトの名無しさん
2011/07/14(木) 00:14:12.91そんな戯けた辞書を使うのが悪い。
0509デフォルトの名無しさん
2011/07/14(木) 00:23:49.37「流石」と同じレベル
0510デフォルトの名無しさん
2011/07/14(木) 00:31:55.99int Numdata[10]={1,20,30,40,500,6000,700,800,9,}
struct Kouzo{
int a;
int b;
char c;
char d[10];
};
struct Kouzo Kouzoutai[5];
main{
using namespace std;
//その1
map<int ,int[]> map1;
map1.insert( map<int, int[]>::value_type( 1, ??) );
//その2
map<int ,vector<int>> map1;
map1.insert( map<int, vector<int>>::value_type( 1, ??) );
//その3
map<int ,struct Kouzoutai> map1;
map1.insert( map<int, struct Kouzoutai>::value_type( 1, ??) );
//その4
map<int ,struct Kouzoutai[]> map1;
map1.insert( map<int, struct Kouzoutai[]>::value_type( 1, ??) );
}
配列や構造体のデータをどうやってinsertすればいいんでしょ?
0511デフォルトの名無しさん
2011/07/14(木) 00:35:43.160512デフォルトの名無しさん
2011/07/14(木) 00:47:58.43mapの使い方が理解できました
map1[1] = Numdata;
map2[1] = vector<int>(Numdata, Numdata + 10);
0514デフォルトの名無しさん
2011/07/14(木) 04:12:49.140515デフォルトの名無しさん
2011/07/14(木) 09:20:09.470516デフォルトの名無しさん
2011/07/14(木) 13:31:27.39int型のまま処理する方法ってありませんか?
for(i=0;i<4;i++)
{
5x10^i
}
0517デフォルトの名無しさん
2011/07/14(木) 13:40:53.050518デフォルトの名無しさん
2011/07/14(木) 14:02:08.67if(n==1) { return a; }
if(n==0) { return 1; }
return a * ipow( a, n-1);
}
0519デフォルトの名無しさん
2011/07/14(木) 14:17:17.49再帰を使って自作の指数関数ってわけですね
再帰って処理を追う事はできても、自分で有効活用できないんだよな・・・
0520デフォルトの名無しさん
2011/07/14(木) 14:25:33.550521デフォルトの名無しさん
2011/07/14(木) 14:28:40.03でもコードをシンプルにできたりすると「スゲー」と思う
分かり難くなる場合もあるけどw
0522デフォルトの名無しさん
2011/07/14(木) 15:24:13.600523デフォルトの名無しさん
2011/07/14(木) 15:35:43.35どこか参考になるサイトはありますか?
0524デフォルトの名無しさん
2011/07/14(木) 15:43:38.83return a * func();
をループにするのは
return func();
をループにするのとでは訳が違うぞ。
前者は中間コード上は
tmp1 = func()
tmp2 = a * tmp1
return tmp2;
となり、単純な末尾再帰として解決できない。
そこまでコンパイラががんばるかどうかは調べないとなんとも言えんよ。
gccとかvsはやってくれるとは思うけど。
0525デフォルトの名無しさん
2011/07/14(木) 15:53:13.15AY-3-8910などを繋いで制御するって事?
0526デフォルトの名無しさん
2011/07/14(木) 16:05:20.10あ、違います。効果音をプログラム内で賄いたいなと。
0527デフォルトの名無しさん
2011/07/14(木) 16:07:10.320528デフォルトの名無しさん
2011/07/14(木) 16:14:00.69ちょっと調べてみます
0529デフォルトの名無しさん
2011/07/14(木) 16:21:11.150530デフォルトの名無しさん
2011/07/14(木) 17:21:25.84void main(void)
{
::Beep(3000, 500);
::Sleep(200);
::Beep(4000, 200);
::Sleep(200);
::Beep(4000, 200);
}
ネットで見つけました。
周波数や長さを独自で調節するにはどうすればいいのかわからない。
windowsです。
0531デフォルトの名無しさん
2011/07/14(木) 17:45:11.70よーわからんけどこれでいいんじゃねーの?
ttp://msdn.microsoft.com/ja-jp/library/cc428923.aspx
0532デフォルトの名無しさん
2011/07/14(木) 17:56:25.09それなりのライブラリ利用してはどうかな。
サウンドプログラミング5
http://hibari.2ch.net/test/read.cgi/tech/1231649001/
こういうスレもあるし、、最初は眺めるだけにしたほうがいいが。
まあ最初はBeepで遊んでもいいけどね。
0533デフォルトの名無しさん
2011/07/14(木) 18:16:53.58ありがトン。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi
ここの
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200310/03100081.txt
を解読してたのですがわけわかめですた。素直にBeep使うことにします。
0534デフォルトの名無しさん
2011/07/14(木) 21:05:30.400535デフォルトの名無しさん
2011/07/14(木) 21:07:18.19「Cで出来てCぷらすぷらすで出来ないことってありますか」です
0536デフォルトの名無しさん
2011/07/14(木) 21:19:54.000537デフォルトの名無しさん
2011/07/14(木) 21:19:54.42int a[100] = {
[1] = 10,
[2] = 100
};
struct {
int x;
char b;
} = {
.b = 'c'
};
void *から他のポインターへの暗黙変換
void *a;
char *b = a; <= C++ではエラー
0538デフォルトの名無しさん
2011/07/14(木) 21:27:32.05Cだとその初期化ができるのか〜
それができず、今から覚えるならC#のが楽だろ?と思っているぐらい。
C#は触ったことないけどww
0539デフォルトの名無しさん
2011/07/14(木) 21:34:48.390540デフォルトの名無しさん
2011/07/14(木) 21:37:58.600541デフォルトの名無しさん
2011/07/14(木) 22:35:31.69変数名が抜けてた。意味は通っただろうけど。
struct {
int x;
char b;
} a = {
.b = 'c'
};
0542デフォルトの名無しさん
2011/07/15(金) 09:07:41.47void foo (int a, int b) {printf("%d,%d\n", a, b);}
struct foo_args {
int a;
int b;
};
void _foo (struct foo_args *args) {foo(args->a, args->b);}
#define foo(...) _foo(&(struct foo_args){__VA_ARGS__})
を使ってキーワード引数もどきが出来るな、と思った
func(.a=1,.b=2);
func(1,2); // こっちでも呼べる
もちろん使った事は無いが
0543デフォルトの名無しさん
2011/07/15(金) 15:46:40.63何が問題なんだよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0544デフォルトの名無しさん
2011/07/15(金) 15:56:23.06全て構造体配列で対応している
for(i=0;i<参照リスト;i++)
if(商品[0]==参照リスト[i])
{
}
find?イラネ
0545デフォルトの名無しさん
2011/07/15(金) 17:54:18.57まあstd::mapよりboost::unordered_mapのが良く使うが
0546デフォルトの名無しさん
2011/07/15(金) 17:56:14.240547デフォルトの名無しさん
2011/07/15(金) 18:05:27.44それ気になっているんだけど
ループで
1,2,3,4,5・・・・と上から順番に検索していくのと
findで先頭から調べるのって、内部処理は一緒じゃねーのか?
違うの?
0548デフォルトの名無しさん
2011/07/15(金) 18:42:11.69理論上はfindの計算量オーダーは
配列をバイナリーサーチならO(log N)
ツリーマップなら O(log N)
ハッシュマップなら O(1)
だが線形探索はO(N/2)
この差はサイズが大きいほど顕著に現れる
0549デフォルトの名無しさん
2011/07/15(金) 18:49:47.01別クラスから実行できちゃいますか?
0550デフォルトの名無しさん
2011/07/15(金) 19:35:47.48言われてみりゃ〜
みつかった時点で処理が終わるfind
1つ目の要素だとしても最後まで調べてからでないと処理が終わらない全サーチ
10個程度ならまだしも、1000、10000と数が増えると
何度もサーチする必要が出てくる構造となったら無視できなくなるな
0551デフォルトの名無しさん
2011/07/15(金) 20:14:41.30std::function<void ()> func = std::bind(&test::プライベートなメンバ関数名, インスタンスへのポインタ);
0552デフォルトの名無しさん
2011/07/15(金) 20:17:00.11そもそも、仮に効率が同じだとしてもループの中身を見ないと検索していることが分からないだろ。find()なら間違いようがない。strcpy()なんかを使うのも同じことだ。
0553デフォルトの名無しさん
2011/07/15(金) 20:27:20.24他人のソースを見てもMAPの初期設定がよくわからなかったな
下準備という点では配列でループを組んだほうが遥かにわかりやすい
検索データ数が50未満の初心者のお勉強という低次元の話だけど
0554デフォルトの名無しさん
2011/07/15(金) 20:28:06.43bindとか使うんですね。。さらっと流してたけどいろいろ出来そう
ありがとうございました
0555デフォルトの名無しさん
2011/07/16(土) 08:09:28.03a[i] = i++; a[i] = func(i++); a[i++] = i % 2 ? 0 : 1; j = i++ + i; こんなのも全部未定義でしょうか?
0556デフォルトの名無しさん
2011/07/16(土) 10:30:16.62これだけ未定義じゃない
0557デフォルトの名無しさん
2011/07/16(土) 11:05:38.65って書くと大丈夫じゃないような気も。いや気のせいか?
0558デフォルトの名無しさん
2011/07/16(土) 11:17:55.21たとえカッコでどうしようとも。
0559デフォルトの名無しさん
2011/07/16(土) 11:27:55.74馬鹿は死ね
0560デフォルトの名無しさん
2011/07/16(土) 11:49:21.94○ a[i] = func(i++); // 関数呼び出しは副作用完了点
× a[i++] = i % 2 ? 0 : 1;
× j = i++ + i;
http://www.kouno.jp/home/c_faq/c3.html#8 参照
0561デフォルトの名無しさん
2011/07/16(土) 11:52:57.830562デフォルトの名無しさん
2011/07/16(土) 11:57:29.430563デフォルトの名無しさん
2011/07/16(土) 11:58:27.51◯◯××じゃないのか?
0564デフォルトの名無しさん
2011/07/16(土) 12:00:47.45◯×◯×じゃないのか?
0565デフォルトの名無しさん
2011/07/16(土) 12:05:08.58×××◯じゃないのか?
××◯×じゃないのか?
××◯◯じゃないのか?
×◯××じゃないのか?
×◯×◯じゃないのか?
×◯◯×じゃないのか?
×◯◯◯じゃないのか?
◯×××じゃないのか?
◯××◯じゃないのか?
◯×◯×じゃないのか?
◯×◯◯じゃないのか?
◯◯××じゃないのか?
◯◯×◯じゃないのか?
◯◯◯×じゃないのか?
◯◯◯◯じゃないのか?
0566デフォルトの名無しさん
2011/07/16(土) 12:17:10.310567563
2011/07/16(土) 12:31:58.56a[i] = i, i++;
0568デフォルトの名無しさん
2011/07/16(土) 13:37:33.41つまんねーよ。引っ込んでろ。
0569デフォルトの名無しさん
2011/07/16(土) 13:40:09.33a[i] = (i, i++);
こうするとやはり未定義か。括弧で評価順は変わらない?
0570563
2011/07/16(土) 14:48:48.27int j = i, a[i++] = j;
>>569 は a[i] = i++; と同じじゃないか。
>>568 は int j = i++, a[i] = i; の可能性もあると。
0571デフォルトの名無しさん
2011/07/16(土) 14:54:09.17頭大丈夫か?
0573デフォルトの名無しさん
2011/07/16(土) 15:16:11.23もう、いいから引っ込んでろ。痛々しすぎる。
0574デフォルトの名無しさん
2011/07/17(日) 11:40:17.96そのブロックで使われなくなった時点で破棄されるのか
ブロックを抜けるときに破棄されるのか知りたいです
0575デフォルトの名無しさん
2011/07/17(日) 11:42:08.82std::list<MyClass*> mylist
で行こうか、
std::list<MyClass> mylist
で行こうか。。
前者なら
MyClass * p = new MyClass();
mylist.push_back(p);
std::list<MyClass*>::iterator it = mylist.begin();
delete (MyClass *)(*it);
みたいな流れで、作成、削除ができるけど、後者だとどうなるのですか?
MyClass * p = new MyClass();
mylist.push_back(*p);
std::list<MyClass>::iterator it = mylist.begin();
delete (MyClass *)&(*it); //←じゃないよね。これだとコピーしか消せないし
delete p; //結局pが含まれるスコープで消すしかない?
アドバイスください
0576デフォルトの名無しさん
2011/07/17(日) 11:51:55.44ブロックを抜けるとき
>>575
後者はdeleteいらないnewする必要もない
MyClass a;
mylist.push_back(a);
これだけでいい
0577575
2011/07/17(日) 12:03:11.39ありがとうございます
後者を選択する場合、実体のコピーをリストに作るという思想の設計なのでしょうか?
また、取り出して値を参照したり書き換えたりする場合はどのようにすればよいのでしょうか?
MyClass & ra = (*it);
ra.x = 100;
ra.y = "abc";
みたいにやるのですか?(コンパイルできるかどうかはわかりません。机上で考えて書いてます)
連続で質問してすみませんがよろしくお願いします
0578デフォルトの名無しさん
2011/07/17(日) 12:07:18.75それでもいいけど
it->x = 100;
it->y = "abc";
でもいける
0579デフォルトの名無しさん
2011/07/17(日) 12:09:16.15(*it)は複製されたオブジェクトへの参照を返す
もとのオブジェクトとは関係ない
0581デフォルトの名無しさん
2011/07/17(日) 12:19:04.760582575
2011/07/17(日) 12:32:09.670583デフォルトの名無しさん
2011/07/17(日) 12:35:51.770584デフォルトの名無しさん
2011/07/17(日) 12:50:31.34へえ、こんなスレもあるんですね。
0586デフォルトの名無しさん
2011/07/18(月) 07:46:49.06> 複製を格納する
mylist.push_back(MyClass());
この場合もコピーコンストラクタが作動してMyClassのコピーが保持されるって事ですか?
0587デフォルトの名無しさん
2011/07/18(月) 08:52:45.86基本的にはそうだよ
最適化とか考えると微妙に違うけどそのへんは深く考えなくていい
0588デフォルトの名無しさん
2011/07/18(月) 08:56:28.57ありがとうございます。
「c++はコピーの概念で出来てる」ってどこかで聞いた事があったので、
このあたりが関係してるのかなと思いました。
0589デフォルトの名無しさん
2011/07/18(月) 10:23:18.560590デフォルトの名無しさん
2011/07/19(火) 01:36:39.31vecNum.push_back(100);
vecNum.push_back(230);
vecNum.push_back(10);
vecotr<int>::iterator it;
it=vecNum.find(10);
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
map<string, string> mapSt;r
mapStr.insert(pair<string, string>("i", "aaa"));
mapStr.insert(pair<string, string>("ro", "bbb"));
mapStr.insert(pair<string, string>("ha", "ccc"));
map<string, string>::iterator it;
it=vecNum.find("ro");
イテレータなんですけど
使うコンテナの型?はmapなのかlistなのかvectorなのかわかるんだから
vecotr<int>::iterator it; や map<string, string>::iterator it; わざわざ書かず
iterator it;
it=vecNum.find(10);
iterator it;
it=vecNum.find("ro");
と自動認識してもいいだろ?と思ったのですが、初心者だからそう思うんですかね
もしかしたら仕様なんだからそう記述しろ!という話で済んでしまう事かもしれませんけど
0591デフォルトの名無しさん
2011/07/19(火) 03:01:52.81心配すんな
C++1Xからはautoになる
今のC++が自動認識しないのはCからの哲学「プログラマはコンピュータに何を
させようとしているのか完全に理解している」を引きずっているから
しかし俺の予想だけどC++1Xは不発に終わるような感じがしている
C++ですら脱落者が多量に出てCに敢えて留まるプログラマが多かったのに
C++1Xはちょっとヤバさを感じている
0592デフォルトの名無しさん
2011/07/19(火) 03:05:18.94何気にautoの使い方で一番有効だよな
いろんなコンテナを舐めるループをマクロで一括定義できる
0593デフォルトの名無しさん
2011/07/19(火) 09:46:54.820594デフォルトの名無しさん
2011/07/19(火) 11:28:47.33typedef で少しは楽になる
typedef map<string, string> HogeMap;
HogeMap hogeMap;
HogeMap::iterator it = hogeMap.find(??);
とか
さらにBOOST_FOREACHでループだけならもっと楽になる。イテレータいらず
BOOST_FOREACH(HogeMap::value_type& v,hogeMap)
{
処理
}
0595デフォルトの名無しさん
2011/07/19(火) 11:46:26.560596デフォルトの名無しさん
2011/07/19(火) 12:07:03.88もうすでに酷いコード書いてるから
大丈夫だよ
0597デフォルトの名無しさん
2011/07/19(火) 12:10:33.880598デフォルトの名無しさん
2011/07/19(火) 20:37:02.860599デフォルトの名無しさん
2011/07/20(水) 03:33:38.740600デフォルトの名無しさん
2011/07/20(水) 14:03:17.46うそですけどねwwwwwwwwwwwwwwwwwwwwwwwww
0601デフォルトの名無しさん
2011/07/21(木) 00:26:09.10これからC++をやってみようと思うんだが、Cやっといたほうが理解が進むのかな?
オブジェクト指向から学んだからいまいち手を出しにくいのだけれど…
0602デフォルトの名無しさん
2011/07/21(木) 00:31:19.91C#からな絶対うぜーってなるから
学ばない方がいい
0603デフォルトの名無しさん
2011/07/21(木) 00:45:41.16C#から覚えたのなら、わざわざC++なんか覚えなくて良い
特に困ってなければC#でいいだろ
と、にわかC++使いは強くそう思う
その時間でC#の理解度を高めたほうが100倍マシだな
0604デフォルトの名無しさん
2011/07/21(木) 01:01:47.20そのコンセプトの違いに意味を見出せないならやる必要がない言語。
0605デフォルトの名無しさん
2011/07/21(木) 01:23:08.02CとJavaは似ていて、
C++とC#もまた似ている。
0606デフォルトの名無しさん
2011/07/21(木) 01:24:10.490607デフォルトの名無しさん
2011/07/21(木) 08:54:06.81cでoopのやり方があるんだけどね、それを覚えたらc++の基礎はすぐに覚えられるよ。
あー、そんやって実現してんだ。
あー、そこをやってくれてるんだ。
あー、これが何でも作れるって奴か。
ってなるよきっとw
0608デフォルトの名無しさん
2011/07/21(木) 09:24:04.90それ大事
で次はstringやboostの実装みて
他言語のあれはこうやって動いてるのかとやる
0609デフォルトの名無しさん
2011/07/21(木) 12:20:30.50Z80や8086でもいい
やっておくと理解度が全然違うぞ
0610デフォルトの名無しさん
2011/07/21(木) 12:55:02.88CreateWindow関数で作ったウィンドウに、ファイルをドラッグ&ドロップしてそのフルパスを取得したいのですが、
どう実現すれば良いのでしょうか? ググるべきワードか関数名を教えて下さると幸いです;
0611デフォルトの名無しさん
2011/07/21(木) 12:57:13.700612デフォルトの名無しさん
2011/07/21(木) 12:58:42.79「winapi ドラッグアンドドロップ」でググると一番上に出てくるよ。
0614デフォルトの名無しさん
2011/07/22(金) 07:21:26.10char text[50] = "abcdefghijklmn.og";
char *tgt;
tgt = strstr(&text[0], ".og");
if(tgt != NULL) { sprintf_s(tgt, sizeof(tgt), ".txt\0"); }
tgtのサイズより大きい文字を入れようとしてしまっているので、Buffer too smallのエラーが出るのは当然とは思うのですが・・
strstrの検索結果を、text[]の要素ナンバーに直す方法か、もっと正しいやり方があれば教えて頂けますと助かります;
0615デフォルトの名無しさん
2011/07/22(金) 07:38:10.82sizeof(tgt)は使えないぞ
ちゃんと計算して残りのメモリのサイズを渡さないと
0616デフォルトの名無しさん
2011/07/22(金) 07:43:54.960617デフォルトの名無しさん
2011/07/22(金) 07:45:41.540618デフォルトの名無しさん
2011/07/22(金) 07:49:55.43sprintf_s(tgt, sizeof(text)-(tgt-text), ".txt");
0619614
2011/07/22(金) 08:35:49.24沢山のご助言ありがとうございます。 sizeof(tgt)が間違いだったんですね。
そして、tgtを計算に使うと元の配列のサイズ+検索結果位置の値になるんですね。初めて知りまりた。
勉強なります。 無事解決し最低限は理解をする事ができました。 ありがとうございました〜
ポインタ周りの計算が解ってない悪寒。
それと、なんの為にsprintf_s()に使える領域サイズを教示しているのかも解っていない悪寒。
0621デフォルトの名無しさん
2011/07/22(金) 09:50:13.130622デフォルトの名無しさん
2011/07/23(土) 15:23:16.52map(string, string)にkeyとvalueを分けて挿入したいんですが、C言語のstrtokのように新しいbasic_stringを生成せずに、
文字列のRangeだけ渡して生成する、みたいなことはできないんでしょうか?
map<string, string> config_map;
ifstream config_is(".config");
string line;
string::size_type index = 0;
while (getline(config_is, line)) {
if ((index = line.find("=")) == string::npos) {
continue;
// line[index++] = '\0'; // C言語でやると←↓のような感じになることをC++でやりたい。substrではなく。
// config_map.insert(map<string, string>::value_type(line, line[index]));
}
}
0623デフォルトの名無しさん
2011/07/23(土) 15:27:01.250624デフォルトの名無しさん
2011/07/23(土) 16:02:04.99じゃなくて
for(;;)
を使えって言われたけど何で?
0625デフォルトの名無しさん
2011/07/23(土) 16:06:32.00そんなのは個人の好みだから、言った本人に聞くしか無いよ
1がマジックナンバーみたいで気に入らなかったんじゃないの
0626デフォルトの名無しさん
2011/07/23(土) 16:14:58.16stringのコンストラクタ見たらなんとでもなるんじゃないのか
0627デフォルトの名無しさん
2011/07/23(土) 16:16:06.12while(1)だと毎回真偽値判定されてループするが
for(;;)だと空白→特殊処理としてループすることになるんでコストがお得とか何とか
そしてこれはいにしえの話らしい
0628デフォルトの名無しさん
2011/07/23(土) 16:19:44.55いしにえだと断って言われたんなら
そういう話で解決してるんじゃん
何十年前の話だよって感じだが
0629デフォルトの名無しさん
2011/07/23(土) 16:23:55.18>「KEY=VALUE」みたいな行が複数あるテキストファイル
それiniファイルの書式だから
所謂MBCSの扱いでいいならboostかwindowsならapi使えば?
win32apiなら予めUnicodeにしておけばそのままwstringに入れられるし
0630デフォルトの名無しさん
2011/07/23(土) 20:10:23.68本当に駄目なんですかね?
例えばESCで処理終了、 F1でメニュー F2でxxx というキーで分岐するのを
if(ESC)
if(F1)
if(F2)
switch (key){
case ESC
case F1
case F2
}
数が増えたらcaseのが処理が早くなると言う認識でいいですか?
(ifの場合は毎回全部調べなければならない。caseはその項目に飛ぶ)
0631デフォルトの名無しさん
2011/07/23(土) 20:13:43.59else if
にしろ
0632デフォルトの名無しさん
2011/07/23(土) 20:14:30.890633デフォルトの名無しさん
2011/07/23(土) 20:14:51.17if(ESC)
else if(F1)
else if(F2)
だろうに…。で、そんな書き方は冗長だから、
そんなときこそスイッチを使うんじゃないの。
0634デフォルトの名無しさん
2011/07/23(土) 20:15:37.03コンパイルされる。switchはジャンプテーブル使ったジャンプにはならない。
0635デフォルトの名無しさん
2011/07/23(土) 20:17:08.54そうじゃなかったりしたらぜんぜん違ってくるよ
あと{}つけないとスコープも違っている
0636デフォルトの名無しさん
2011/07/23(土) 20:41:11.93詳しく教えてもらえますか?
>>629
それもありなんですが、C++を覚えている最中で、
C言語で出来る一番効率がいい方法(文字列を複製せずに分割)をC++でどうやるのかと思い質問した感じです。
最終的に手段はいいように調整したいんですが、同じようなことをしたいとき、C++ならどうやるのかなと。
個人的には string の特定部分だけをアドレスで持つ range みたいなものがあると思っていたんですが・・・
0637デフォルトの名無しさん
2011/07/23(土) 20:51:35.580638デフォルトの名無しさん
2011/07/23(土) 20:54:04.93こちらの意図を読み取って、どうでもいいところをギャーギャー騒ぐ典型的な駄プログラマーと違って
ピンポイントな回答をありがとうございます
0639デフォルトの名無しさん
2011/07/23(土) 21:11:30.22substrでダメな理由は?
0640デフォルトの名無しさん
2011/07/23(土) 21:20:32.92>>634でswitchがだめな理由がよくわからないんだけど。
最適化のためにわざわざswitch書くのに最適化されてねーじゃんって意味?
0641デフォルトの名無しさん
2011/07/23(土) 21:28:08.64その他大勢「内部処理はほぼ同じ」
にわかクン「おなじなのか」
おわり
って意味じゃね?
0642デフォルトの名無しさん
2011/07/23(土) 21:28:57.49質問者はswitchはジャンプテーブル使った間接ジャンプにコンパイルされると
思ってたから、>>630のような質問をした。
実際はそんなコードにはならないという事がわかれば、どっちで書いても実際
は大差がないので読みやすい方で書けばいいという結論が得られる。
0643デフォルトの名無しさん
2011/07/23(土) 21:33:27.06string ( const string& str, size_t pos, size_t n = npos );
あるんだから, findの結果を元に
config_map.insert(map<string, string>::value_type(string(line, なんか整数変数, , なんか整数変数), string(line, なんか整数変数, , なんか整数変数)));
ってすりゃいーじゃん
0644639
2011/07/23(土) 21:38:30.84std::string line = "abc=def";
std::string::size_type index = line.find("=");
config_map.insert(std::make_pair(line.substr(0, index), line.substr(index+1)));
やってることは>>643と一緒
0645デフォルトの名無しさん
2011/07/23(土) 21:40:42.15for()のほうがその意図が明確になる。
一個の変数を参照して分岐する処理ならswitchがいいな。
0646デフォルトの名無しさん
2011/07/23(土) 21:46:22.940647デフォルトの名無しさん
2011/07/23(土) 21:51:59.050648デフォルトの名無しさん
2011/07/23(土) 21:55:46.520649デフォルトの名無しさん
2011/07/23(土) 21:58:52.44>文字列のRangeだけ渡して生成する
のがsubstrじゃなかったっけ?
(開始位置も渡すけど)
0650デフォルトの名無しさん
2011/07/23(土) 22:00:07.70結局ファイルの中身全部読み込んで、複製せずに終端記号だけ付け替えて使いまわせるよう分割するってのをC++でしたかった。
コンテナに入れたりini形式がどうこうなりはその次で。
>> 646
サンクス
>> 649
substrは中でコピーしちゃってるじゃん
0651デフォルトの名無しさん
2011/07/24(日) 02:41:17.18stringがどうこうより、mapがどうこうだからなぁ
自前でコンテナもどき作るしかないだろう
あるいは開始位置・終了位置を保持したクラスをmapしてもダメかね?
0652デフォルトの名無しさん
2011/07/24(日) 15:24:29.40にわかクン「switchって良いと思い込んでいるけど本当に良いの?」
ってんなら文章として通じるんだけどね。
0653デフォルトの名無しさん
2011/07/24(日) 15:59:50.470654デフォルトの名無しさん
2011/07/24(日) 16:05:24.66へ?
0655デフォルトの名無しさん
2011/07/24(日) 17:48:02.91Cの書式出力が便利で、大体次のようにやってます。
int len = _scprintf("%s", "hello");
char * p = new char[len+1];
sprintf(p, "%s", "hello");
delete [] p;
STLもしくはC++標準関数が使える環境で
これをもっとエレガントなやり方を教えてくださいませんでしょうか?
まことに勝手ですがふしてお願い申し上げます。
0656デフォルトの名無しさん
2011/07/24(日) 17:51:58.98free(p);
0657デフォルトの名無しさん
2011/07/24(日) 17:55:59.000658デフォルトの名無しさん
2011/07/24(日) 18:00:06.29この環境では
> Cの書式出力が便利
こう考える人を納得させるものがないので、boost::formatというのが作られた。
直球でいうとその環境でエレガントな方法は無い。
0659デフォルトの名無しさん
2011/07/24(日) 19:47:23.96ありがとうございます。
これで堂々とこの汚いやり方で行けます
0660デフォルトの名無しさん
2011/07/24(日) 22:05:48.90066187
2011/07/25(月) 00:04:51.15どのコンテナを使ったら幸せになれますか?
0662デフォルトの名無しさん
2011/07/25(月) 00:28:48.07while (*p != '\0') ++count[*p++];
0663デフォルトの名無しさん
2011/07/25(月) 00:33:14.400664デフォルトの名無しさん
2011/07/25(月) 09:54:50.35sdlとか?
0665デフォルトの名無しさん
2011/07/25(月) 13:20:35.95あるいは、最後が
にわかクン「別にだめじゃないのか」
でもおk
0666デフォルトの名無しさん
2011/07/25(月) 22:05:22.85そのクラスファイルをincludeすると「既に (class).obj で定義されています」とエラーになります。
どうすればいいでしょうか。
test.cppをincludeするとエラー
=== test.cpp ===
#include "test.h"
test::test(void)
{
}
test::~test(void)
{
}
=== test.h ===
#pragma once
class test
{
public:
test(void);
~test(void);
};
0667デフォルトの名無しさん
2011/07/25(月) 22:09:50.610668デフォルトの名無しさん
2011/07/25(月) 22:17:45.24どうすればいいのでしょうか?
0669デフォルトの名無しさん
2011/07/25(月) 22:18:57.86なんのためにヘッダにクラスを公開してんだよ
ヘッダをインクルードして好きなだけ使えばいい
0670デフォルトの名無しさん
2011/07/25(月) 22:29:42.41main.cpp→test.cpp→test.h というように読まれていくものかと思っていたのですが、
実際には test.h からincludeすると test.cpp も読まれるのでしょうか……?
test.cppの中の #include "test.h" は何のためにあるのでしょう?
0671デフォルトの名無しさん
2011/07/25(月) 22:32:19.98main.cppとtest.cppは別々にコンパイルされます
#include "test.h"しないと
testがなにを意味しているかコンパイラさんが分からないだろ
0672660
2011/07/25(月) 22:40:37.69レスありがとうございます。
MIDIってのはMIDIファイルのことじゃなくて
MIDI I/Oってことでした。バーチャルポート作ってそっからMIDI信号出力とかがやりたかったんです。
明記してなくてすみません。
まさにRtMidiの様な機能があればいいのですが、
RtMidiはMac OS Xでユニバーサルビルドができなくて...
0673デフォルトの名無しさん
2011/07/25(月) 22:52:09.98ありがとうございます。test.cppがいつどう呼ばれるのかだけがまだわかってません……
でも、おかげさまで何となくわかってきた気がします。
Cは(当方PHPをかじったことしかないのですが)includeを追うのではないんですね。
確かに、test.cpp単体でコンパイルする時のことを考えると、test::test って何だよって話ですよね。
0674デフォルトの名無しさん
2011/07/25(月) 23:03:35.67test.cpp をコンパイルする → test.obj ができる
main.obj と test.obj とそのほかもろもろ (printfとかscanfとかいろいろたくさん) をリンクする → .exe ができる
0675デフォルトの名無しさん
2011/07/25(月) 23:53:26.50(↑我ながら意味不明な文ですが、何となく理解したつもりです)
レス遅れてしまいすみません。恐らく理解できました。
本当にありがとうございます。感謝しています。
0676デフォルトの名無しさん
2011/07/26(火) 00:05:03.81#include "test.h"と書く代わりにtest.hの中身をそこに書いてるのと同じこと
0677デフォルトの名無しさん
2011/07/26(火) 00:17:07.74自分の中の勘違いも解け、スッキリできたと思います。本当にありがとうございます。
0678デフォルトの名無しさん
2011/07/26(火) 02:03:20.450679デフォルトの名無しさん
2011/07/26(火) 02:04:32.050680デフォルトの名無しさん
2011/07/26(火) 06:11:45.30どのように記述すれば良いでしょうか?
下記の様な書き方でしょうか?
memset(test,0,sizeof(*test));
0681デフォルトの名無しさん
2011/07/26(火) 08:22:32.000682デフォルトの名無しさん
2011/07/26(火) 08:24:48.11Cならまぁ、それでもいいけどC++だったらダメ。
0683デフォルトの名無しさん
2011/07/26(火) 10:34:12.85配列数なんて渡しても意味ないだろ。要素数を渡しておけ。
0685デフォルトの名無しさん
2011/07/26(火) 14:33:39.87vector<vector<int> > a(2, vector<int>(3));
とできますが、3次元配列の場合の書き方を教えてください
0686デフォルトの名無しさん
2011/07/26(火) 15:06:22.28応用利かない奴だな。
ほれ。
http://ideone.com/qixkT
0687デフォルトの名無しさん
2011/07/26(火) 15:17:20.17ありがとうございます
0688デフォルトの名無しさん
2011/07/27(水) 06:29:32.58//hoge.h
func1()
{static int i;}
func2()
{static int i;}
//hoge1.h
func1()
{static int j;}
//hoge2.h
func2()
{static int j;}
jは別物で処理されると思うのですが、iは同じ物として扱われてしまう?
0689デフォルトの名無しさん
2011/07/27(水) 07:48:00.450690デフォルトの名無しさん
2011/07/27(水) 09:50:51.700691デフォルトの名無しさん
2011/07/27(水) 09:59:00.94なるけど、なんかそこらへんの話と混同してそう。
>>688はローカル変数だし、.hだし。
0692デフォルトの名無しさん
2011/07/27(水) 10:06:27.970693デフォルトの名無しさん
2011/07/27(水) 11:18:21.040694デフォルトの名無しさん
2011/07/27(水) 11:27:57.600695デフォルトの名無しさん
2011/07/27(水) 11:44:03.37質問者の内容だと
hoge.c
------
#include <hoge.h>
------
hoge1.c
------
#include <hoge1.h>
#include <hoge2.h>
------
とかになったら意味が無くなるだろw
0696デフォルトの名無しさん
2011/07/27(水) 11:44:33.060697デフォルトの名無しさん
2011/07/28(木) 14:51:12.22クラスのインスタンスをデストラクタで解体した時に消えてくれます?
0698デフォルトの名無しさん
2011/07/28(木) 14:53:34.610699デフォルトの名無しさん
2011/07/28(木) 14:55:14.91メンバ関数もstaticなのか?
0700デフォルトの名無しさん
2011/07/28(木) 15:05:29.60回答ありがとうございます
0701デフォルトの名無しさん
2011/07/30(土) 01:14:22.64文字列をvector コンテナに代入するのに、このように書くのですが
error C2512: 'setVec::setVec' : クラス、構造体、共用体に既定のコンストラクターがありません。
こうなってしまします><何処が悪いのでしょうか?
#include <map>
#include <vector>
#include <algorithm>
std::string data = "abcdefg";
std::vector<char> vec;
struct setVec {
char ch_;
setVec(char& ch) : ch_(ch) {}
void operator()(char d_) const { vec.push_back(d_); }
};
int main()
{
std::for_each(data.begin(), data.end(), setVec() );
return 0;
}
0702デフォルトの名無しさん
2011/07/30(土) 01:31:39.35setVec(char& ch) : ch_(ch) {}
これ消せよ
0703デフォルトの名無しさん
2011/07/30(土) 01:36:06.66素直にこう書け
0704デフォルトの名無しさん
2011/07/30(土) 01:42:47.290705デフォルトの名無しさん
2011/07/30(土) 16:27:23.15thx ALL
0706デフォルトの名無しさん
2011/07/31(日) 22:58:02.88どっかで読んだ気がするんですが、クラス名が思い出せません。
環境はVC++です。
0707デフォルトの名無しさん
2011/07/31(日) 23:03:27.28ex.Boost.Serialize
CLI使っていいなら
http://msdn.microsoft.com/en-us/library/2f7k4746.aspx
0708デフォルトの名無しさん
2011/07/31(日) 23:04:19.850709デフォルトの名無しさん
2011/07/31(日) 23:41:48.13>>708
多分それです!これから読んできます。
ありがとうございますm(_ _)m
もう一個質問をお願いします。
Visioみたいに図形同士を線で結ぶようなモノを
実現するライブラリってありますか?
0710デフォルトの名無しさん
2011/08/01(月) 11:21:57.100711デフォルトの名無しさん
2011/08/01(月) 17:30:34.59timeSetEventのHPET版みたいな….linuxではできました.
時間計測だけならQueryPerformanceCounterでいいことはわかりました.
Win Vista以降のみでOKです.
0712デフォルトの名無しさん
2011/08/01(月) 18:51:05.27ありがとうございます。
マウスを使ってドラッグ&ドロップで図形を配置し、
クリックで図形同士を線で結ぶイメージでいました。
質問が悪くてすいません。
0713デフォルトの名無しさん
2011/08/01(月) 19:11:41.350714デフォルトの名無しさん
2011/08/02(火) 00:51:17.09具体的にはローカルでパスとファイル名が分かっている、ファイルを
アカウントとパスの分かっているftpに転送したい、と言った感じです。
しかし、検索しても転送自体全くしたことが無いので、どんな言葉で調べればいいのかもわかりません。
何かこういう言葉で調べろとか、このサイトを見ろとかありましたら教えてもらえないでしょうか。
0715デフォルトの名無しさん
2011/08/02(火) 04:20:48.69ありがとうございます。
Qtは4をインストールして英文ドキュメント見てますが、
いまだにサンプル以上を使えてないorz
0716デフォルトの名無しさん
2011/08/02(火) 11:39:05.02GNUのソース開示の規約があるためプロパーがソースを組み直せと言います。
他に可変引数を処理できるような便利な関数はないでしょうか。
0717デフォルトの名無しさん
2011/08/02(火) 11:41:55.290718デフォルトの名無しさん
2011/08/02(火) 12:11:18.450719デフォルトの名無しさん
2011/08/02(火) 15:20:37.82wininet
0720デフォルトの名無しさん
2011/08/02(火) 18:16:22.14c;ass B;
classA{
list<B*> b;
void Attach(B*)
void Detach(B*)
}
classB{
list<A*> a;
void Attach(A*)
void Detach(A*)
}
このようにしようとすると
error C2027: 認識できない型 'B' が使われています。
error C2227: '->(関数名)' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
となってしまいます。
コレを解決するにはどうしたらよいでしょうか?
0721デフォルトの名無しさん
2011/08/02(火) 18:21:44.080722デフォルトの名無しさん
2011/08/02(火) 18:28:37.46ポインタのリストを持つだけなら前方宣言だけでいける
おまえのコードがクソすぎて怒られる原因はわからん
0723デフォルトの名無しさん
2011/08/02(火) 18:36:35.17それだけだと問題が多すぎて絞り込めないw
0724デフォルトの名無しさん
2011/08/02(火) 18:48:02.32とりあえずセミコロンがずいぶん足りないようだが大丈夫か?
0725720
2011/08/02(火) 18:58:22.62Aのインスタンスが削除されたときに確実にBのDetachを実行して
Bがこの後追加する予定の処理で不正なAのポインタに触らないようにしたいと思っています
classA{
list<B*> b;
void Attach(B*pb){ b.push_back(pb);};
void Detach(B*pb){ b.remove(pb);};
~A(){
while(b.empty() ){
*(b.begine())->Detach(this); //ここでつまる
b.pop_front();
}
};
classB{
list<A*> a;
void Attach(A*pa){
a.push_back(pa);
pa->Attach(this);
}
void Detach(A*pa){
a.remove(pa);
pa->Detach(this);
}
};
0726デフォルトの名無しさん
2011/08/02(火) 19:09:53.250727デフォルトの名無しさん
2011/08/02(火) 19:22:15.23ありがとう!
0728デフォルトの名無しさん
2011/08/04(木) 19:51:57.16Releaseモードでビルドすると、破壊されていない様に見える変数へのアクセス違反で
異常終了してしまいます。
こういう場合、原因は何で、どういった確認を行うべきなのでしょうか・・?
>環境は、WinXPpro(32bit) VC++2008EE Debug/Releaseともマルチバイト文字利用です
0729デフォルトの名無しさん
2011/08/04(木) 19:59:15.37まず疑うべきは、
・未初期化変数が無いか?
・マクロ分岐で悪いことをしていないか?
例えばassert(処理) とか書いちゃって
(処理)がreleaseだけ削られている、とか
・配列等範囲外メモリ不正アクセスはないか?
運よく(悪く?)debugではうまく動いているように見えていた
このあたりかなぁ
0730728
2011/08/04(木) 20:21:01.68ありがとうございます。
assertも試しに数箇所使ってましたが、未初期化変数が山の様にあります;
まずはそっちからですね・・それでも解決しなかったらメモリ不正アクセスを絞り込みながら調べてみます、
ご助言ありがとうございました、感謝っ
0731デフォルトの名無しさん
2011/08/06(土) 17:25:41.13文法的に正しいのでしょうか?
ネットで探してもあまり例が出てないので、間違ってる気がするのですが?
0732デフォルトの名無しさん
2011/08/06(土) 17:26:26.200733デフォルトの名無しさん
2011/08/06(土) 17:43:18.60thx です
std::map はfor_each できない仕様ということですね。
boost やloki でも同じなんでしょうか?
0734デフォルトの名無しさん
2011/08/06(土) 17:54:31.550735デフォルトの名無しさん
2011/08/06(土) 19:25:45.100736デフォルトの名無しさん
2011/08/06(土) 20:48:14.82void operator()(map<char,double>::value_type pair) const
{ cout<< pair.first << ':' << pair.second << endl;}
};
これを、ジェネリックtemplate ではどのように書いたらいいですか。
0737デフォルトの名無しさん
2011/08/06(土) 22:05:37.57struct Stdout {
void operator()(typename map<K, V>::value_type& pair) const
{ cout<< pair.first << ':' << pair.second << endl;}
};
0738デフォルトの名無しさん
2011/08/06(土) 22:30:28.200739デフォルトの名無しさん
2011/08/10(水) 02:47:53.63もう10年以上たってるだろ
0740デフォルトの名無しさん
2011/08/10(水) 02:57:43.490741デフォルトの名無しさん
2011/08/11(木) 22:50:25.60void rev_print(char *s){
if (*(s + 1))
rev_print(s + 1);
putchar(*s);
}
int main(void){
char s[] = "123456";
rev_print(s);
return 0;
}
こんな風に逆順に出力したい場合、再帰のループは何回まで出来るものなのでしょうか?
0742デフォルトの名無しさん
2011/08/11(木) 22:59:13.760743デフォルトの名無しさん
2011/08/11(木) 23:13:18.030744デフォルトの名無しさん
2011/08/12(金) 01:02:00.93有難うございます。
10^5バイト程度のデータ処理をしようと考えてました。
0745デフォルトの名無しさん
2011/08/12(金) 19:10:44.83C でmalloc C++ ではnew でヒープメモリを確保しますが
これらを使う必要性としては、自分の解釈だと可変長の配列を生成する以外思いつきません
malloc newは、他にどのような用途がある?
0746デフォルトの名無しさん
2011/08/12(金) 19:14:25.140747デフォルトの名無しさん
2011/08/12(金) 19:15:31.22スタックメモリ領域のサイズはそんなに大きくないから、
ヒープ使うしかない。
例えばVCならデフォルトで1メガしかない
0748デフォルトの名無しさん
2011/08/12(金) 19:52:20.81スッキリしましたthx
0749デフォルトの名無しさん
2011/08/12(金) 20:50:21.040750デフォルトの名無しさん
2011/08/12(金) 21:48:23.87(元のバイナリデータによっては不正なBase64が出力される、
Base64からバイナリに戻せない等)
なので、C/C++で動くBase64エンコーダ/デコーダを探しているのですが、
何処のを使えばいいでしょうか
0751デフォルトの名無しさん
2011/08/12(金) 21:49:47.070752750
2011/08/12(金) 21:58:29.970753デフォルトの名無しさん
2011/08/12(金) 23:20:50.43こちらを参考にソースを、というか
#include "wininet.h"
#pragma comment(lib,"wininet.lib")
の2行を書いた所、wininet.hで大量にエラーが出ました。
一番最初のエラーが「typedef LPVOID HINTERNET;」行に
error C2146: 構文エラー : ';' が、識別子 'HINTERNET' の前に必要です。
とのことだったので、LPVOIDが定義されていないのだと思い、LPVOIDを調べたところ、
WinDef.hに定義されているようなので
wininet宣言の前に、WinDef宣言を追加しました。
すると今度はwininet.hの「PCONTEXT ContextRecord;」で
error C2146: 構文エラー : ';' が、識別子 'ContextRecord' の前に必要です。
が出ました。
また、PCONTEXTが宣言されているヘッダを定義すれば良いのかと思ったのですが、
PCONTEXTが「wininet.h」内にtypedef CONTEXT *PCONTEXT;と宣言されており、
この部分でエラーになる理由が分かりません。
その前のWinDef.h宣言含め、どのように修正すればいいでしょうか。
0754デフォルトの名無しさん
2011/08/12(金) 23:24:30.37#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet.lib")
0755デフォルトの名無しさん
2011/08/13(土) 00:22:35.00で、後学のためにPCONTEXTがエラーになった原因を教えていただけないでしょうか。
今回はwindows.hの中にPCONTEXTの定義か、もしくはPCONTEXTの定義してあるヘッダーが宣言されている、ということなのでしょうが、
そうなると、「wininet.h」内のtypedef CONTEXT *PCONTEXT;の意味が分かりません。
むしろ二重定義になったりしないのでしょうか。
0756デフォルトの名無しさん
2011/08/13(土) 00:47:06.54winapiみたいな歴史的遺物の塊関係のプログラミングなら、
〜へっだにあるの定義が必要でコンパイルエラーはよくある話。
ちなみにtypedef は別名をつける言語構文
例えば typedef int* int_ptr;
とかすると、
int* p;
int_ptr p;
は同じ意味になる
0757デフォルトの名無しさん
2011/08/13(土) 01:22:54.83#ifdef _X86_
...
typedef CONTEXT *PCONTEXT;
// begin_ntminiport
#endif //_X86_
0758750
2011/08/15(月) 22:30:54.89base64書き込みのバグはcharではなくunsigned charで処理すパッチを当てて直しました。
で、読み込みの処理だけ自分で作りました。
文字数が4の倍数でない場合の処理に特に苦心しましたが、(最後に"="とか"=="のついているbase64)
文字数が4の倍数で無い場合だけ、最後に特別な処理を行わせるようにして自己解決しました
0759デフォルトの名無しさん
2011/08/17(水) 17:01:45.21struct A{int partial_static_x;};
A a0,a1,a2,a3;
a0.partial_static_x=a1.partial_static_x=0;
a2.partial_static_x=a3.partial_static_x=1;
a0.partial_static_x = 3;
assert(a1.partial_static_x==3&&a2.partial_static_x==1);//true
0760デフォルトの名無しさん
2011/08/17(水) 22:51:15.23もっと基礎からやり直せ
0761デフォルトの名無しさん
2011/08/18(木) 21:37:32.27int型の変数 を「整数」を使ってビット判定しているのですが、
int temp = 2100010000;
// 10億の位の数字で処理を振り分ける
if (temp & 2000000000) { ... }
else if (temp & 1000000000) { ... }
else if (temp & 0000000000) { ... } // こうしたいけれど、無理な訳で・・。
10億で割った余りを判定するか、最後をif 10億未満と書けば良い話なのでしょうけれど、
同じビット判定で統一したりってできないものでしょうか・・?
0762デフォルトの名無しさん
2011/08/18(木) 21:48:27.33ビットの勉強するといいよ
if(2000000000 & 2000) printf("It can't be. ;-)");
0763デフォルトの名無しさん
2011/08/18(木) 21:49:13.11出来ない。出来ない理由を理解したいなら、中学校の数学からやり直せ。
0764デフォルトの名無しさん
2011/08/18(木) 22:00:35.68ありがとうございます; 1110111001101011001010000000000と、11111010000でtrueが返るんですね・・。
2の倍数の整数以外のビット判定は厳禁なのでしょうか。 何にしても勉強しなおしてきます。
>>763
何か統一性を保った別の記述方法が有れば・・と思いましたが、そんなものは無い というより上の問題で無意味なのですね。
ご助言ありがとうございます。早めに知れて良かったです。
0765デフォルトの名無しさん
2011/08/19(金) 02:31:30.830000000000000000000011111010000
------------------------------- [AND]
0000000000000000000010000000000 ->true
0766デフォルトの名無しさん
2011/08/19(金) 05:05:45.99else if (temp >= 1000000000) { ... }
else if (temp >= 0 ) { ... }
わかりやすい
0767デフォルトの名無しさん
2011/08/19(金) 10:55:14.44case 2:
{...;}
break;
case 1:
{...;}
break;
case 0:
{...;}
default:
break;
}
判りやすい。
if (temp >= 2000000000) { ... }
else if (temp >= 1000000000) { ... }
else if (temp >= 0 ) { ... }
0768デフォルトの名無しさん
2011/08/22(月) 00:42:03.85どうしても解決しなきゃいけない話じゃないので、面白くなかったら流してくれて構わんけど、
面白い答え持ってる人がいたらレスください。
-FLT_MIN < b && b < FLT_MAXを満たすdouble型の値bが与えられたとき、
float型の値aとcで、bを内包するギリギリ狭い範囲を作りたい。
具体的には、次の3条件を満たすfloat型の値a, cを求めたい。
(1) a <= b && b <= c を満たすこと
(2) いかなるfloat型の値tについても a < t && t <= b を満たさないこと
(3) いかなるfloat型の値tについても b <= t && t < c を満たさないこと
できれば、標準ライブラリだけで、処理系非依存にしたい。
floatとdoubleをIEEE 754の単精度と倍精度に仮定できるのであれば、
ビット演算で仮数部を取り出したらできそうだと思ったが、もっとよい方法はないものか。
あるいは、どうせIEEE 754に仮定するんだったら、さらに現実的な仮定を使ってより簡単な方法はないものか。
0769デフォルトの名無しさん
2011/08/22(月) 01:02:31.22言いたいことが俺に伝わっているか微妙に自信がないけどこういうこと?
ttp://codepad.org/VfoFbiql
0770デフォルトの名無しさん
2011/08/22(月) 01:25:08.550771デフォルトの名無しさん
2011/08/22(月) 01:27:46.91c = nextafterf(b, FLT_MAX)
でいいのか自信ない
0772デフォルトの名無しさん
2011/08/22(月) 01:40:47.530773デフォルトの名無しさん
2011/08/22(月) 02:07:11.64if (f > b) { c = f; a = nextafterf(b, -INFINITY) }
else { a = f; c = nextafterf(b, INFINITY) }
にしないとまずいのか
0774デフォルトの名無しさん
2011/08/22(月) 18:38:29.12これまで蓄積されてきたノウハウや、公開されているソースは旧規格のものだから、そういうのを使う場合、新規格入門書より、旧規格の入門書を読んだほうがいいんですか?
0775デフォルトの名無しさん
2011/08/22(月) 21:30:53.470776768
2011/08/23(火) 01:03:52.840777デフォルトの名無しさん
2011/08/23(火) 21:35:18.21それじゃあ今出てる入門書買います。どうもありがとうございました。
0778デフォルトの名無しさん
2011/08/24(水) 01:37:00.960779デフォルトの名無しさん
2011/08/24(水) 01:45:12.790780デフォルトの名無しさん
2011/08/24(水) 01:51:32.64C++でのprivate関数みたいなもの
C++ではインスタンスを生成しなくても呼び出せる関数って事
0781デフォルトの名無しさん
2011/08/24(水) 03:34:11.78逆に何も付いていないと外部結合になる
メンバ関数のstaticだと>>780のインスタンスを生成しなくても呼び出せる関数
0782365
2011/08/24(水) 12:27:55.41普通にfor文でいいと思うのですが、for_eachのほうがC++流なのでしょうか?
0783デフォルトの名無しさん
2011/08/24(水) 16:11:10.99BOOST_FOREACHはもう少し楽だぞ
0784デフォルトの名無しさん
2011/08/24(水) 18:03:01.19イテレーターを定義して使わなくて良いなどのこともあるけど、
for_each などが真に活きてくるのは、C++0x になってからよ。
0785デフォルトの名無しさん
2011/08/24(水) 21:45:05.810786デフォルトの名無しさん
2011/08/25(木) 00:58:20.52else if(boguDataObj.fukaS1[boguNo]==2)soubi_Kattack+=boguDataObj.fukaV1[boguNo];//近距離攻撃
else if(boguDataObj.fukaS1[boguNo]==3)tikara_p+=boguDataObj.fukaV1[boguNo]; //力
else if(boguDataObj.fukaS1[boguNo]==4)sutamina_p+=boguDataObj.fukaV1[boguNo]; //スタミナ
else if(boguDataObj.fukaS1[boguNo]==5)seisin_p+=boguDataObj.fukaV1[boguNo]; //精神
else if(boguDataObj.fukaS1[boguNo]==6)hanno_p+=boguDataObj.fukaV1[boguNo]; //反応
else if(boguDataObj.fukaS1[boguNo]==7)maryoku_p+=boguDataObj.fukaV1[boguNo]; //知恵
if(boguDataObj.fukaS2[boguNo]==1)soubi_Eattack+=boguDataObj.fukaV2[boguNo];//遠距離攻撃
else if(boguDataObj.fukaS2[boguNo]==2)soubi_Kattack+=boguDataObj.fukaV2[boguNo];//近距離攻撃
else if(boguDataObj.fukaS2[boguNo]==3)tikara_p+=boguDataObj.fukaV2[boguNo]; //力
else if(boguDataObj.fukaS2[boguNo]==4)sutamina_p+=boguDataObj.fukaV2[boguNo]; //スタミナ
else if(boguDataObj.fukaS2[boguNo]==5)seisin_p+=boguDataObj.fukaV2[boguNo]; //精神
else if(boguDataObj.fukaS2[boguNo]==6)hanno_p+=boguDataObj.fukaV2[boguNo]; //反応
else if(boguDataObj.fukaS2[boguNo]==7)maryoku_p+=boguDataObj.fukaV2[boguNo]; //知恵
↑のコードを変数名を変えずにスマートにまとめるにはどうしたらいいでしょうか。
0787デフォルトの名無しさん
2011/08/25(木) 01:48:38.69switch(boguDataObj.fukaS1[boguNo]) {
case 1: soubi_Kattack += n; break;
以下繰り返し
0788デフォルトの名無しさん
2011/08/25(木) 01:50:55.940791デフォルトの名無しさん
2011/08/25(木) 02:07:32.82今のあなたには switch の方がいいんだろうけど
こんなやりかたもある
int dummy; // 0 番は効果無しみたいな意味があるかも知れないので保険として用意
int *param_ptr[8]={&dummy, &soubi_Eattack, &soubi_Kattack, &tikara_p, ..., &maryoku_p}; // 添え字 7 以降にアクセスするとヤバイ
*param_ptr[boguDataObj.fukaS1[boguNo]]+=boguDataObj.fukaV1[boguNo];
*param_ptr[boguDataObj.fukaS2[boguNo]]+=boguDataObj.fukaV2[boguNo];
0792デフォルトの名無しさん
2011/08/25(木) 02:19:17.37実行と終了ずっと繰り返したがぜんぜん消費メモリ増えない
0794デフォルトの名無しさん
2011/08/25(木) 02:26:08.84今時のOSなら解放してくれる
0795デフォルトの名無しさん
2011/08/25(木) 02:29:29.32拡張する予定なら 関数化+switch使用 を薦める
0796デフォルトの名無しさん
2011/08/25(木) 02:33:24.520797デフォルトの名無しさん
2011/08/25(木) 02:43:31.99switch(ptn){
case 1: return &soubi_Eattack;
以下繰り返し
}
return &gomi;
}
:
gomi=0;
*addr(boguDataObj.fukaS1[boguNo]) += boguDataObj.fukaV1[boguNo];
*addr(boguDataObj.fukaS2[boguNo]) += boguDataObj.fukaV2[boguNo];
0798デフォルトの名無しさん
2011/08/25(木) 02:59:34.91処理重くならないの?
0799デフォルトの名無しさん
2011/08/25(木) 03:06:28.88書き方による
GetMessage で待つようにしてれば問題ないレベル
0801デフォルトの名無しさん
2011/08/25(木) 12:54:07.750802デフォルトの名無しさん
2011/08/25(木) 13:26:13.120803デフォルトの名無しさん
2011/08/25(木) 14:15:16.16DOSの時代だと、バッチファイルで受け取って分岐とかできてた。
unixとかでもシェルで同じような使い方できるんじゃないの。
0804デフォルトの名無しさん
2011/08/25(木) 14:48:53.640805デフォルトの名無しさん
2011/08/26(金) 08:02:27.36コマンドは全て戻り値返してるだろ。
適当に答えるなよ。
0807デフォルトの名無しさん
2011/08/26(金) 08:55:34.970808デフォルトの名無しさん
2011/08/26(金) 09:08:35.90お大事に。
0809デフォルトの名無しさん
2011/08/26(金) 22:54:52.580810デフォルトの名無しさん
2011/08/26(金) 22:57:58.280811デフォルトの名無しさん
2011/08/27(土) 09:09:01.530812デフォルトの名無しさん
2011/08/27(土) 09:32:42.640813デフォルトの名無しさん
2011/08/27(土) 17:48:59.520814デフォルトの名無しさん
2011/08/27(土) 21:02:23.00閉じるボタン押されたときの処理ってどうなされているの?
0815デフォルトの名無しさん
2011/08/28(日) 01:36:18.590816デフォルトの名無しさん
2011/08/28(日) 12:23:19.48共用体と全然違うところに、1ビットで連続する変数の間隔が12バイト開いてた。
const参照って通常の参照に制限をかけるものじゃなくて、中身をどこかにコピーしてるもんなの?
それなら値渡しとコストが変わらない冗長な記述なんじゃないのって思ったんだけど、何か違う?
0817デフォルトの名無しさん
2011/08/28(日) 12:27:00.04アドレスを見ようとするから、わざわざ用意してる可能性あり。
0818デフォルトの名無しさん
2011/08/28(日) 12:42:05.09struct X {
int y:1;
int const & get() {return y;}
}
とかだとgetの返却値はyをintにキャストした一時変数の参照だぞ。
0819デフォルトの名無しさん
2011/08/28(日) 13:36:10.23Microsoft Visual Studio 2005
Version 8.0.50727.762 (SP.050727-7600)
コンパイラ古すぎですかね・・・
>>818
こんな感じ
http://codepad.org/ktmIMdXZ
0820デフォルトの名無しさん
2011/08/28(日) 16:30:11.82そのソースだと>>818がいってるのと同じこと。
void foo(const int& a){ cout << &a << endl; }
foo(u.test.x); // ビットフィールドからintに暗黙変換されてその結果の一時変数が関数に渡される。
0821820
2011/08/28(日) 16:51:43.49ttp://codepad.org/82YwrZx5
0822デフォルトの名無しさん
2011/08/28(日) 17:31:02.61分かりやすい解説ありがとうございました。
0823デフォルトの名無しさん
2011/08/28(日) 20:04:22.75へぇ。これはちょっと驚いた
0824デフォルトの名無しさん
2011/08/28(日) 23:46:19.720825デフォルトの名無しさん
2011/08/29(月) 01:16:54.100826デフォルトの名無しさん
2011/08/30(火) 20:18:01.10switch(a)
{
case 1:
{
文1;
文2;
}
break;
case 2:
{
文1;
文2;
}
break;
}
0827デフォルトの名無しさん
2011/08/30(火) 20:24:39.60えーよー
0828デフォルトの名無しさん
2011/08/30(火) 20:55:20.42ありがとうございます。
やってるの見たことなかったので何か不安だったので質問しました。
0829デフォルトの名無しさん
2011/08/30(火) 21:17:02.890830デフォルトの名無しさん
2011/08/30(火) 23:14:28.74caseは単なるラベルなのでブロック構造とは無関係。
こんなのだって許される。
switch(a)
{
{
case 1:
文1;
文2;
break;
case 2:
;
}
{
文1;
文2;
}
break;
}
0831デフォルトの名無しさん
2011/08/30(火) 23:37:54.49こういう場合って{とcase 1:の間で変数宣言してもちゃんと処理されるの?そのとき代入も一緒にしてもいいのかな?
0832デフォルトの名無しさん
2011/08/30(火) 23:53:52.81代入は飛ばされる
caseのところへgotoしてるのと一緒
0833デフォルトの名無しさん
2011/08/30(火) 23:54:16.93世界が変わった気がした
0834デフォルトの名無しさん
2011/08/30(火) 23:59:09.090836デフォルトの名無しさん
2011/09/01(木) 03:03:18.04これは、「C++ではmain関数で戻り値を明示しなかった場合は0になる」という理解で合ってますか?
0837デフォルトの名無しさん
2011/09/01(木) 05:21:07.950838デフォルトの名無しさん
2011/09/01(木) 11:24:18.01warning C4508: がコンパイルすると出るだろ?
0839デフォルトの名無しさん
2011/09/01(木) 11:31:08.13出ないよ
0840デフォルトの名無しさん
2011/09/01(木) 11:33:34.61int main(){}
をVC++2010でビルドしたところ、特に警告は出ませんでした。
環境によっては警告が出ることもあるのでしょうか?
そうだとすれば、やはり戻り値を明示した方が良いのでしょうか?
0841デフォルトの名無しさん
2011/09/01(木) 11:43:59.30VC6でした。
>>840
しなくていいよ.ボロコンパイラがwarnning出そうが知ったこっちゃない
0842デフォルトの名無しさん
2011/09/01(木) 14:30:05.88ISO/IEC 14882:1998でも↓このように定義されている。警告がでるうんこコンパイラなんて見たことがない。
もしかしてcfront? www
3.6.1 p5
A return statement in main has the effect of leaving the main function(destroying any
object with automatic storage duration) and calling exit with return value as the
argument. If control reaches the end of main without encountering a return statement,
the effect of executing
return 0;
0843デフォルトの名無しさん
2011/09/01(木) 16:55:27.440以外の値を返したいなら書くしかない。
ただそれだけ。
0844デフォルトの名無しさん
2011/09/02(金) 06:47:53.710845デフォルトの名無しさん
2011/09/02(金) 10:28:46.13何かご不満でも?
0846ャfフォルトの名末ウしさん
2011/09/02(金) 11:42:16.06xy平面上に原点Oおよびそれと異なる点P(x,y)があるとき、x軸と半直線OPのなす角を求めたりするときに
atan2の引数の順番が逆になっていれば、点Pの座標をそのまま使ってatan2(x,y)と出来ると思うんですが
0847デフォルトの名無しさん
2011/09/02(金) 12:06:36.790848デフォルトの名無しさん
2011/09/02(金) 12:14:25.93そうじゃなくて、そもそものatan2が何故ああなのかが気になる
俺よりはるかに頭の良い人が作った言語なのに、理由もなく逆にしてるってのは多分ないと思うので
0849デフォルトの名無しさん
2011/09/02(金) 12:22:43.930850デフォルトの名無しさん
2011/09/02(金) 12:30:26.650851デフォルトの名無しさん
2011/09/02(金) 12:46:27.880852デフォルトの名無しさん
2011/09/02(金) 13:03:17.68それぐらいの理由ならわざわざatan2を用意する必要も無いような……
と思ったら、atanとatan2では値域が違うんですね
(atanは数学的な逆正接関数と同じく-π/2〜π/2、atan2はx, yの符号に応じて-π〜πの値をとる)
これには何か意味があるんでしょうか?
>>846のような使い方では引数の順番が合わないので違うと思いますが……
0853デフォルトの名無しさん
2011/09/02(金) 13:09:35.830854デフォルトの名無しさん
2011/09/02(金) 13:13:39.91バカは考えるな
0855デフォルトの名無しさん
2011/09/02(金) 13:14:03.43学校の勉強くらいしろよ
0856デフォルトの名無しさん
2011/09/02(金) 13:18:41.04そのような理由であれば、引数の順番については納得出来ます。
それでは、値域が-π〜πであるということにも何か理由があるのでしょうか?
>>854-855に関しては特にコメントはございません。
0857デフォルトの名無しさん
2011/09/02(金) 13:20:33.810858デフォルトの名無しさん
2011/09/02(金) 13:26:51.650859デフォルトの名無しさん
2011/09/02(金) 13:51:22.90直交座標→極座標
0860デフォルトの名無しさん
2011/09/02(金) 14:19:19.81846のような感じで、極座標における偏角を求めるのに使うということですよね?
その用途であればやはり変数の順番が逆の方が使いやすいのでは……
と堂々巡りになってしまうので根本的に考え直してみたのですが、
C言語においては、「直交座標をそのまま入れて偏角が出たら楽じゃん」という安直な考え方よりも、
「逆正接関数による偏角の求め方を知っている人からすると、atan(y/x)とatan2(y,x)でyとxの順番が違うとかえって混乱する」という考え方を採用している、
というだけなのでしょうか?
(実際、前者の考え方によってatan2を定義したと思われる言語もあるようです)
だとすれば、そもそもの疑問の持ち方がおかしかったですね……
それにもかかわらず答えていただきありがとうございました。
0861デフォルトの名無しさん
2011/09/02(金) 15:00:55.05だからx, yの順に並ぶほうがいいなんてことを言う奴はアホ
0862デフォルトの名無しさん
2011/09/02(金) 17:41:55.930863デフォルトの名無しさん
2011/09/02(金) 18:23:04.80自然数は順序数じゃん
なら順序数の定義にふくまれる関係<を優劣とすれば>>861の一行目の否定が証明できる
0864デフォルトの名無しさん
2011/09/02(金) 18:26:00.71不合格
0865デフォルトの名無しさん
2011/09/02(金) 18:47:03.370866デフォルトの名無しさん
2011/09/03(土) 23:15:51.870867デフォルトの名無しさん
2011/09/03(土) 23:50:10.75優劣がないならわざわざy, xの順にする必要ないよね
0868デフォルトの名無しさん
2011/09/03(土) 23:56:02.830869デフォルトの名無しさん
2011/09/03(土) 23:57:50.210870デフォルトの名無しさん
2011/09/04(日) 06:06:12.73yが先なことにいちいち違和感もってたらやってけないだろ
0871デフォルトの名無しさん
2011/09/04(日) 11:12:09.620872デフォルトの名無しさん
2011/09/04(日) 11:42:04.520873デフォルトの名無しさん
2011/09/04(日) 11:50:15.24何言ってんだこいつ
0874デフォルトの名無しさん
2011/09/04(日) 12:38:27.29fseekで50バイト戻る
そこをEOFにしたい
結果としては50バイトのファイルができあがる
というようなことしたいんですが、
一旦100バイト書きこむとfseekで書きこみ位置戻しても関係無いんですね、
上記のようなことは可能ですか?
新しくファイル作リ直すしかないんでしょうか?
0875デフォルトの名無しさん
2011/09/04(日) 12:45:03.84ftruncate()が使えるかもしれませんが、標準関数だけなら作り直す以外ありません。
0876デフォルトの名無しさん
2011/09/04(日) 12:51:56.50回答ありがとうございます。
素直に作りなおすことにします
0877デフォルトの名無しさん
2011/09/04(日) 12:53:21.120878デフォルトの名無しさん
2011/09/04(日) 17:17:48.45普通は、それを「作り直す」という。
0879デフォルトの名無しさん
2011/09/04(日) 17:21:41.980880デフォルトの名無しさん
2011/09/04(日) 17:23:35.810881デフォルトの名無しさん
2011/09/04(日) 17:24:54.29ハァ?
0883デフォルトの名無しさん
2011/09/04(日) 17:44:24.830884デフォルトの名無しさん
2011/09/04(日) 18:05:43.12その場所で0バイトの書込みをするとtruncateしてくれるかも。
環境依存で良ければ試してみると良い。
0885デフォルトの名無しさん
2011/09/04(日) 19:06:08.03宜しくお願いします。
0886デフォルトの名無しさん
2011/09/04(日) 19:09:41.910887デフォルトの名無しさん
2011/09/04(日) 19:18:00.99↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で実践的な大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
神の誕生
0888デフォルトの名無しさん
2011/09/04(日) 20:56:36.43糞本ばかりあげやがって
0889デフォルトの名無しさん
2011/09/04(日) 20:57:11.740890デフォルトの名無しさん
2011/09/04(日) 21:00:13.61他人が分かりやすいからといって、自分が分かりやすいとは限らない
本の語り口調が肌に合わないとか色々あるしな
0891デフォルトの名無しさん
2011/09/04(日) 21:09:44.03大学のサイト見れ
0892デフォルトの名無しさん
2011/09/04(日) 23:22:15.330893デフォルトの名無しさん
2011/09/04(日) 23:25:52.160894デフォルトの名無しさん
2011/09/04(日) 23:39:53.84ありがと、了解です。
0895デフォルトの名無しさん
2011/09/05(月) 00:11:25.21pgr
0896デフォルトの名無しさん
2011/09/05(月) 00:34:33.690897デフォルトの名無しさん
2011/09/05(月) 01:37:58.51csvファイルの中身が
1201011099,名無し 太郎,ななし たろう,03-1234-5678
1201011100,名無し 花子,ななし はなこ,06-1234-5678
とあるんですが
fscanf(ReadFp2, "%d, %[^,]s", &i, &str);
でループさせたとき2回目のループでエラーが出るので、フォーマット指定子で%[^,\n]sと%[^,\r\n]としても
エラーで読み込むことができませんでした
番号と名前だけ変数に取るにはどうすればいいですか?
0898デフォルトの名無しさん
2011/09/05(月) 01:44:08.33こんな書き方あったっけ?
0899デフォルトの名無しさん
2011/09/05(月) 01:45:52.10って"ふりがな"と"電話番号"を (2回目の) &i, &str に格納しようとしているからでそ?
> 番号と名前だけ変数に取る
まず fgets() とかで1行読んだものを sscanf()で取り出す、とか?
0900デフォルトの名無しさん
2011/09/05(月) 01:52:55.05ウィキペディアに解説があったよw
0901デフォルトの名無しさん
2011/09/05(月) 03:49:56.86ありがとうございます
それでできました。
0902デフォルトの名無しさん
2011/09/05(月) 08:27:47.27つまり、"%[^,]"でいい。
0903デフォルトの名無しさん
2011/09/05(月) 22:24:40.98foo(Point &point)
の違いを教えて下さい。
Point p(0.0, 2.0);
foo( p );
と上の関数だけしか定義してないときに,foo( p )を渡したら,
no matching function for callってコンパイラに怒られました。
foo( Point(0.0, 2.0) );
とコンストラクタで一時オブジェクトを渡すと通りました。
2つの違いをどなたか御教授下さいませ。
0904デフォルトの名無しさん
2011/09/05(月) 22:54:36.19落ち着いてもう一度試してみたら?
0905デフォルトの名無しさん
2011/09/05(月) 23:17:27.25普通の変数はどっちでも束縛できるのでどっちを呼べばいいんだよって文句言われる
0906デフォルトの名無しさん
2011/09/05(月) 23:28:40.210907デフォルトの名無しさん
2011/09/06(火) 00:44:49.38落ち着いて、よく見直したらpの型(position)を間違えてました。もう一回ためしたら動きました。
ごめんなちゃい。
0908デフォルトの名無しさん
2011/09/07(水) 00:57:25.53今、
try {
...
throw Exception(...);
} catch (Exception& ex) {
...
};
のようなコードがあるとき、例外オブジェクトはどこに作られるのでしょうか。
普通に考えればtry節の中は、
Exception ex;
...
throw ex;
と同じ(テンポラリオブジェクトにおける最適化はこの際おいておく)ですから、
exはスタック上に作られることになると思います。
それでも、その外側のスコープで&を捕まえられると言うことは、throw の引数は、
暗黙のうちにどこかにコピーされるものと考えられますが、それでよろしいでしょうか。
書籍は「投げられる」とばかり書かれていて要領を得ません。
それで良い場合、作られる場所がスタックやヒープ状では問題が起こりそうです。
グローバル領域ですとcatchブロックをさかのぼっている最中に発生した例外で問題が起こりそうです。
そこから推察するに、システムが予めスレッドローカルなメモリを確保していて
そのメモリ内にコピーが作成されるように思われます。またそのメモリは2重例外で問題が起きないよう、
なんらかの管理が行われているものと想像できますが、その認識でよろしいでしょうか?
また、これらの動作は、(コンパイラの)実装依存なのでしょうか。
こういった疑問を検索できる文書へのポインタがあれば併せて教えていただけるとありがたいです。
0909デフォルトの名無しさん
2011/09/07(水) 01:36:54.39例外はコピーが作られる
0910デフォルトの名無しさん
2011/09/07(水) 17:34:48.510911デフォルトの名無しさん
2011/09/07(水) 23:33:43.240912デフォルトの名無しさん
2011/09/07(水) 23:47:50.21cが人間で、c++は触手やら色々の生えたパワードスーツ
基本、cとしても使えるけど、拡張部分使うと強力になる
が、時々触手が言う事を聞かなくなる
0913デフォルトの名無しさん
2011/09/07(水) 23:50:53.89自分で書くならCよりC++
0914デフォルトの名無しさん
2011/09/08(木) 14:09:33.800915デフォルトの名無しさん
2011/09/08(木) 15:04:19.190916デフォルトの名無しさん
2011/09/08(木) 15:11:04.290917デフォルトの名無しさん
2011/09/08(木) 15:11:06.17C++でブロックをやたらメンバ関数にする人がいるんだけど、実際どうなの?
確かに全体の流れは読みやすくなるけど、1度しか呼び出さない、
しかもメンバ変数を弄くり回してるようなルーチンを関数にするのって、危なくて気持ち悪いよね。
ヘッダの行数も凄いことになってたけど、共同作業じゃああいうのが喜ばれるのかな。
0918デフォルトの名無しさん
2011/09/08(木) 15:20:46.23不要な変数に触らないで済むし、エディタの折りたたみ機能を使わなくてもコードが見やすい
0919デフォルトの名無しさん
2011/09/08(木) 16:05:53.00それオブジェクト指向ちゃう。構造化プログラミングや。
って反論すれば良いと思うよ。
こういうのは1度しか呼び出さないかどうかが問題なんじゃなくて、
変数のスコープをうまく制限して部分部分の構造をすっきりさせるのが良い。
0920デフォルトの名無しさん
2011/09/08(木) 16:55:11.24そんなことまでいちいち気にしていたらキリがない。
せいぜい自分のコードをアホに弄らせないこと。
http://codepad.org/mg9U6rsu
0921デフォルトの名無しさん
2011/09/08(木) 17:07:11.32関数化はついやってしまうのを防げるからなるべくやったほうがいい
0922デフォルトの名無しさん
2011/09/08(木) 17:12:24.68constを付けてると却って馬鹿みたいに見えるな
0923デフォルトの名無しさん
2011/09/08(木) 19:48:58.24コメントを書いてるのと同じ意味になる
もちろんhoge()とか付けたら意味内が
0924デフォルトの名無しさん
2011/09/09(金) 05:04:50.970925デフォルトの名無しさん
2011/09/09(金) 09:24:40.800926デフォルトの名無しさん
2011/09/09(金) 09:25:38.03その質問飽きた。
0927デフォルトの名無しさん
2011/09/09(金) 09:27:07.18テストみたいな生ぬるいものじゃなくてそれこそ形式手法使ってるだろうな
0928デフォルトの名無しさん
2011/09/09(金) 14:41:19.84回答してやれよ
0930デフォルトの名無しさん
2011/09/09(金) 16:54:08.57int main() { return func(1, 2, 3); }
C++ではできないのはなんで?
こっちのほうがコードが綺麗に書けると思うんだけど
0931デフォルトの名無しさん
2011/09/09(金) 16:55:12.040932デフォルトの名無しさん
2011/09/09(金) 17:23:52.83>int a, b, c ;
無駄
0933デフォルトの名無しさん
2011/09/09(金) 23:28:43.94グローバルな関数を呼び出しさせるのか、インスタンス作らしてメンバ呼び出すのかどちらがいいでしょうか
0934デフォルトの名無しさん
2011/09/09(金) 23:32:23.30アタッチ時に初期化できるでしょ
0935933
2011/09/09(金) 23:35:55.56DLLに限ったことじゃないしお好みでいいと思うよ
0936デフォルトの名無しさん
2011/09/09(金) 23:42:12.19DLLの中身による。
0937デフォルトの名無しさん
2011/09/10(土) 17:47:09.98>>935
>>936
0938デフォルトの名無しさん
2011/09/10(土) 19:08:12.36メンバ変数をクラス内グローバルだとか、関数内での動きが見えないとかと
病的に嫌って引数と戻り値だけでやりとりしていた人がいたけど
もはや何の為にクラス使ってんのって話だよ。
0939デフォルトの名無しさん
2011/09/10(土) 21:36:20.080940デフォルトの名無しさん
2011/09/10(土) 21:41:02.65その質問飽きた。
0941デフォルトの名無しさん
2011/09/14(水) 02:31:17.05int value1 = 0;
float value2 = 0.0f;
value2 = Henkou(value1);
内容は暗いまでも、式を見れば、int型の値を利用してfloat型の値を返す関数だと分かる。
Henkou100まで追加されても流れを追うことが可能。
Henkou();
実はメンバ変数value1,value2を同じように動かしているが、呼び出し側からは何を変更しているのか全く分からない。
Henkou100を追加するまでに値を見失うこと必至。
privateだからと甘えたソースの多いこと多いこと。
関数を細切れにするのなら、尚のことメンバ変数経由の値変更なんてするものじゃないと思ってる。
0942デフォルトの名無しさん
2011/09/14(水) 02:46:18.08呼び出し側から何を変更しているのかいちいち気にしなきゃならないなんて
クラスにした意味無いじゃんw
> 関数を細切れにする
これも意味不明
0943デフォルトの名無しさん
2011/09/14(水) 03:06:45.41private:
int i;
void Foo1();
void Foo2();
public:
Hoge():i(0){}
virtual ~Hoge(){}
};
void Hoge::Foo1(){
for(; i<10; ++i){ cout<<"a"<<endl; }
}
void Hoge::Foo2(){
for(; i<20; ++i){ cout<<"b"<<endl; }
}
極端な話、こういうバカを懸念しろってことか?
0944デフォルトの名無しさん
2011/09/14(水) 03:15:00.08int Hoge_Foo2_i = 0;
struct Hoge{
static void Foo1();
static void Foo2();
};
これでおk。
0945デフォルトの名無しさん
2011/09/14(水) 03:25:59.77忘れた頃にクラスの仕様を変更しろって言われたらどうすんの?
どこで何が変わっているのかも気にしないで、またバカみたいにメンバの変更箇所を探すの?
0946デフォルトの名無しさん
2011/09/14(水) 03:30:13.310947デフォルトの名無しさん
2011/09/14(水) 03:36:25.880948デフォルトの名無しさん
2011/09/14(水) 03:37:48.100949デフォルトの名無しさん
2011/09/14(水) 03:42:41.580950デフォルトの名無しさん
2011/09/14(水) 03:54:55.540951デフォルトの名無しさん
2011/09/14(水) 04:11:11.39>>949
初歩的な事さえ理解できていないのに
優劣を語る資格はないよ
0952デフォルトの名無しさん
2011/09/14(水) 04:15:29.09そうやって逃げ続けてるから、いつまで経っても人に迷惑のかかるコードしか書けないんだよ。
0953デフォルトの名無しさん
2011/09/14(水) 04:26:50.11>>943を見てブロックを超える広域変数は普通にヤバいと思ったわ
0954デフォルトの名無しさん
2011/09/14(水) 04:32:45.16privateでもクラス内でグローバルだよ
constと勘違いしてない?
0955デフォルトの名無しさん
2011/09/14(水) 04:51:39.45自分で考える力も無いのに聞いたような話で水を差すのはどうかと思うねw
0956デフォルトの名無しさん
2011/09/14(水) 04:53:38.85941がパラダイム未修得のトーシロと判断するわ
0957デフォルトの名無しさん
2011/09/14(水) 04:59:17.18反論としては全く機能していないけど。
添削してあげるからまずはコードを書いてみ?
0958デフォルトの名無しさん
2011/09/14(水) 05:31:18.49ゴミにも程がある。
0959デフォルトの名無しさん
2011/09/14(水) 06:43:17.13お前が分かってないじゃん
どこにアンカ付けてんの?
0960デフォルトの名無しさん
2011/09/14(水) 06:54:59.06馬鹿な上に、甘ったれ。
おそらく学生だろうが、それ以前に人間として話にならん。
0961デフォルトの名無しさん
2011/09/14(水) 07:33:13.860962デフォルトの名無しさん
2011/09/14(水) 08:22:40.55何があろうと一切使わない、は病的だけど。
0963デフォルトの名無しさん
2011/09/14(水) 13:41:00.080964デフォルトの名無しさん
2011/09/14(水) 14:23:28.68馬鹿
0965デフォルトの名無しさん
2011/09/14(水) 14:44:27.92アホ
0966デフォルトの名無しさん
2011/09/14(水) 14:48:25.67まぬけ
0967デフォルトの名無しさん
2011/09/14(水) 15:01:23.35uy
0968デフォルトの名無しさん
2011/09/14(水) 15:01:23.72とんま
0969デフォルトの名無しさん
2011/09/14(水) 15:02:21.78うむ。2chは肥溜めということがよくわかる良い流れであった。皆の者もう下がって良いぞ
0970デフォルトの名無しさん
2011/09/14(水) 20:14:24.00> >>951
> privateでもクラス内でグローバルだよ
ちょっと方言がきつくて何言ってるのか分かんないから
http://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
3.3.5 Namespace scop
3.3.6 Class scope
ここをざっと読んだ後に標準語で話してもらえないか?
0971デフォルトの名無しさん
2011/09/14(水) 20:23:24.37アスペ?
0972デフォルトの名無しさん
2011/09/14(水) 20:27:34.760973デフォルトの名無しさん
2011/09/14(水) 20:33:49.860974デフォルトの名無しさん
2011/09/14(水) 20:40:47.350975デフォルトの名無しさん
2011/09/14(水) 20:46:42.030976デフォルトの名無しさん
2011/09/14(水) 20:49:11.88引っ張るようなレベルの話ではない.
続きは宿題スレでどうぞ.
0977デフォルトの名無しさん
2011/09/14(水) 21:05:28.720978デフォルトの名無しさん
2011/09/14(水) 21:07:26.650979デフォルトの名無しさん
2011/09/14(水) 21:28:58.820980デフォルトの名無しさん
2011/09/15(木) 00:15:48.92うむ。2chは肥溜めということがよくわかる良い流れであった。皆の者もう下がって良いぞ
0981デフォルトの名無しさん
2011/09/15(木) 00:18:28.00http://hibari.2ch.net/test/read.cgi/tech/1316013463/
0982デフォルトの名無しさん
2011/09/15(木) 00:24:55.500983デフォルトの名無しさん
2011/09/15(木) 00:26:00.350984デフォルトの名無しさん
2011/09/15(木) 00:34:40.19ありがとうございました。
0985デフォルトの名無しさん
2011/09/15(木) 00:53:55.38レス数が950を超えています。1000を超えると書き込みができなくなります。