1 名前:デフォルトの名無しさん (ワッチョイ 7fc9-G+K4) mailto:sage [2016/04/03(日) 00:22:24.07 ID:ZT/2NYWz0.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part123 echo.2ch.net/test/read.cgi/tech/1456040187/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
620 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/10(火) 10:10:28.85 ID:E+X0dc0Z0.net] プリミティブ型は値渡しだった気がする、数年前のこと。
621 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/10(火) 12:50:19.00 ID:iYvr3+wx0.net] 参照渡しはクラスだけ
622 名前:デフォルトの名無しさん (スプー Sdc8-wv7z) [2016/05/10(火) 13:05:23.01 ID:39a1ddzGd.net] template< typename T > void hoge() { [](){ T a{}; }(); } ラムダ式の中からTを使う事はできますか
623 名前:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6) [2016/05/10(火) 14:28:48.29 ID:xt6qowzE0.net] >>609 質問の意図がよく分からないけど https://ideone.com/MF3T4r 普通に使えるのでは?
624 名前:444 (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 15:30:29.67 ID:Jb8df6a5p.net] 444です メッセージBOXでTASKMODALを指定すれば動かなくなりましたので報告だけしときますありがとうございました
625 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/10(火) 18:38:39.38 ID:215vkzzCr.net] >>606 >>607 >>608 C#は基本的に(refを付けない限り)全部値渡しだが 何を言っているんだお前らは
626 名前:デフォルトの名無しさん (ワッチョイ b976-ymBj) [2016/05/10(火) 19:46:50.88 ID:URI7I2Cg0.net] 「参照型 値渡し」で検索しとけ
627 名前:デフォルトの名無しさん (スプー Sdb8-wv7z) mailto:sage [2016/05/10(火) 20:05:12.28 ID:QMa4CHQvd.net] よくわかんないけどT*とT*&みたいなもん?
628 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 20:24:20.24 ID:dn5a8gBPp.net] プログラムのCPU負荷を下げる方法はどうしますか? 特に重い処理をしていないにも関わらず、CPU負荷が100%近くになります。 対策をお願いします。
629 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/10(火) 20:27:23.22 ID:GH5TUzj80.net] nice 20 とか
630 名前:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6) mailto:sage [2016/05/10(火) 20:30:54.94 ID:3v8mTcBj0.net] >>615 本当に「特に重い処理をしていないにも関わらず、CPU負荷が100%近く」なら何かバグってる
631 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 20:43:15.13 ID:dn5a8gBPp.net] >>617 とある事情でwhileループで入力待ちしてるんですが 特に処理はしていないのに待機中にCPU100%になってますね…
632 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 20:46:30.52 ID:dn5a8gBPp.net] 一応、重くならないように ループには、1ループあたり1msの待機時間作っています
633 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/10(火) 20:46:51.93 ID:lywmyip50.net] 待てていないような気がしますね。
634 名前:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6) mailto:sage [2016/05/10(火) 20:48:47.48 ID:3v8mTcBj0.net] >>612 https://ideone.com/hqR9Ym
635 名前:デフォルトの名無しさん (ワッチョイ 5602-wv7z) mailto:sage [2016/05/10(火) 21:22:24.14 ID:O0lvE+VW0.net] >>619 なんで問題のコードをださないの? 無駄にレス増えるだけだと思うんだけど
636 名前:デフォルトの名無しさん (ワッチョイ 9c9d-APoh) mailto:sage [2016/05/10(火) 21:29:25.26 ID:
] [ここ壊れてます]
637 名前:VjIbGp3Q0.net mailto: >>622 質問の仕方にいちゃもんついたライブラリがどうたらの後だしQtの人だろ [] [ここ壊れてます]
638 名前:デフォルトの名無しさん (ワッチョイ 7d7b-7M79) mailto:sage [2016/05/10(火) 21:29:43.77 ID:AdrvoLMk0.net] まあ頭冷やして考えた方がいいんじゃねーの? コード出したら実際糞過ぎて叩かれるだけだと思われ。
639 名前:デフォルトの名無しさん (ワッチョイ 5602-wv7z) mailto:sage [2016/05/10(火) 21:31:42.01 ID:O0lvE+VW0.net] >>623 ワッチョイで一目瞭然
640 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 21:41:10.13 ID:dn5a8gBPp.net] >>620 待機時間を2倍の2msにして見ても、CPUが半分になるかと思ったらそれどころか全然減りませんがどうすればよいですか
641 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 21:54:48.65 ID:dn5a8gBPp.net] >>622 while(1) { ... int c = waitKey(1); if(c == 'q') break; }
642 名前:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6) mailto:sage [2016/05/10(火) 22:12:32.27 ID:3v8mTcBj0.net] >>626 答えは>>620 時間待ちさえ明らかにバグっててちゃんと待ててない 他の人も言ってるけどコードを晒せば?
643 名前:デフォルトの名無しさん (ワッチョイ 9c9d-APoh) mailto:sage [2016/05/10(火) 22:17:19.25 ID:VjIbGp3Q0.net] >>627 waitKeyってOpenCVの関数なのか。なら、スレあるのかは知らないがOpenCVスレで聞くのがいいだろ 俺、OpenCVは使ったことはないが、 opencv.jp/opencv-2svn/cpp/user_interface.html#cv-waitkey の注意 2にある動作条件 >HighGUI ウィンドウが少なくとも1つ存在し,それがアクティブな場合にのみ動作 これが守られてなんじゃないのか?
644 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/10(火) 22:23:32.56 ID:A1YVuqbS0.net] >>626 nanosleep使ってもある程度大きな値まではビジーループだぞ OSはそんなに小さなタイミングで割り込みなんて出来ないから
645 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/10(火) 22:34:59.20 ID:zxnDb8j/0.net] >>630 超どうでも良いけど、可能か不可能かで言ったら 約0.84マイクロ秒置き(1193182 Hz)の割り込みが来るように出来るようにハードウェアは組まれてるです。
646 名前:デフォルトの名無しさん (ワッチョイ 56c0-T8u2) mailto:sage [2016/05/10(火) 23:00:23.29 ID:yaG18+U20.net] スレッドの切り替えチャンスは与えたけど誰もいないので俺スレ頑張っちゃうよ
647 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/10(火) 23:06:07.16 ID:HVyJ1rA+0.net] >>631 ハードウェアもOSも限定せずにそんな保証できるわけないだろ
648 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/10(火) 23:18:12.87 ID:T8dqPhAzr.net] >>621 いきなりイミフなコードを貼り付けてどうした? 何か話さなきゃお前はただのアスペだぞ
649 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/10(火) 23:19:38.14 ID:zxnDb8j/0.net] >>633 ごめんよ。 でも8259互換チップが入ってないPC/AT互換マシンなんて今時あるのかい?
650 名前:デフォルトの名無しさん (ワッチョイ be9f-HMKq) mailto:sage [2016/05/10(火) 23:33:33.53 ID:7q8s7zNm0.net] 唐突にPC/AT互換マシン
651 名前:デフォルトの名無しさん (ワッチョイ 9c41-lMTc) mailto:sage [2016/05/10(火) 23:51:40.34 ID:5J1aLd4L0.net] PC/AT互換マシンって言いたいだけの奴いるよなwww
652 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/10(火) 23:54:10.15 ID:GH5TUzj80.net] 入力があるまでHALTする方法はないのか?
653 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/10(火) 23:54:27.58 ID:5EInyMQF0.net] >>634 値渡しじゃなくて参照渡しだってコードだろ 要するに>>612 は間違い
654 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/10(火) 23:56:27.95 ID:y6IvleFLp.net] >>628 コードは>>627 です >>629 ウインドウはちゃんとループ外で定義してありますし使い方は合ってるはずです >>630 ある程度はどれくらいですか? 100ms待たせたらCPU80%くらいまで減りましたが…
655 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/10(火) 23:59:19.74 ID:T8dqPhAzr.net] >>639 低能のお前にヒントをやろう 参照型と参照渡しを混同してはいけない そしてC#言語仕様5版 7.5.1 Argument lists を読んでこい
656 名前:Java言語仕様8版でもいいぞ [] [ここ壊れてます]
657 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/11(水) 00:00:38.44 ID:AJNn1ICv0.net] あ、そう…
658 名前:デフォルトの名無しさん (ワッチョイ 9c41-lMTc) mailto:sage [2016/05/11(水) 01:10:14.65 ID:GzlL/1jH0.net] 言語仕様がどうとか言う奴ってえてして仕事できないよなw 内の会社にもやたら、言語に関しては詳しいけど実際のコーディング、デバッグなんかは やたら遅い奴いるわw たぶん小さなサンプルプログラムばっかりしか書いたこと無いんだろうな
659 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/11(水) 01:21:35.07 ID:ubToLDC+0.net] >>640 多分CPUは、この無限ループを全力で実行しているんだと思うよ >通常のイベント処理ではこの関数を周期的に呼び出す必要があります. ってあるから、通常は時々呼び出しなさいということでしょ。
660 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/11(水) 01:27:59.88 ID:0F7keYqip.net] >>644 ありがとうございます。 そこで、CPUにこの無限ループを全力で実行させないようにする方法はないですかね?
661 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/11(水) 01:48:35.76 ID:ubToLDC+0.net] OSが何かにも寄るんでしょうkが、 Windows環境ならSleep()と言うのがあります。 Unix環境ならusleep()関数を使ってみては? waitKey()の説明を読む限り、この関数内でのタイムアウト時間指定ですよね。 ループ全体の中でwaitKey()が専有する時間が1msって事で、 ループのそれ以外の部分では、何の処理も行わず、再びwaitKey()に戻っているんでしょう。 おそらくSleep、usleep関数に渡す引数の値だけCPU占有率が減ると思います。 これは泥縄的な方法ですけどね。 できるなら、「イベント発生通知をOSから受け取る。それまではお休みする」が良いと思います。
662 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/11(水) 02:04:52.39 ID:TxG4e4qF0.net] C++11からchronoとthis_threadを使ったスリープが汎用的にアルヨ。 osまたぎたいならこれも視野に。 まぁ問題はそこじゃなさそうだけど。
663 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/11(水) 04:12:57.00 ID:AYk4CdLN0.net] MATAGI vs KIKORI。
664 名前:デフォルトの名無しさん (ワッチョイ 9c7b-SnbV) mailto:sage [2016/05/11(水) 07:33:54.29 ID:E3fj3Ww+0.net] ビジーループ(ポーリング)と、イベント(call back)では、イベントを使うべき ビジーループでは、CPUが占有されてしまう。 一方イベントでは、CPUを使わない
665 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/11(水) 14:29:08.71 ID:Hst0/UDE0.net] 賢いドライバーならカーブでは速度を落とすものです。 ところで、ポーリングで速度を落とす賢いプログラマはいないモノでしょうか。
666 名前:デフォルトの名無しさん (ワッチョイ f910-F7+X) mailto:sage [2016/05/11(水) 15:24:54.40 ID:GeTKo9910.net] >>645 そもそも「...」の部分の処理が重いんじゃないの? 処理一切無しでwaitKeyだけでも重いの?
667 名前:デフォルトの名無しさん (JP 0H0d-aZyM) mailto:sage [2016/05/11(水) 15:31:43.86 ID:l/Aku55rH.net] ゲーム系のフレームワークでありがちな ウエイト無しクソサンプルを真似たんじゃろ まともなものならドキュメントなりチュートリアルなりで説明があるはず コールバック型のイベント処理だって探せば出てくるんじゃないの
668 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/11(水) 16:24:44.34 ID:to/KEVVR0.net] クソサンプルてゲームならそれでええやろ
669 名前:デフォルトの名無しさん (JP 0H0d-aZyM) mailto:sage [2016/05/11(水) 16:35:01.05 ID:l/Aku55rH.net] 駄目だ駄目だ駄目だ
670 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/11(水) 16:50:01.24 ID:to/KEVVR0.net] >>654 一応聞いてやるけど何が?
671 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/11(水) 17:04:09.30 ID:Hst0/UDE0.net] >>655 ノートが熱くなって燃えてしまいました。 謝罪と賠償を要求します。
672 名前:デフォルトの名無しさん (ワッチョイ 9c41-lMTc) mailto:sage [2016/05/11(水) 18:03:39.93 ID:GzlL/1jH0.net] C++を開発するってどういうこと? Bjarne Stroustruはなにをしたの? MSやintel
673 名前:なんかにコンパイラを作って提供したって事なの? [] [ここ壊れてます]
674 名前:デフォルトの名無しさん (JP 0H0d-aZyM) mailto:sage [2016/05/11(水) 18:39:38.91 ID:l/Aku55rH.net] C++を発明した
675 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/11(水) 19:05:28.34 ID:5a6iax+r0.net] 糖質がまた幻覚を見たようだな 今日はまた一段とぶっ飛んでいる
676 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/11(水) 20:32:01.30 ID:FbDxsPeF0.net] >>657 最初にC++というものを考えた
677 名前:デフォルトの名無しさん (ワッチョイ 56c0-T8u2) mailto:sage [2016/05/11(水) 21:38:44.46 ID:Hbfyg6Vu0.net] int C=0; C++;
678 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/11(水) 21:55:30.78 ID:mridOWona.net] C with classes
679 名前:デフォルトの名無しさん (ワッチョイ 7d7b-7M79) mailto:sage [2016/05/11(水) 23:05:50.38 ID:rzhdH4Ry0.net] なぜ ++c でなくて c++ なのか。 それは c の間にやっておきたかった事があるから。
680 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/12(木) 00:49:34.70 ID:skSN1OPx0.net] ++cよりc++の方が速いかもしれないから
681 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/12(木) 01:54:44.22 ID:V7G0arWW0.net] 後置はイテレータだと副作用が出るけどな
682 名前:デフォルトの名無しさん (ドコグロ MMef-/3cR) mailto:sage [2016/05/12(木) 07:19:43.34 ID:H+I8h1G8M.net] >>664 そんなケースあったっけ?
683 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/12(木) 08:51:12.00 ID:N3lYKGUd0.net] >>664 勘違いしちゃったのかなー?
684 名前:デフォルトの名無しさん (ブーイモ MM1f-/3cR) mailto:sage [2016/05/12(木) 08:53:10.66 ID:4BYM8qUWM.net] c++プログラマなら使えるところは常に前置だろjk
685 名前:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0) mailto:sage [2016/05/12(木) 08:59:45.88 ID:rpWGZ4yl0.net] >>666-667 後置はアウトオブオーダー実行が上手く働く可能性が高い
686 名前:デフォルトの名無しさん (ワントンキン MM9f-/3cR) mailto:sage [2016/05/12(木) 09:05:01.86 ID:c1sDAwi0M.net] いやいや…
687 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 09:18:46.59 ID:BxH3pzV60.net] ttp://cpp.aquariuscode.com/preincriment-vs-postincriment この件かな
688 名前:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0) mailto:sage [2016/05/12(木) 09:33:56.48 ID:rpWGZ4yl0.net] >>671 本来は後置++の方が等速あるいは速い、但しstd::iteratorに限っては前置++の方が速い そのページはstd::iteratorでも前置++が速いと言う主張だろ
689 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 09:48:47.40 ID:BxH3pzV60.net] >>672 数行のまとめすら読めないのか
690 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 09:51:14.28 ID:BxH3pzV60.net] >>672 と、思ったらそれ以上のバカだったのかな? いいから後置の方が早い理由を示せよ
691 名前:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0) mailto:sage [2016/05/12(木) 09:58:38.72 ID:rpWGZ4yl0.net] >>673 誤字を鬼の首取ったように突っ込むな 誤 そのページはstd::iteratorでも前置++が速いと言う主張だろ 正 そのページはstd::iteratorでも後置++が速いと言う主張だろ
692 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 10:02:26.01 ID:BxH3pzV60.net] >>675 読んだらそんな結論にならないと思うんだけど
693 名前:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0) mailto:sage [2016/05/12(木) 10:03:07.66 ID:rpWGZ4yl0.net] >>674 取り敢えずキミは、pentium以降のCPUの高速化技術を検索して、理解してから出直しなさい。
694 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/12(木) 10:10:22.66 ID:3WPpAXGg0.net] 特定のCPUを持ち出す必要があるんですか?
695 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 10:11:24.20 ID:BxH3pzV60.net] >>677 取り敢えずキミは、提示された資料を読めるようになってから出直しなさい。もう手遅れかもしれんけど。
696 名前:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0) mailto:sage [2016/05/12(木) 10:12:01.44 ID:rpWGZ4yl0.net] >>676 そのページが参照してる > インクリメントの前後置速度比較 のソース読んでから出直す事だ > ゲームエンジンアーキテクチャ第二版 プレインクリメント vs ポストインクリメント の主張を全然反映してないベンチマーク引用してるから、理解力が不足してると迷宮に囚われる
697 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/12(木) 10:13:08.97 ID:DRM/51U40.net] なるほどなー。 ldしてincしてstoreしてからじゃないと++fooの結果は使えないけど foo++ならldするだけで使えるって事か。 確かに
698 名前:、主作用の方の値を使いたいなら後置の方が実行速度が高くなりうるな。 ちょっと試してみた バージョンはgccが4.8.4、clangが3.7.0、環境はXubuntu on VMWare on Win7 on i7-5820k 3.3GHz https://gist.github.com/pixie-grasper/d71c6e8ef13992c426559256e520beca まとめると、clang/gccで-O0/-O3について比較したら gcc -O0については前置より後置の方が3%くらい速くなったけど 他では後置より前置の方が速くなった。 結論:前置より後置の方が速くなる事はある。 [] [ここ壊れてます]
699 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 10:17:36.81 ID:BxH3pzV60.net] >>681 それ同じ処理じゃねえから、ベンチマークとして不適切
700 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/12(木) 10:21:09.51 ID:DRM/51U40.net] >>682 うん、確かに10億分の1だけ前置のほうが早く終わる処理になってるけど それでも後置のほうが3%くらい速くなるケースが実際にあった。 10億分の1と3%の比較は出来る?
701 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/12(木) 11:04:31.19 ID:BxH3pzV60.net] >>683 いや、俺が悪かった。 後値を前値に単純に置き換えられるような処理で後値の方が早くなるケースなんてほぼないもんな。
702 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/12(木) 11:28:30.44 ID:DRM/51U40.net] >>684 そうなー。 後置を前置で単純に置き換えれるって事は副作用しか使ってないわけで 副作用しか要求しておらず、コンパイラが最適化をサボる場合には、 余計なインスタンスの生成が走りうる後置よりin-placeな前置の方が速い。 但し、intなんかのbuilt-inな型はコンパイラが最適化してくれる &そうでない型も処理が見えてればコンパイラが頑張って最適化してくれるので 副作用しか使わなければどっちでも同じ機械語列になるって事は書いてあるね。 でも>>671 の先から引用を引用すると 「しかし、値が使われる場合、CPUのパイプラインでストールを生じさせないので、 ポストインクリメントの方が優秀である。 したがって、プレインクリメントの動作が絶対に必要である場合を除いて、 必ずポストインクリメントを使う習慣を身につけたほうがよい。」 とあって、パイプラインストールが起こりうるなら後置のほうが良い事もあるってのが元々の論旨だから もっと露骨にパイプラインストールが起こるようにコンパイラの最適化を邪魔したら -O3しても後置のほうが速くなったわ https://gist.github.com/pixie-grasper/6d9c560601f191df0dd205911866cc1e
703 名前:デフォルトの名無しさん (ミカカウィ FF6f-Wsqh) mailto:sage [2016/05/12(木) 14:57:11.64 ID:oq6xjtF8F.net] 質問です。 class data{ public: int score; }; class test{ public: std::vector<data> *v; }; void main(){ test abc; test *d = &abc; (*(d->v))[1].score = 1;// } (*(d->v))[1].score;の他に書き方無いでしょうか? アロー演算子を2重に使うとかやってみましたができませんでした。 配列を使う方法と、[1]をポインタ演算にして書く方法があれば両方教えてほしいです。
704 名前:デフォルトの名無しさん (ワッチョイ cb3c-EA1W) mailto:sage [2016/05/12(木) 15:55:07.83 ID:MyP06V7u0.net] d->v->data()[1].score = 1; d->v->at(1).score =1; // ただし境界チェックが入る (d->v->begin() + 1)->score = 1;
705 名前:デフォルトの名無しさん (ワッチョイ ef9f-Wsqh) mailto:sage [2016/05/12(木) 16:02:27.95 ID:LsrVgu920.net] >>687 ありがとうございました。そういうやり方があったんですね。
706 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/12(木) 16:02:54.52 ID:e6oRkxgP0.net] そんなことよりなんでtest::vがポインターなんだよ newしてないし、[1]にはアクセスできないし、それ動かないよ いずれにせよ初心者歓迎スレ案件だな
707 名前:デフォルトの名無しさん (ワッチョイ ef9f-Wsqh) mailto:sage [2016/05/12(木) 16:15:54.25 ID:LsrVgu920.net] あ、質問スレ他にあったんだ。ここだと思った。
708 名前:デフォルトの名無しさん (ワッチョイ 237b-/3cR) mailto:sage [2016/05/12(木) 17:49:55.66 ID:e7uDPICZ0.net] これってよく言われる前置か後置かの問題じゃないでしょ。 変数更新タイミングを使用直前にするか更新可能な一番早いタイミングで行いかの違いで、アルゴリズムの変更を伴う可能性が高い。 その場合後者の方がいいが、コピーして前置でも結果は同じ。 前置か後置かで前置がいいと言われているのは、あくまで単に+1したいってとき。所謂forの3つめ
709 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/12(木) 18:41:37.34 ID:V7G0arWW0.net] >>686 いちいちポインタに直すメリットは?
710 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) [2016/05/12(木) 19:09:46.88 ID:V8j8LQpxd.net] メリットデメリットなんて問題にしてないから
711 名前:デフォルトの名無しさん (ワッチョイ 033c-hNIp) [2016/05/12(木) 19:23:08.71 ID:wtk4J6jy0.net] ポインタの方がカッコイイじゃないですか。 頭良さそうで。
712 名前:デフォルトの名無しさん (ワッチョイ dbb1-yliF) [2016/05/12(木) 20:19:14.11 ID:u4rYymiL0.net] (d->v)とか最高に頭悪そうだな 流れは違うが前置と後置がわかってない、以前に憶える気がない
713 名前:684 (ワッチョイ cbcf-Wsqh) mailto:sage [2016/05/12(木) 20:25:17.26 ID:6ncal6FL0.net] >>689 >そんなことよりなんでtest::vがポインターなんだよ 要素数100万くらいのvectorが10個くらいあって、 必要なvectorにいちいちポインタを書き換えてる、じゃダメ? 入門書以外で他人のコード読むことないからぐちゃぐちゃやってる。
714 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/12(木) 20:36:16.87 ID:e6oRkxgP0.net] >>696 ごめん。何言いたいのか分からない 1M要素くらいの配列が10個くらいあるからってなんだって言うんだろう?
715 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/12(木) 21:04:50.54 ID:DRM/51U40.net] >>696 生のポインタなんて使わずにstd::shared_ptrを使え。 class test{ public: std::shared_ptr<std::vector<data>> v; }; d->v = std::make_shared<std::vector<data>>(1000000);
716 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/12(木) 21:12:08.75 ID:k4tl7img0.net] >>697 俺も>>696 が何言いたいのかわからんが、 >>686 の質問からして初心者だろうから、あんまり突ついてもって思う。 少しレベル上がると、今のコード見て恥ずかしい・頭悪いやり方してたんだ って思うんじゃないか。
717 名前:デフォルトの名無しさん (ワッチョイ 7f13-Q4kq) mailto:sage [2016/05/12(木) 21:15:46.74 ID:R6+MliT10.net] >>663 後置インクリメント,前置デクリメントは68系の慣習
718 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/12(木) 21:35:16.27 ID:xhYAhim/0.net] Z-80のpopとpushもそう
719 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/12(木) 21:36:56.40 ID:xhYAhim/0.net] ていうか今日日のコンパイラが インクリメント前のcの値を使わないケースでも c++を++cと違うコードに落とすとはにわかには信じ難い この世には知らないほうが幸せなことがあるのかもしれない…
720 名前:デフォルトの名無しさん (ワッチョイ 2310-0YMq) mailto:sage [2016/05/12(木) 22:01:48.84 ID:2OPIh6as0.net] >>686 d->v->operator[](1).score = 1;