- 1 名前:デフォルトの名無しさん [2011/09/15(木) 00:17:43.25 ]
- スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。
過去ログ 01 pc11.2ch.net/test/read.cgi/tech/1167476845/ 02 pc11.2ch.net/test/read.cgi/tech/1178503366/ 03 pc11.2ch.net/test/read.cgi/tech/1187521676/ 04 pc11.2ch.net/test/read.cgi/tech/1221633708/ 05 pc11.2ch.net/test/read.cgi/tech/1230516307/ 06 pc11.2ch.net/test/read.cgi/tech/1231564903/ 07 pc11.2ch.net/test/read.cgi/tech/1232983248/ 08 pc12.2ch.net/test/read.cgi/tech/1235921779/ 09 pc12.2ch.net/test/read.cgi/tech/1240022781/ 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ 14 pc12.2ch.net/test/read.cgi/tech/1269273471/ 15 pc12.2ch.net/test/read.cgi/tech/1273368706/ 16 hibari.2ch.net/test/read.cgi/tech/1279285647/ 17 hibari.2ch.net/test/read.cgi/tech/1285115590/ 18 hibari.2ch.net/test/read.cgi/tech/1291571263/ 19 hibari.2ch.net/test/read.cgi/tech/1308106024/
- 433 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 18:55:55.91 ]
- sortに渡す比較関数に乱数をもたせる
class CompSpeed { public: CompSpeed(unsigned long seed) : mRandom(seed) { } bool operator () (Chara const & lhs, Chara const & rhs) const { if(lsh.speed == rhs.speed) { return mRandom() % 2; } // 同じなら1/2で真、1/2で偽 else { lhs.speed > rhs.speed; } // それ以外はスピードで大なり比較 } private: Random mRandom; }; sort(characters.begin(), characters.end(), CompSpeed(GetTime()) ;
- 434 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 18:56:03.59 ]
- if(wParam(:_;) >= 0x60 && wPanda <= 0x69(^_^))
- 435 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:06:03.83 ]
- MSはソートの比較関数に乱数を使う、という失敗をした事がある。
- 436 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:09:48.93 ]
- 一旦普通に並び替えて
同じ値の範囲を探してランダム並び替え
- 437 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:14:06.92 ]
- >>433
ソートが終わらなくなる、とかいう危険はないよね?
- 438 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 20:47:41.72 ]
- >>437
> ソートが終わらなくなる、とかいう危険はないよね? sortのアルゴリズムと運によってはある。だから>>436の方向が無難
- 439 名前:432 mailto:sage [2011/12/23(金) 21:23:10.08 ]
- アドバイスありがとうございます。
>>433の方法試してみたら、invalid operator< のエラーが出てしまいました。 原因が分からないので、>>436でやってみようと思います。
- 440 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:02:14.62 ]
- {素早さ}<<4 | {0-15の乱数} でソートはどう
- 441 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 03:07:02.28 ]
- CまたはC++でFlashみたいなヌルヌルアニメーションするグラフィカルなGUIソフトを
作りたいんですが、何を使えば楽に作製できますか? 今はC++とWin32APIで作ってるけど、どうも古臭い見た目になってしまう
- 442 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:59:37.81 ]
- C++ DirectX
- 443 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:45:30.21 ]
- ある意味ズルだが、.NET併用
詳しくないんで雑談としてだが、今風のUIコンポーネントのライブラリは多少充実してるらしい
- 444 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 08:22:36.72 ]
- スキンはプロクラムと別。小説の挿絵に小説家と別人がかいてたりする。
- 445 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 01:20:49.67 ]
- >>441-442
ありがとう、DirectXか.NETか。 DirectXは本1冊だけだけど読んだから、やりたい処理を組む際の必要な勉強量は少ない だろうけど、組むのが面倒そうだなと思っちゃう。 一度機能毎に細かく分けて作っておけばそうでもないんだろうけど。 .NETは触ったことも無いんだけど、開発効率よさそうだね。ちょっと.NET調べてみる >>444 そうなんだろうけど、一人で全部やらなきゃいけないのよ 研究展示で人に触って貰えるように、GUIで操作できるようにしているんだけど どうせならかっこいいインターフェースの方が受けいいし 中身はデータベース処理なんだけど、この結果を視覚的に表現したい ここでヌルヌルアニメーションしたいんだよね。 例えるならスパイシーっぽい感じだけど、そんなに凝る気もなくある程度簡素なのを
- 446 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 06:12:25.79 ]
- スパイシーwwwwwwwwwwwww
- 447 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 07:16:57.66 ]
- スパイシーって韓国料理みたいな意味か
タイ料理ならまだかっこいいが
- 448 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:46:41.54 ]
- ああ、デプロイを考えなくていいプロジェクトなのね
案外、HTML5で書いたほうがさくさくUIいけるかもねー。 ターゲットとUIのisolationにもなる。 C++でhttp鯖か串をビルドして、CGIでターゲット?に生命令を送ったらどうか 俺はいじり慣れてるからprivoxyを薦めるが、要するに、そんなのだ
- 449 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 09:48:03.76 ]
- ああごめん、DBって書いてた
ターゲット(ボード)っていうより、core process か。
- 450 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 13:59:56.65 ]
- >>448-4449
ありがとう、ユーザーインターフェイス面はHTML5で作成してブラウザで賄うってことか それはかなり便利そう。だけど来月中旬には完成させたいので今からHTML5勉強して 実用域までもっていくのは辛いです。 .NETも調べてみたらこの目的だと辛そうだし、やっぱDirectXまたはOpenGLで作ってみる ことにします。後々のAndroidへの移植も考えてOpenGLでいこうかな
- 451 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 20:15:58.75 ]
- >>450
来月中旬までなら、丸々一週間は勉強する時間があるじゃないか。
- 452 名前:デフォルトの名無しさん mailto:sage [2011/12/25(日) 23:38:46.40 ]
- HTML5は最たるものだが、legalにパクってこれるものは、パクっていい。
よさげなUIがあって、それが誰でも使っていいライブラリの仕事だったら、 あなたが使ってもいい。 DX/GLに、そんなパクりやすいライブラリあるのかな、と思うが、あるのかもしらん
- 453 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:02:39.02 ]
- スマポ(あるいは薄いラッパー系やプロクシ)作るときにoperator &はどう作るのが一般的なんだろうか
ラップしてる方のアドレスか、中身のアドレスか
- 454 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 20:19:14.58 ]
- すまぽを自作しようなんて思うなってばっちゃんが言ってた
# 覚悟を決めて、「車輪は一度は作って壊してみるもの」をやってみる。
- 455 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 23:30:42.65 ]
- >>454
確かに、研究や腕試しなら作ってみるのもいいけど実用ならそれなりにメジャーな出来合いのものを使うべきだな。 で >>453 > スマポ(あるいは薄いラッパー系やプロクシ)作るときにoperator &はどう作るのが一般的なんだろうか > ラップしてる方のアドレスか、中身のアドレスか 独自には作らずそのままスマポ自体のインスタンスのアドレスを取得させるのが普通。
- 456 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:55:45.10 ]
- int a[N] = { 1, 5, 0 , 3, ... } ;
//A vecor<int> v(a, a + N); //B vector<int> v; v.reserve(N); v.assign(a, a + N); AとBってどっちが速いですかね?
- 457 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:57:24.46 ]
- つ[実測]
- 458 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 16:06:46.17 ]
- 普通に考えたらAのほうがいいしBのreserveは不要
でもパフォーマンス問題は実測が基本
- 459 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:28:21.99 ]
- 初心者本読んでてわからない事が出たんで教えてくらはい
const char* name = GetOldMonthName(int month); //昔の月の名前で表示する関数。前の方で定義済み。 cout << name << endl; ってのがあるんですが、表示されるのはポインタnameに格納されてるアドレスではないのですか? 実際やって見ると参照先が表示されます cout << *nameに変えると何も表示されませんでした。 int a = 10; int* p = &a; cout << p << endl; とした場合にはpにあるアドレスが表示されるので どこで違いがあるのかがわかりません
- 460 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:36:50.65 ]
- int a[10]とchar a[10]でも違うだろ。
文字列型だけ特別扱いされて、アドレス渡すと中身が表示される。
- 461 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:39:27.10 ]
- cout << (int)name << endl;
cout << *(int*)name << endl; にしたら何か数字出る。
- 462 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 10:48:58.27 ]
- ありがとうございます。
>>460 そういう事でしたか。 文字列のところとcoutのところもう一度読み直しておきます。 >>461 両方数字が出ました。下はマイナスで上より桁が大きかったです。 キャストってやつなのかな。これも読んでおきます。
- 463 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 17:09:57.78 ]
- 派生クラスでメンバ関数を呼び出したらすべての基底クラスの同名同シグネチャのメンバ関数をすべて呼び出す
みたいなコードはちまちま手書きで書かないと作れない? デストラクタみたいに勝手にやってくれると楽なんだけど
- 464 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 18:09:05.38 ]
- たいていそういうのに限って、関数によって、少しずつ、後先が違ってないか
- 465 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 18:18:38.26 ]
- 違う分だけ書き足すってのがふつうじゃないか
- 466 名前:デフォルトの名無しさん mailto:sage [2012/01/04(水) 21:39:42.10 ]
- 前関数を呼ぶ位置の後先が、全部同じなのか?たいてい、少しずつ、、
- 467 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 09:27:53.08 ]
- 10件のデータを読込み、最大、最小値を求め表示するプログラムなのですが
ここでは体重にしました。よく分からないので教えていただけないでしょうか。 参考書を読みながら書いてみましたがfor以降がイマイチ分かりません。 #include<stdio.h> int main(void) { float w_max,w_min,weight; int i; for(i=0;i<10;i++){ scanf("%f",weight[i]); if(w_max < weight[i]) w_max = weight[i]; if(w_min > weight[i]) w_min = weight[i]; } for(i=0;i<10;i++){ //不明 } printf("i= %d w_max=%f w_min= %f\n", i, w_max, w_min); return 0; }
- 468 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 10:40:07.17 ]
- 内容的に宿題スレですね
すいませんでした。
- 469 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 11:29:40.25 ]
- >>467
その条件だけなら、二番目のループ自体不要だろ。 ついでに言えば、その後のiの出力も意味がない。
- 470 名前:デフォルトの名無しさん mailto:sage [2012/01/16(月) 17:06:06.20 ]
- Cの宿題なら、「該当行で出力されるiの値はいくらか。」って聞かれてもいいな
- 471 名前:デフォルトの名無しさん [2012/01/18(水) 23:25:45.05 ]
- こんにちは。C++とDXライブラリでしょぼいけどゲーム作っています。質問させてください。
二次元ベクタにキャラクターを入れて、その全てを描画する方法として、例えば、 vector<vector<Character>> Chara; for(int y=0;y<Chara.size();y++) for(int x=0;x<Chara[y].size();x++) Chara[y][x].Draw(); という方法があると思います。 また、例えば、キャラクターのHPが0になっている者を探し、 そのHPを回復させるとしたら、 for(int y=0;y<Chara.size();y++) for(int x=0;x<Chara[y].size();x++) if(Chara[y][x].HP==0)Chara[y][x].HP+=100; みたいな感じになると思うんですが、 for文で回しているところが、重複して無駄な感じがするので、 テンプレート関数とかを使って、何か上手く出来ないかと悩んでいます。 AllDo(Chara,Draw()); AllDo(Chara,Recover()); ←みたいに出来ればすっきりするんですが・・・。 どう書いたらいいのか頭がこんがらがってしまって(汗) どなたかご教授下さい。よろしくお願いします。
- 472 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 00:36:26.93 ]
- 0x使ってもよさ気だから、forを関数にして中身をラムダで書けばいい
- 473 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 01:13:26.33 ]
- template<class F>
void AllDo(vector< vector<Character> > & v, F f) { for(int y(0); y < v.size(); ++y) for(int x(0); x < v[y].size(); ++x) f(v[y][x]); }
- 474 名前:デフォルトの名無しさん mailto:sage [2012/01/19(木) 01:15:39.75 ]
- イテレーターを作ってstd::for_eachだろ
- 475 名前:471 mailto:sage [2012/01/19(木) 05:27:53.71 ]
- ラムダ式すっごい楽です!
まだC++始めて日が浅いのでこの機能は知りませんでした! >>472-474 教えてくださった皆さんありがとうございました。
- 476 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:08:39.53 ]
- Windows7 64bit版のポインタのサイズって64bitで合ってる?
- 477 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:11:41.59 ]
- いいえ
- 478 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:23:09.98 ]
- てことは、64bit版もポインタのサイズは32bitなのか
ありがとう
- 479 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:36:37.31 ]
- てことは
はどこに掛かってるんですか
- 480 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:50:36.19 ]
- いいえ
- 481 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 17:54:12.44 ]
- 言い得て事は
- 482 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:00:41.14 ]
- >>476
16bitは動かないから、32bitまたは64bitじゃないかな
- 483 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:04:16.54 ]
- なんでポインタのサイズなんて気にするの?
実質ただの整数なんだから32でも64でも大差ないでしょ
- 484 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:10:11.41 ]
- >>476
VCならばこのあたりに注意すれば十分かと ttp://msdn.microsoft.com/ja-jp/library/3b2e7499.aspx
- 485 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:18:18.31 ]
- わかんなかったら全部64bit整数でショリすれば問題ない
- 486 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:21:09.88 ]
- そんなコード書いてて128bit時代が来たらどうするの?
- 487 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:25:58.21 ]
- 全部128bit整数にすれば問題ないよ?
typedef一発だよ
- 488 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:29:13.02 ]
- typedef int32_t oreint_t;
typedef int64_t oreint_t; typedef int128_t oreint_t; void oreint_chk(void) { if (sizeof(oreint_t) != sizeof(void *)) abort(); // 無理です } 何も問題ない
- 489 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 18:32:58.92 ]
- DWORDとDWORD_PTRの大きさ違うとか
いちいち問題にする事自体が時間の無駄
- 490 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 22:08:26.58 ]
- たぶん、そんなあなたに:intptr_t
- 491 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:09:08.83 ]
- それで思い出したけど、_t の t って何の略?
size_tのおかげで、しれっと使ってるけど、良く考えたら何の略か知らなかったので、 この際教えて欲ください。
- 492 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:16:15.68 ]
- 何かの略というより、お墓ね
- 493 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:51:54.94 ]
- typedef
- 494 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 02:54:28.66 ]
- type
- 495 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 09:39:30.24 ]
- size_tとかSizeTypeみたいな後ろにくっついてる型を意味するサフィックスは
大抵の場合変数名とかぶるのが気持ち悪いというだけの理由で付けられたものだよ
- 496 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:18:35.97 ]
- >>495
ソース // C/C++の薀蓄もきちんと知りたい年頃。 // 納得はしている。
- 497 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:44:34.75 ]
- ひょっとして仮想関数を利用したポリモーフィックなクラス階層構造以外で継承することってあまり無いんですか?
今まで継承していたクラスをメンバに持たせて関数を呼び出すだけのinlineメンバ関数を定義するするほうが複雑なコードを組みやすい気がするんですけど
- 498 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 16:51:24.82 ]
- ひょっとしてはどこに掛かってるんですか
- 499 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 11:59:33.25 ]
- なんでC++はポインタと参照を違うインターフェースで扱うんですか?
Javaみたいに全部.でやったほうがクールだと思います
- 500 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:34:16.26 ]
- Javaを意識したら、Oracleがアップをはじめるからだめです(w
Javaを意識して、極力参照で書くようにポリシを決めることはできる 君が自由人(個人開発者)なら、まったく君の自由だ C/C++には、壊れてたり、nullだったりするポインタ型の値を扱う「資格」があるんだよ C系のみとは言わないが、そこには誇りすらある # 休憩しにきた
- 501 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 11:35:16.68 ]
- C#でおk
- 502 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:19:38.03 ]
- “Javaには無い”演算子オペレーターを効率よく実装するためだったような
もう忘れた
- 503 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:54:01.80 ]
- Handle-Bodyを使えば見た目が参照っぽいスマートポインタになってJava厨も安心する
- 504 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 21:53:31.45 ]
- enum をインクリメントして巡回したいんだけど安全で汎用的な方法はある?
enumの型ごとに値の遷移テーブル(それかswitchで次を見つけるだけの関数)を作るみたいな、地道な作業するしかないかな?
- 505 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:18:47.13 ]
- 汎用的かどうかなんてその時個々人の主観が伴うから
好きにしたらいいよ
- 506 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 22:55:00.76 ]
- enumがアップル=1、オレンチ=3、ピーチ=7だったら
num[]={1,3,7}; とsize=3を別に持っとけ。 このデータを前処理で自動生成してもよい。
- 507 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:15:40.86 ]
- 地道な作業を、PCにやらせるようにするのが古典的だが手っ取り早い
- 508 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 23:17:53.77 ]
- そうだな生成プログラムでも書いた方がらしいな
- 509 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 18:00:43.29 ]
- Visual Studio2003です。
.cファイルを右クリックしてコンパイルすると.objファイルができるじゃないですか。 このできた.objファイルを他のプロジェクトで使いたいんですよ、javaの.classファイルみたいなイメージで。 でもソリューションエクスプローラには「ソースファイル」「ヘッダーファイル」「リソースファイル」とあるんですが、どこに置いてどうincludeすれば使えるようになるんですか?
- 510 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 18:21:54.58 ]
- ・.objはリンカが扱う。
・ただし、リンカコメントというのをソースに埋め込むと、.cで.objを引っ張り込むことを記述できる。
- 511 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 19:57:25.12 ]
- >>510
リンカコメントですね、ググってみます。 ありがとうございます。
- 512 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:22:45.05 ]
- うん、ぐぐったらなんかわかるだろ。
と思ってたら、通称だったかも。うまく出せない。 > #pragma comment(linker, "...") こういうのなので、ぐぐってみそ。 で、そんなことをするうちに、include 的に記述するより、 プロジェクト設定みたいので指定するのが自然ってのがわかると思う
- 513 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 20:49:19.22 ]
- Makefileに変換してnmake使うことできないの?
後々そっちの方がいいよ
- 514 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 09:03:21.79 ]
- >>512
ありがとうございます。色々試してみます。 >>513 nmakeって元から入ってるのならいけると思います。 自分のバソコンじゃないのでインストールとかはできないです。
- 515 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 14:49:21.25 ]
- ナマポとスマポどっちもぶち込めるコンテナってどう書くんですか?
- 516 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 23:43:59.13 ]
- スマポのナマポをぶちこんどけばおk
- 517 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 07:35:41.50 ]
- WindowsのC/C++のUNICODE両対応アプリのソースって、
文字定数と文字列定数はいちいち_T()で囲わないとダメですか? 一部をANSIで扱うことってありえますか?
- 518 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 08:09:51.62 ]
- 今の流行はAPIに食わせる場合は_T()
食わせない場合はUTF-8として扱う かな
- 519 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 22:37:04.75 ]
- WindowsはAPIにAやWがついてるやつを使えば
_T使わなくても平気じゃないかな
- 520 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 22:53:52.30 ]
- CString使えばいいよ
- 521 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 22:56:40.08 ]
- 時刻を管理するクラスTimeのメンバ関数として、
分を返す int Time::min( ) const を用意したのですが、 VC++ 2010だと、windows.hをインクルードした際に マクロmin(a,b)(((a)<(b))?(a):(b)) と解釈されてしまい 引数が足りないというコンパイルエラーになります。 このコンパイルエラーを回避するためには min()の名前を変更する以外に方法は無いのでしょうか? よろしくお願い致します。
- 522 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 23:22:39.49 ]
- #define NOMINMAX か (t.min)();
- 523 名前:デフォルトの名無しさん mailto:sage [2012/01/29(日) 23:23:52.48 ]
- >>521
includeした後にundefする。でも衝突しそうな名前は初めから避けるべき
- 524 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 00:39:48.02 ]
- ファイル名やフォルダ関係はUNICODEで統一しといた方がいいかも
ファイルの中身は知らん
- 525 名前:521 mailto:sage [2012/01/30(月) 09:55:06.10 ]
- >>522
>>523 ありがとうございます。
- 526 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 10:10:56.90 ]
- stdと衝突するあたりM$の頭の悪さが露呈してるよなぁ
- 527 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 14:50:02.33 ]
- maxマクロを書いたMSのプログラマは絶対に許さない。絶対にだ
- 528 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 22:38:39.10 ]
- >>526
windows.hって相当昔からあるから、STLが規格に入る以前に作られてたとか
- 529 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 00:18:22.76 ]
- C++の大規模ソースをソーストレースするときのおすすめツールを教えてください。
ある関数の宣言もとや使用箇所を手早く探せるようにしたいです。 以下、今まで使ってたもの。 ctags :同じ名前の関数(オーバーライドされてる関数)があるとき、 候補をリスト表示できない。 関数やメンバを使用している箇所を表示できない。 GNU Global :構造体のメンバを検索したり、 関数定義もとを探すときに見つからないことがある。 Windows 、Linux のどちらかで使えれば良いです。
- 530 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 00:31:09.18 ]
- grepや全文検索。
コンパイラ提供のインクルードパスをgrepかけることあるがそれほど時間掛からん。
- 531 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 10:17:31.94 ]
- ビルド環境さえ用意できるならなにもなくてもなんとかなるね
grep,ファイラー,テキストエディタはさすがに用意できるだろうし
- 532 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 13:40:47.76 ]
- ソースを全文検索対象にして、indexつくらせちゃう
まったくのベタだが、結局これがいちばん早かった
- 533 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 15:08:59.03 ]
- class c_A、class c_Bがあって、
〜〜ヘッダファイル内〜〜 #include "c_B.h" class c_A { c_B hoge; }; 〜〜〜〜〜〜〜〜〜〜〜 でインスタンス生成できちゃうんですか
- 534 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 15:46:32.64 ]
- >>529
つ[Doxygen] >>533 できない。
- 535 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:41:28.49 ]
- C++の規格上vector.end()をインクリメントすると何が帰ってくるか未定義?
だとすると内部で+=や++オペレータを呼ぶだけのadvanceは終わりをチェックしてくれていないの?
- 536 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:43:48.01 ]
- はい
- 537 名前:533 mailto:sage [2012/02/05(日) 19:56:00.52 ]
- すいません、c_Aのインスタンスを生成したときに、内部に持っているc_Bの
インスタンスも生成されるのでしょうか? という質問でした
- 538 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 19:59:31.87 ]
- はい
- 539 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:44:34.41 ]
- それで納得したならそれでいいし、
それで何か困るなら、ラッパクラスを作ってもいい
- 540 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:03:30.46 ]
- >>536
ohそうなのか。ありがとう 規格上どのコンテナのイテレータでもそうなってる訳?
- 541 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:05:46.99 ]
- はい
- 542 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:09:47.26 ]
- ほんとにちょっとした質問なんですけど、
ifstream ifs("csvファイル.csv"); string line; getline(ifs,line); //※ここで、別のファイルを開きたくなったので、 ifs.open("別のファイル.csv"); ってやった場合、マズかったりしますか? それとも、ifsは「別のファイル.csv」をちゃんと頭から読み込んでくれますでしょうか?
- 543 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:16:38.66 ]
- はい
- 544 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:19:07.66 ]
- マズかったりします
- 545 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:10:08.63 ]
- >>541
thx! だとイテレータ使ったループって使いにくくない? Cだとfor(i=0;i<10;i+=2);で偶数飛ばせるけどイテレータはいつもend()になったかどうか チェックしないといけない。ぶっちゃけ改悪なのでは?
- 546 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:35:42.46 ]
- listなどの実装を考えると一般的にイテレーターがi<Nと書けない(非常にコストが掛かる)ことに気がつく
- 547 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 07:56:49.62 ]
- コンティナーのせっかく抽象化したい照れーたをインクリメイツ
って発想が キモイと思うのだが 片リストを逆から辿ろうとしたら 「このコードはバヤイ!リバースコピーをいテレータ用に確保なう!」 「もっといい方法があるのにp」 と忠告してくれるコンパイラーがあるといい
- 548 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 08:07:20.64 ]
- >>546
大概の実装はlistのsizeは定数時間になっていると思うが
- 549 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 11:33:49.80 ]
- >>548
それとこれとは関係ない。
- 550 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:30:45.59 ]
- while(true){
int a = 1; cout << a << endl; a = 2; } whileブロック内で変数を定義したらどんなもんかとこれを試してみたら 無限に1が出力されました。初期化って一度だけかな?と思ったけど この結果ということは、これは一回のループごとに毎回変数が定義されてる ということですか?auto変数の確保→破棄を延々と繰り返すみたいな。 だとするとwhileブロックの外で定義した場合に比べて効率が悪いのですか?
- 551 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:33:50.32 ]
- >>550
気にするほどの差はないだろ。最適化される。 使うときに明示的に定義した方が速いこともある。 長期間使用され続ける物は、CPUキャッシュに入りにくくなる可能性がある。
- 552 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:39:03.86 ]
- レスどうもです。
たいした差はないということですが、プログラミング作法としても whileブロック内での変数定義ってあたりまえのように使われるの でしょうか(初期化のあるなしに関わらず)。
- 553 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:45:50.33 ]
- あたりまえのように使われる
- 554 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:46:57.81 ]
- そうですか、ありがとうございました。
- 555 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:00:20.48 ]
- while(true)
{ std::vector<int> tmp(1000); } とかなら考え直したほうがいいな
- 556 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 19:06:36.55 ]
- while(true) {
static std::vector<int> tmp(1000); } つまりこういうことですね?
- 557 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 23:25:52.31 ]
- 変数の生存が長く使われないほど
CPUキャッシュ ⇒ メモリ ⇒ HDD と配置が格下げされる。 HDDまでいったら値を読み込むのに時間食う。 新規に生成したほうが得。 メモリにあったとしてもそれを読み込むよりL1キャッシュに新規に生成した方が速いだろう。
- 558 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 01:45:33.96 ]
- >>557
キャッシュミスより生成コストのが普通に高いと思うけど、 そんな事ありえるの?
- 559 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 03:11:26.31 ]
- プリフェッチも考慮するとキャッシュミス自体それほど起こるかどうか
- 560 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 08:25:58.69 ]
- そもそも、ローカル変数なら同じコードに落ちる可能性が高い。
つまり、関数突入時にスタックポインタを移動するだけ。
- 561 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 08:58:10.22 ]
- そういうくだらない最適化は最後の最後にしろ
- 562 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 18:45:29.51 ]
- クラスメンバ関数の宣言と定義を分けるときにinline化したい場合は
宣言か定義のどちらかにinlineが入っていればOKですか? それとも両方書かないとだめですか?
- 563 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:11:37.43 ]
- int a[4];
があったとして、 もしa[0],a[1],a[2],a[3]全てが0だったら、という条件式は if(a[0]=0 && a[1]=0 &&a[2]=0 &&a[3]=0) 以外に表せますか? なんかもっとスマートに書けたりできますか?
- 564 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:22:55.93 ]
- if(a[0]|a[1]|a[2]|a[3])
スマートかどうかは知らん
- 565 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:25:24.66 ]
- そもそもそれ代入やん
- 566 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:27:17.51 ]
- ひっかけ乙だったのかw > 565
- 567 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:37:50.98 ]
- if(a[0]=a[1]=a[2]=a[3]==0)
とかだめだったっけ
- 568 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 22:52:52.39 ]
- 中身ぶっこわしてもいいのならアリ・・・か?
- 569 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 23:27:14.24 ]
- >>563
int i; for(i=0; i<4; i++) if(a[i] != 0) break; if(i == 4) { //全て0のときの処理 }
- 570 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 00:26:09.73 ]
- intが32bitで128bitレジスタがあったら
if (*(int128*)a != 0)
- 571 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 08:16:17.69 ]
- if( a[0]*a[0] + a[1]*a[1] + a[2]*a[2] + a[3]*a[3] == 0 )
- 572 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 08:23:37.82 ]
- if(a[0] || a[1] || a[2] || a[3]) {
; /* なにもしない */ } else { }
- 573 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 12:38:17.22 ]
- >>562
宣言にinlineは、書いても書かなくてもinlineじゃないか? 定義はinlineにしたいならヘッダに書くべきだし、 ヘッダに書くとして複数includeする場合は、 inlineを書かないといけない。 1ファイルでしか使わない場合はシラネ
- 574 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 14:12:45.40 ]
- テンプレート関数xxxにfuncを渡すときには自動的にTとUが設定されるのに
テンプレートクラスyyyにfuncを渡すときには、自分でTとUを指定しなければなりません。 この違いはなんなのでしょうか? 環境は gcc version 4.6.1 です。 template<class T, class U> void xxx( T (*func)(U) ) { } template<class T, class U> class yyy { private: T (*f_)(U); public: yyy( T (*f)(U) ): f_(f){ } }; double func( int v ){ return (double)v*0.1; } int main( ) { xxx( func ); //yyy obj( &func ); //templateの型を指定しないとコンパイルエラー yyy<double,int> obj; return 0; }
- 575 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 18:30:09.86 ]
- >>574
関数は型推論してくれるが、クラスはしてくれない決まりだから
- 576 名前:574 mailto:sage [2012/02/13(月) 22:46:09.01 ]
- >>575
ありがとうございます。 std::mem_fun_refとその内部で呼んでいるstd::mem_fun_ref_t との関係がイマイチわからなかったので色々試していたところでした。 テンプレート関数のstd::mem_fun_refで型推論して、 テンプレートクラスのstd::mem_fun_ref_tに伝えているのですね。
- 577 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 12:40:26.78 ]
- こういう命名ってC++では合法ですか?
namespace _hoge { struct _fuga { void _func(void); }; }
- 578 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 13:02:26.24 ]
- >>577
×namespace _hoge { ○struct _fuga { ○void _func(void); 先頭にアンダースコアはオススメしない
- 579 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:47:17.24 ]
- これってどういう意味でだめなんだっけ?
> ×namespace _hoge { ネームスペース名って先頭アンダースコアだめなんだっけ?
- 580 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:04:49.94 ]
- >>579
グローバルスコープが禁止
- 581 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:43:27.29 ]
- どうもです。
じゃあ入れ子になってれば可能なんですな。
- 582 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 12:57:48.48 ]
- 文字列の配列を10個用意して最初の文字列にstrcpyでデータをコピーしたいのですがエラーになってしまいます
char* p[10]; p[0] = "Spring"; strcpy(p[0],"Summer"); 一体どこをどう直せばよいのでしょうか?
- 583 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:03:26.26 ]
- std::string p[10];
p[0] = "Spring"; p[0] = "Summer";
- 584 名前:582 mailto:sage [2012/02/21(火) 13:45:23.18 ]
- ありがとうございます、string型でやってみます。
ちなみにstrcpyを使うのは間違いなのでしょうか? 何が間違いなのかよく分からないのです
- 585 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:51:30.39 ]
- メモリについてもう少し勉強しなさい
- 586 名前:582 mailto:sage [2012/02/21(火) 13:55:37.67 ]
- 分かりました、もう少し勉強します
- 587 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 15:28:01.01 ]
- 浮動小数の比較で
a=1.0; b=1.0; if ( a <= b ) みたいにするのは、やめたほうがいいですか? a=1.0 とすると実際は a=1.00000000001 みたいになってて <= の評価が うまくいかない可能性を危惧しています。とりあえず今のところ問題なさそうなんですが。 Fortranやってたときは、よくこんなふうにやってました。 eps=1e-30; a=1.0-eps; b=1.0; if ( a <= b )
- 588 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 15:30:17.33 ]
- 場合による
- 589 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 15:45:14.64 ]
- 問題出るまでそのまま使っとけ。
問題あったら任意精度や整数計算へおきかえればいい。 精度が64、128ビットと固定されていればどれだけビット数上げても誤差が出る。 その初めに引いとくのは駄目だろ。もしaが負の方向へ小さかったら間違える。
- 590 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:19:04.96 ]
- 一致じゃなくて大小関係なんだろ?
単に if( b > a) でいいのでは… 一致が必要なときは、確かに、EPSILON系の定数を使うけど。
- 591 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:29:00.68 ]
- 厳密には大小でもダメだよ
計算機上の値では0 < xが真になる場合でも真値では0 < xが成立しない事は普通にある
- 592 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 17:10:03.20 ]
- vector<bool>に限らず特殊化されたテンプレートクラスを
特殊化しないで使いたい場合はどうすればいいんですか?
- 593 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 17:36:17.81 ]
- そんなことはできない
- 594 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 03:37:46.38 ]
- 具体的に何がしたいんだろう、ちょっと読めない
- 595 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 05:19:34.45 ]
- hoge<bool> という特殊化されたオリジナルのテンプレートがあって、
それを、hoge<int>でも使いたいとか、そういうことかな? 他はまったく思いつかない。
- 596 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 07:25:45.13 ]
- 何でそうしたいか理由が全く分からん。やるならメンバにboolだけ持たせた構造体を定義してそれを渡すとか?
- 597 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 13:27:55.80 ]
- 最適化などのために特殊化されてるけど
他のコードと互換性がなくて仕方なく非特殊化バージョンを使いたいなーということはあるでしょ bool参照しか受け取らない関数にvector<bool>の要素渡せないとか
- 598 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 16:53:20.32 ]
- 質問させていただきます。PGを書く問題ではないのですが、
「ソートプログラムとデータ構造について 具体的なソートプログラムの名前をあげ、 とのようなデータ構造(配列、単方向リスト、双方向リスト、循環リストなど)が なぜ適しているか述べろ。 が分かりません!教えてください
- 599 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 17:39:01.94 ]
- 丸投げは宿題スレ行け
- 600 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 00:31:23.68 ]
- これは簡単なようでいて、こういうのに強くないと解けない 宿題スレが適当
- 601 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 10:11:12.67 ]
- 宿題スレでも扱いが酷いな。テンプレ無視だからしょうがないけど
まずソートの種類を調べるくらいは自分で出来るんじゃない? それからそのソートに適したデータ構造と理由を聞けば… ところで循環リストが適してるソートなんてあったっけ?
- 602 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 11:07:15.84 ]
- 循環ソート
- 603 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 00:20:56.14 ]
- c++ってchar使うの?
文字列はstringを必ず使うべきなの?
- 604 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 00:33:04.28 ]
- stringはcharがもとになっている。資源の無駄を減らすならchar
- 605 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 07:49:56.89 ]
- 純粋に高級言語として使うなら「1文字の文字」を扱うときぐらいだが
C++には高級アセンブラたるC言語の後継としての役割もあるから無いと困る 組み込み系はもちろんだし、そうでなくてもAPIとかはchar[]ベースだったりする
- 606 名前:デフォルトの名無しさん mailto:sage [2012/03/17(土) 12:18:11.06 ]
- charを要求するライブラリを呼ぶ限り、charは不滅
もちろん、charを極力廃すような書き方をすることは可能だろう
- 607 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:24:47.88 ]
- C++のステートパターンの骨組みというか
サンプルプログラムを教えてください。
- 608 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:02:30.36 ]
- >>607
https://www.google.co.jp/
- 609 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:00:49.96 ]
- struct A{
int a; struct B{ static int& a; }; int f(){ a = 10; B::a = a; } }; int main(void){ A a; a.f(); } で, undefined reference to `A::B::a' とエラーが出ます. どうやって回避すればいいのでしょうか.
- 610 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:08:44.64 ]
- >>609
そもそも、なんで構造体の中から外を知ることができると思い込んだの?
- 611 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:27:02.08 ]
- >>610
確かに言われて見れば・・・ とりあえず構造体のネストを消すように作り直してみます.
- 612 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 01:24:49.10 ]
- >>609
参照は定義時に初期化しなければならない。まあやりたかったこととは違うだろうが。 struct A { int a; struct B { static int& a; }; int f(){ a = 10; B::a = a; return 0; } }; A x; int & A::B::a = x.a; int main(void){ A a; a.f(); }
- 613 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 21:24:25.17 ]
- C++のステートパターンの骨組みというか
サンプルプログラムを教えてください。
- 614 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 21:26:51.56 ]
- >>613
>>608
- 615 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:15:48.44 ]
- >>613
ttp://codepad.org/zJKMXKy9 概念を理解できてれば多言語のソースでもなんとなく読めるはずだがな
- 616 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:48:35.81 ]
- >>615
本質的なところじゃないけど、deleteしようぜ
- 617 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 13:51:17.47 ]
- 構造体内部に関数って入れられるんだっけ?
- 618 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 14:14:55.96 ]
- C++だからstructで定義するものもクラス
- 619 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:12:58.72 ]
- C++だとunionもクラスなの?
- 620 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:42:27.78 ]
- ポリモルフィズムの概念がない
- 621 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 15:29:17.65 ]
- ポインターについて質問です。
*p++ >この文では最初にp をインクリメントし、次に新しいメモリアドレスにある >値を得ます。 と、いう説明がありますが、"次に新しいメモリアドレスにある値" の意味が わかりません。 仮にp に格納されているアドレスが100番地 だったとすると、 それが+1(char の場合) されて101 となるだけではないのでしょうか。
- 622 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 15:54:39.35 ]
- >>621
いいえ違います
- 623 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 17:00:17.86 ]
- >"次に新しいメモリアドレスにある値"
その例では、101にある値。
- 624 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 17:02:07.88 ]
- >>622
ではどういう動作をするのでしょうか。詳しくお願いします。
- 625 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 17:13:32.58 ]
- >>623
なんとなくわかりましたが、101番地にある値が"得られる" というのが いまいちしっくり来ません。 ひょっとしてこれは、ポインターが+1 されて、 それ以降、そのポインターを使ったときは、101 番地のデータが読める、 という意味で"得られる" と書かれたものだと解釈してよいでしょうか。
- 626 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 17:30:40.63 ]
- >>625
演算子の優先順位が 後置インクリメント(++) >> 前置インクリメント(++) >> 間接参照(*) >> 乗算(*) この場合は *p++ = *(p++) メモリ内容が以下だとすると ADDRESS VALUE 0x00401000 0x0123 0x00401004 0x0456 0x00401008 0x0789 0x0040100C 0x0ABC DWORD* p p = 0x00401004 *p は 0x0456 p++ p = 0x00401008 *p は 0x0789
- 627 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 17:33:49.60 ]
- あ、最後のp = 0x00401008
の "=" は代入じゃなくて p が指す物を示す
- 628 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 19:02:19.38 ]
- >>626
具体的な例を挙げてくださり、ありがとうございます。 演算子の優先順位を忘れていました。カッコをつけるとわかりやすいですね。 ただ、残念ながらおっしゃっている事がまだ理解できません。 *p++ ・・・この文が、何かの変数や関数への代入文に使われているのなら、 「ポインターを+1 されたアドレスのデータを何かに代入しているんだな」 と 思えるのですが、参照している教科書には *p++ とだけしか書かれておらず、 何かに代入しているわけではないのです。 だったら * は不要で、 p++ だけでいいのでは? と思います。 ど素人の低レベルな質問で意味不明かもしれませんが、なにかヒントを下さい。
- 629 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 19:07:33.60 ]
- >>628
前後のコードもしくは文章plz
- 630 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 19:21:45.24 ]
- >>629
独習C から、該当部分を引用します。 >ポインタそのものに対してだけでなく、ポインタが指しているオブジェクトに >対してもインクリメント演算子やデクリメント演算子を使用する事ができます。 >しかし、ポインタが指しているオブジェクトをインクリメントしようとするときには >注意してください。 例えば、値1 の整数を指しているp があるとします。 >次の文を実行するとどうなるでしょうか。 > > *p++ > >予想は当たったでしょうか。この文では最初にp をインクリメントし、次に >新しいメモリアドレスにある値を得ます。ポインタが指しているものを >インクリメントするためには、次のような式を使わなければなりません。 > > (*p)++ > >かっこをこのように使うことによってp が指している値をインクリメントすることが >できます。 >また、関係演算子を用いれば、2つのポインタの値を比較する事ができます。 >もちろん、ポインタの比較は、それが相互に関連している、つまり、同じ型の >オブジェクトを指しているような場合に、初めて意味を持ちます。 以上該当部分です。何か重要な情報がありますでしょうか。
- 631 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 19:35:48.07 ]
- >>630
書いてるまんまだろ 参照先をインクリメントしたいときは (*p)++ と書け *p++ と書いたらポインタ自体をインクリメントすることになる って言ってるだけ *p++ のコード自体に筆者の言いたい意味があるわけじゃない
- 632 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 21:05:42.47 ]
- >>631
>*p++ のコード自体に筆者の言いたい意味があるわけじゃない なるほど。ここまで読み進めてきて、はしょった表現がなかったものですから、 勘違いしていたようです。 どうもありがとうございました。
- 633 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 21:10:08.38 ]
- *p++ って、もはや定型的な書き方なのさ。
- 634 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/03/31(土) 22:44:18.36 ]
- >>630
>> *p++ >> >>予想は当たったでしょうか。この文では最初にp をインクリメントし、次に >>新しいメモリアドレスにある値を得ます。 「インクリメント前のメモリアドレスにある値を得た後、pをインクリメントする。」だろ?
- 635 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 18:34:04.05 ]
- なんだか勘違いしそうな説明が続いてるなw
例えば、 int a[4] = { 0,1,2,3 }; int* p = a; int n = *p++; int m = *(p++); ってすると、n = 0, m = 1 になるんだぜ。 上の説明だけでは納得できないだろ?w
- 636 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:22:47.06 ]
- >>635
いや、大体わかったつもりです。 int n = *p++ // 配列a の先頭番地のデータ(0) をn に代入し、その後インクリメントされる。 int m = *(p++) // p は+2 されているので、データ(1) がm に代入され、その後インクリメント。 これらの文が処理された後、p はデータ(2) の番地を指している。 ・・こういう解釈であっていますよね。
- 637 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:32:19.53 ]
- >>636
nもmも式評価のときは*pで++は*よりも優先順位が高いから 結合するのはどちらもpだけってことだろ?
- 638 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:42:30.17 ]
- >637
すいません、本当に素人で、釣りをしているわけではありません。 直球ど真ん中のマジレスでお願いします。 そこであえて質問ですが、"結合" とは、この場合どういう意味でしょうか。
- 639 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:44:20.68 ]
- 疑問に思ったところは6章のポインタで
>>636のいいたいインクリメントについては2章制御文その1でやってるから大丈夫だろ ってかインデックス見ようと翔泳社見たら独習C絶版なのな 独習C++ってC読んでること前提で書かれてなかったっけ?
- 640 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 19:57:11.02 ]
- >>638
その演算子がある項に作用すること 後置インクリメント++の場合、単項演算子で結合性は右から左 また優先順位は参照演算子*よりも高いので この場合(*p++)は++の左にある単項、pに作用する 後置インクリメントは評価後にインクリメントされるので この式(*p++)自体の結果は*p これでいい?
- 641 名前:営利利用に関するLR審議中@詳細は自治スレへ [2012/04/01(日) 20:49:01.75 ]
- >>640
160km/h のストライク。よくわかりました。今後ともよろしくお願いします。
- 642 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 20:54:47.31 ]
- >>639
いや、絶版じゃないだろう・・・・・第3版のことか? books.shoeisha.co.jp/book/b72093.html 独習C++が独習Cを読んでいる(C言語は既習である)ことを前提に書かれているのはその通り。
- 643 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 21:02:35.80 ]
- >>642
おおスマン 見落としていた
- 644 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 03:19:18.51 ]
- 昨日からC言語始めたプログラム初心者です
四捨五入のプログラムで 例えば1.666を第3位で四捨五入すると1.670000って表示されるんだけど これを1.67と表示させるにはどうやったらできますか?
- 645 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 03:24:44.66 ]
- printf("%.2f",1.67);
- 646 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 03:49:55.45 ]
- >>645
サンクス
- 647 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 20:05:15.76 ]
- >>644
つ[ "%g"]
- 648 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 17:20:56.61 ]
- CLRのコンソールのメイン関数って、Microsoft独自のモノですか?
それとも、C++の新規格のメイン関数なのですか? #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Console::WriteLine(L"Hello World"); return 0; }
- 649 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 18:25:56.69 ]
- >>648
該当スレできけば? くだすれC++/CLI(初心者用)part2 toro.2ch.net/test/read.cgi/tech/1268613679/
- 650 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 18:34:32.79 ]
- >>648
そもそもnamespace Systemなんて標準のC++にはないよ。
- 651 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 18:50:39.50 ]
- CLIで探せばよかったのですね。Thanx!
- 652 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 20:26:16.99 ]
- c++簡易ブラウザーを作りたい
boost::asioでソケット周りできた。クッキーも仕様書みながらある程度できた。 javascriptはECMAScriptと戦わないとだめなのか?
- 653 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 20:41:16.75 ]
- モジラやググールのを使え
- 654 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 21:04:59.82 ]
- V8が面白そうだ。先は長いな…
- 655 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 00:36:28.03 ]
- DOMをやるのかやらないのかでだいぶ違う
ブラウザの進化の過程をたどるか、あるいは新発想のアーキテクチャでいくか。 ある程度の完成物を狙うなら、いったん、V8なり、JSCなりを呼ぶ実装がいい そもそも、JavaScriptエンジンのインタフェース自体から、学ぶ点がある
- 656 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 16:48:33.44 ]
- ECMAScript - Wikipedia
ja.wikipedia.org/wiki/ECMAScript
- 657 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:40:27.10 ]
- int a=ランダム値;
bool flag; if(a==1 || a==42 || a==145)flag=true; ↑こんな感じのことをやりたいんですが、 (a==1 || a==42 || a==145) ←ここのとこを簡単に書く方法ってないですかね? 例えば (a==(1 || 42 || 145)) みたいな。(これじゃ当然無理ですけど) 何か方法があれば教えて下さい。よろしくお願いします。
- 658 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 15:46:14.83 ]
- bool check(int const a)
{ static const int checkers[] = {1, 42, 145}; for (int ic = 0; ic < sizeof(checkers) ? sizeof(* checkers); ++ic) { if (a == checkers[ic]) return true; } return false; } bool flag = check(a);
- 659 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 22:09:09.10 ]
- 最終的に吐き出されるバイナリが、結局、
(a==1 || a==42 || a==145) みたいなことになるんだろうから、 (a==1 || a==42 || a==145) で十分に簡潔と言えるんじゃなかろうか。 もちろん、そんなクジみたいな抽選をやたらとあちこちで実行してるなら、 全体的に読みやすいように、書き様はあると思うが。マクロとかで。
- 660 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 22:10:54.95 ]
- こうなら書けるな 発想の転換の一助になれば。
flag=false; select(i){ case 1: case 42: case 145: flag=true; }
- 661 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 22:25:07.23 ]
- << とか使う
- 662 名前:デフォルトの名無しさん mailto:sage [2012/04/14(土) 23:48:08.59 ]
- bool operator,(〜)とか使う
- 663 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 00:10:01.79 ]
- bool f(int a){
struct ck{ck(int a):v(a),t(false){}ck&operator,(int a){t=t||a==v;return*this;}operator bool(){return t;}int v;bool t;}; return ck(a),1,25,142; }
- 664 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 00:23:45.95 ]
- 可変長引数でチェック関数作るとか
- 665 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 08:09:44.01 ]
- flag = (a==1 || a==42 || a==145);
が、一番シンプルに見えるわけだがw
- 666 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 14:31:40.48 ]
- Perl6のJunctions風の何かを作るといいのかな
- 667 名前:デフォルトの名無しさん mailto:sage [2012/04/15(日) 21:22:35.70 ]
- D言語のlazy 相当の機能が有ればなあ
- 668 名前:543 mailto:sage [2012/04/18(水) 22:11:53.62 ]
- 0〜999の番号を10000の要素にランダムに割り当てるときに
各番号が10回ずつ(各番号が同じ回数という意味で)出てくるように割り振りたいのですが なにかいい方法ありませんか?
- 669 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:16:13.58 ]
- vectorに突っ込んでrandom_shuffle
- 670 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:20:46.95 ]
- >>669
そのような関数があったんですね。勉強になります! ありがとうございました。
- 671 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:28:39.71 ]
- 質問です
C言語でマイクから入力した音声を送信する方法 もしくはマイクから入力された音声がどこに保存されているかを教えてください
- 672 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 22:43:31.86 ]
- 環境も書かずになんて間抜けな質問を……
- 673 名前:デフォルトの名無しさん mailto:sage [2012/04/18(水) 23:00:22.03 ]
- 失礼しました
環境はbcpadです
- 674 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 00:00:32.77 ]
- WindowsならmmsystemだからWin32APIスレで聞いた方がいいだろ
- 675 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 06:51:33.03 ]
- >>674
情報ありがとうございます!
- 676 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 14:52:44.05 ]
- コマンド・ライン引数でargc と argv というのが伝統的に使われている
そうですが、それぞれの語源(何の略) か、教えてください。
- 677 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 15:05:36.01 ]
- argument count value
- 678 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 15:26:44.81 ]
- >>677
ありがとうございます!
- 679 名前:デフォルトの名無しさん mailto:sage [2012/04/19(木) 21:37:51.52 ]
- VC++をつかってC言語でLifeGameを書こうとしてみたのですが、
- 680 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 01:33:52.49 ]
- セルがモニタから飛び出して勝手に増殖し出してしまって、
- 681 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 02:54:49.21 ]
- |....,,__
|_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
- 682 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 03:00:54.75 ]
- 罠を張って待っていることも知らずに、
↑なーんてなことを書き出してしまって、
- 683 名前:デフォルトの名無しさん mailto:sage [2012/04/20(金) 04:06:50.55 ]
- 【そりゃないよドコモさん】ドコモが日本通信に提訴された経緯
weekly.ascii.jp/elem/000/000/084/84599/ ドコモは「必要な費用」と説明したとのことですが、その費用はそもそも算定式に含まれているはず、 というのが日本通信側の主張です。 このため日本通信が差額の支払いを一時停止したところ、ドコモ側は「接続を切断する」と回答。 結果、ユーザーへの影響を考慮して、日本通信側はドコモ側の要求どおりの支払いを続けている、 というのが今の状況です。
- 684 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:23:00.54 ]
- 宿題で出されたこの問題が分からないのですが、誰か教えてくれませんか。
1〜9までの連続する数字の間に和・差・積の演算子(+, -, *)を適当に入れて、 式の値がちょうど 100 となる例を挙げよ(10とおりだけ書け)。 たとえば、 1 + 2 * 3 * 4 * 5 + 6 * 7 - 8 * 9 = 91 というような計算をする。ただし、この例では式の値が91となるので答えではない。
- 685 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:33:39.44 ]
- このスレに何の関係が
- 686 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:35:50.34 ]
- ごめんなさい、宿題スレに書き直してくるので無視してください
- 687 名前:デフォルトの名無しさん mailto:sage [2012/04/24(火) 06:55:17.27 ]
- eval() を実装しろという問題だな
webサービスを呼ぶ、でもいい
- 688 名前:デフォルトの名無しさん [2012/04/25(水) 00:26:53.55 ]
- csvのデータを読み込み、このデータセットの平均値Ave を求めて
標準出力するCプログラムを書きたいのですがどうすればいいですか?
- 689 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 00:36:54.63 ]
- まず深呼吸します
- 690 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 07:58:46.21 ]
- 宿題レベルの質問に見えるが、csvに何が詰まってるかによるな(22,2Cの扱い)。
出題者が、データはこれな。って言ってきてないか。
- 691 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 14:26:18.67 ]
- 図書館でプログラミング作法を借りてくる
- 692 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 16:16:06.77 ]
- C言語で、できるだけ簡単な文法だけを用いて、「ある数列から重複している値があれば取り出す」という関数を作りたいのですが、どうすればいいのですか?
- 693 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 16:36:07.14 ]
- >>692
数列は長いか?(数万件) 数値範囲が予測できるか? 範囲が狭いか?(1~10など) 小数点以下も必要か? で方法が違う。
- 694 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 16:38:59.09 ]
- >>692
CSTLのsetを使う
- 695 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 16:52:07.30 ]
- 回答ありがとうございます。
数列は、int型で自由に入力したものになるので、長くなる可能性があります。 値の範囲は予測できません。 小数点は利用しません。
- 696 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 17:24:24.59 ]
- 要はエスパー待ちて事だな。
- 697 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 17:26:40.06 ]
- >>692
「重複している値があれば取り出す」とあるが、例えば「1,1,1,1,1」という数列があったとき、 1は1回だけ取り出されるのか、それとも4回取り出されるのか。
- 698 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 18:08:25.02 ]
- どっちでもいいじゃん
for (i=0; i<N; ++i) { IntSet_insert(tmp, data[i], &success); if (!success) { IntSet_insert(s, data[i], NULL); //1回だけの場合 IntList_push_back(l, data[i]); //複数回の場合 } }
- 699 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 18:21:15.51 ]
- 取り出すってどういうことを言ってるんだろうか
- 700 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 18:33:23.57 ]
- >>699
日本語の問題だな。 取り出す→Action 抽出、除外→Process
- 701 名前:デフォルトの名無しさん mailto:sage [2012/04/25(水) 18:46:10.92 ]
- 配列から取り出して元の配列の要素数を減らすのか、取り出したものを別の配列に入れて再利用するのか
|

|