16/05/02 02:48:14.57 LofVFQLs0.net
std::max<int>({1,2,3}); を使おう。(キリッ
363:デフォルトの名無しさん (ワッチョイ 0bdc-VEo+)
16/05/02 05:44:22.58 8/8nC51l0.net
>>342 の MinMax:: に乗せてくれ(車輪の話だけに)。
>>347 >>355
max()は、引数に同じ値が2つ与えられるとダメなのね。
n1 = 2, n2 = 2, n3 = 1 といった場合。
比較演算子を > でなく >= にすればいいのかな。
(小手先で修正してまで使うとも思えないけど一応)
>>354 の INT_MIN の符号反転の問題はいつも見逃すなぁ。
intが32bitもあると「億なんてデカい値は使わないし…」で
境界条件を考慮し忘れる。
おかげで俺の部屋は悪魔ハーレム状態。
364:デフォルトの名無しさん (ワッチョイ ab51-JnPK)
16/05/02 06:18:00.27 zu7MqjLX0.net
仕様で「入力がINT_MINの場合は正しい値を返さない」とするだけでプログラムがすっきり。
365:デフォルトの名無しさん (ワッチョイ 2f94-Huko)
16/05/02 10:03:31.77 lijKCiQb0.net
342です
皆さんありがとうございます.一応参考サイトは以下です(若干プログラムが違いますが)
URLリンク(cpp-lang.sevendays-study.com)
366:デフォルトの名無しさん (ワッチョイ 13e7-11Ad)
16/05/02 10:30:56.03 LofVFQLs0.net
ぶー。検索関係なかった。Orz
367:デフォルトの名無しさん (ワッチョイ 3bb4-OoOA)
16/05/02 16:31:01.42 1reykZlZ0.net
std::unordered_set の要素をイテレータで取ろうとしたら自動で const 修飾されます
多分オブジェクトの内部状態が変わることでハッシュ値が変わることを考えてのことだと思うんですが、
いまの場合ハッシュ関数を自分で定義していて、操作の前後でハッシュ値が変化しないことは
(自分には)わかっています。
これをコンパイラに教えてあげるにはどうすればいいんでしょうか?
368:デフォルトの名無しさん (ワッチョイ 3763-hBSK)
16/05/02 16:56:44.90 IsbB/noh0.net
諦める
そしてconst_castを使う
369:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 17:29:08.43 V/Rz0lGL6.net
カレントディレクトリの設定が上手くいかないです。
test1の下にtest.exeとディレクトリtest2
370:があるとして、 test1.exeで SetCurrentDirectly(”test2”) ofstream fout1(”test.dat”) fout1 << ”test” << endl; としても、test.datがtest2の下ではなく、test1の下に出来てしまいます。どうすればtest2の下に出来ますか?
371:360 (ワッチョイ 3bb4-OoOA)
16/05/02 17:48:25.88 1reykZlZ0.net
>>362
ありがとうございます
結局 mutable にして切り抜けました
372:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV)
16/05/02 17:50:59.68 GdZkeqisK.net
>>363
"test2"は相対パスだから、現在のディレクトリを確認しろ。
また、戻り値とエラーコードもチェックしろ。
373:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 18:04:07.30 V/Rz0lGL6.net
>>365
ありがとうございます。
確認してみたところ、falseが帰ってきていました。
そして、getcurrentdirectlyして表示してみたところ
C
とだけ表示されました。
Cドライブの直下ということですか?
それだと、C:\と出そうなものですが…
374:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV)
16/05/02 18:18:14.94 GdZkeqisK.net
>>366
おそらくUnicode文字列とANSI文字列の指定が間違っている。
型に関する警告が出ていないか確認せよ。
375:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV)
16/05/02 18:29:59.21 GdZkeqisK.net
Unicode文字列(いわゆるワイド文字列)のリテラルは先頭にLを付ける。WCHAR型の配列またはポインタになる。
例) L"Unicode"
Unicode APIは関数名の最後にWが付く。ANSI APIはAが付く。
例) GetCurrentDirectoryW
Unicode文字列とANSI文字列を自動的に切り替えるにはリテラルを
TEXT( )で囲む。TCHAR型の配列またはポインタになる。
376:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV)
16/05/02 18:40:56.68 GdZkeqisK.net
ANSI文字列を指定すべきところにUnicode文字列を指定することはできない。逆も同様。
例えば、printfの%sにワイド文字列を指定することはできない。
警告が出るか、分かりにくい論理エラーの原因になる。
377:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 18:44:54.84 V/Rz0lGL6.net
>>367
ありがとうございます。
確認してみると、確かに警告が出ていました。
なので、
SetCurrentDirectly(”test2”)
の部分を
SetCurrentDirectly((LPCWSTR)”test2”)
としてみると警告が消えましたが、結果は変わりませんでした。
378:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV)
16/05/02 18:47:42.10 GdZkeqisK.net
SetCurrentDirectoryA("test2");
SetCurrentDirectoryW(L"test2");
SetCurrentDirectory(TEXT("test2"));
379:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV)
16/05/02 18:57:39.76 GdZkeqisK.net
配列や文字列リテラルを型キャストしても、型が変わるだけで、
中身のデータレイアウトが変わる訳ではない。
文字列を柔軟に扱いたいならATLとかMFCなどの外部ライブラリを使うことになる。
380:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:04:58.94 V/Rz0lGL6.net
>>372
ご指摘の通りで、無事に解決しました。
何度もありがとうこざいました。大変参考になりました。
381:デフォルトの名無しさん (ワッチョイ a77b-1+8h)
16/05/02 19:07:51.78 btgv3pKW0.net
>>363
test2ディレクトリをどこに作りたいのか知らないけど
絶対パスで指定しなきゃダメ
起動時のカレントディレクトリがどこになってるかについて仮定しちゃいけない
382:デフォルトの名無しさん (ササクッテロ Spe7-ZWIR)
16/05/02 19:19:38.69 eom7L+e5p.net
.dllの配置場所ですが、
通常だと.exeと同じ階層に置いておかないと呼んでくれませんよね?
しかし、.exeのショートカットを作成してプロパティから作業フォルダーを指定すればそこから読んでくれるようです。
この作業フォルダーの指定をプログラム中で行う方法はありませんか?
vc14で、デバックモードで作業ディレクトリを指定の設定ならあるのですが、リリースした時の設定方法が分かりませんでした。
383:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:21:00.96 V/Rz0lGL6.net
ちなみにdllは環境変数Pathに入っていないものを指定する場合です。(配布するときなど)
384:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:25:12.54 V/Rz0lGL6.net
>>374
test2は最初からtest1の下に用意されているものです。
絶対パスは、配布する場合などに使えないので相対パスで指定の方法を考えていました。
今は教えてもらった通りで動いていますが、動かなくこともありますか?
385:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV)
16/05/02 19:29:01.28 GdZkeqisK.net
【ディレクトリ・パス関連のAPI(テストに出るかも)】
GetCurrentDirectory
SetCurrentDirectory
GetModuleFileName
GetWindowsDirectory
GetSystemDirectory
GetTempPath
GetTempFileName
GetFullPathName
SHGetSpecialFolderLocation
SHGetSpecialFolderPath
SHGetPathFromIDList
386:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV)
16/05/02 19:31:57.84 GdZkeqisK.net
このGetModuleFileName を使えば、読み込んだDLLのフルパスや現在実行中のEXEのフルパスが得られる。
387:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:41:24.27 V/Rz0lGL6.net
>>379
何度もすみません。
exeの方の使い方は分かりましたが、
.dllのフルパスを取得してもどうすればいいのか分かりません。
調べると、.dllもカレントディレクトリから呼ばれる、とあったので、プログラムでsetcurrentdirectlyをしたついでに、.dllも読み込んでくれるかと新しいディレクトリの方に.dllを全部移してみたのですが、dllがないというエラーが吐かれました。
388:デフォルトの名無しさん (ワッチョイ ef9f-qtmS)
16/05/02 19:49:22.82 rwpIh2xK0.net
>>375
遅延読み込みするDLLを除いて通常の方法ではmain/WinMain関数に
制御が渡った時点でDLLのロードは終わって居るのでプログラムから制御するには
かなり特殊な手段を用いることになる
⇒ だから一般的にはやらないし、無理って言う人も居る
あと、スレ違いだから
389:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:57:48.05 V/Rz0lGL6.net
>>381
ショートカット作成のプロパティから簡単に出来るので、プログラムでも簡単に出来るかと思ったのですが、難しいのですか…
スレ違いなのは分からずすみませんでした。
よければ、どこのスレに行けばいいのか分かりませんので教えて貰えますでしょうか?
390:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV)
16/05/02 19:58:23.64 GdZkeqisK.net
スレチなのでスレ誘導します↓
Win32API質問箱 Build122
スレリンク(tech板)
391:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/02 19:58:58.17 3YV7E0Ft0.net
>>377
>>374 はアホだから気にしなくていい
392:デフォルトの名無しさん (ガックシ 068f-ZWIR)
16/05/02 19:59:04.30 V/Rz0lGL6.net
>>383
ありがとうございます、移動します。
お騒がせしましたどうもすみません。
393:デフォルトの名無しさん (ワッチョイ a77b-1+8h)
16/05/02 20:31:02.13 btgv3pKW0.net
>>384
別に決め打ちの絶対パスで指定しろとは言ってないからね
そう解釈したならアホはお前
実行ファイルからの相対パスを指定したいならGetModuleFileNameで実行ファイルのパスを取って
目的とするファイルの絶対パスを作るのが定石
394:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/02 20:59:05.00 3YV7E0Ft0.net
>>386
> 起動時のカレントディレクトリがどこになってるかについて仮定しちゃいけない
がバカって言われていることも理解できてないのかよ...
395:デフォルトの名無しさん (ワッチョイ 2f57-Huko)
16/05/02 20:59:28.28 B7fwjF4l0.net
コロン二つはstd::cinのように名前空間で区別するために使いますが、これはクラスで区別するときにも使うのですか?
クラスtestで、void test::sample(){...}の様に、です。
396:デフォルトの名無しさん (ガラプー KKb7-09nV)
16/05/02 21:01:18.03 GdZkeqisK.net
>>388 Yes.
397:デフォルトの名無しさん (ワッチョイ a77b-1+8h)
16/05/02 21:06:07.95 btgv3pKW0.net
>>387
で?仮定していいとでも思ってるの?
「バカって言われてる」ってそんなバカなこと言ってるのはお前しか見えないけどなw
398:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV)
16/05/02 21:11:40.51 GdZkeqisK.net
CreateProcessやショートカットの設定でexe起動時のカレント
ディレクトリーを変更できることは、知っておいても損しないだろう。
399:デフォルトの名無しさん (ワッチョイ 2f57-Huko)
16/05/02 21:15:09.99 B7fwjF4l0.net
>>389
ありがとうございます
400:デフォルトの名無しさん (ワッチョイ 3f56-hBSK)
16/05/02 21:26:05.14 14Ao2YKq0.net
>>388
一応、呼び方は「スコープ解決演算子」な
URLリンク(msdn.microsoft.com)
401:デフォルトの名無しさん (ワッチョイ 2f57-Huko)
16/05/02 21:32:28.67 B7fwjF4l0.net
おお、ありがとうございます
402:デフォルトの名無しさん (ワッチョイ 2742-OoOA)
16/05/02 21:32:59.60 IfsZ2QOP0.net
このやりとりって、Windows限定なのか、それともOSを限定せずにプログラム一般での話なのか
どっちなの?
403:デフォルトの名無しさん (オッペケ Sre7-hBSK)
16/05/02 21:35:36.19 zmzMdNqXr.net
Windowsとそれ以外で何か事情がかわるのだろうか
404:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/02 21:35:54.15 3YV7E0Ft0.net
>>390
誰も仮定してないんだが...
マジでバカなの?
405:デフォルトの名無しさん (ワッチョイ a77b-1+8h)
16/05/02 22:14:34.12 btgv3pKW0.net
>>397
少なくとも質問者の>>363は仮定してるだろ
もうお前はいいよ
406:デフォルトの名無しさん (ワッチョイ 2742-OoOA)
16/05/02 22:33:31.86 IfsZ2QOP0.net
何か知らないOS環境でもあってさ、そこでの動きが標準的な物と違っていて
それを根拠に、仮定するのは誤りだと結論を出してくるとか、ありそうだし
407:デフォルトの名無しさん (ワッチョイ 3763-hBSK)
16/05/02 22:45:30.28 IsbB/noh0.net
>質問者の>>363は仮定してるだろ
>>397の意図は不明だが、これは言葉のすり替えだな
「誰も」とは「俺は言ってない」ぐらいの意味だろう
408:デフォルトの名無しさん (ワッチョイ a77b-1+8h)
16/05/02 23:25:56.25 btgv3pKW0.net
いやいや「誰も」=「俺は」こそ言葉のすり替えだな
>>397みたいな何を言いたいのかすら分からないイチャモンつけるような
明白なバカ・ドジ・マヌケが何考えてようがもうどうでもいいよ
409:デフォルトの名無しさん (ワッチョイ cb7b-olYR)
16/05/03 00:46:50.12 yoJxNR5i0.net
カレントディレクトリがどこになってるか仮定しちゃいけないってどういう事?
410:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/03 06:11:23.04 m0WSkRh/0.net
>>402
> カレントディレクトリがどこになってるか仮定しちゃいけないってどういう事?
絶対にダメと言うわけじゃない
ただ必要もないのにカレントディレクトリがどこかにあることを仮定して作ると当然その場所にないとうまく動かないから使い辛いってこと
ちなみに >>363 はカレントディレクトリの設定についての質問で「起動時の」カレントディレクトリについてはなんの仮定もおいてない
411:デフォルトの名無しさん (ワッチョイ cb7b-olYR)
16/05/03 06:32:35.85 yoJxNR5i0.net
それって仮定しちゃいけないとかいう話じゃなくて、カレントディレクトリがシステムによってどう設定されてるか理解すべきって話じゃないの?
412:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/03 07:08:25.20 m0WSkRh/0.net
>>404
何を言ってるのかさっぱりわからん
カレントディレクトリなんて >>391 の言うようにショートカット等でも変更できる
一時的に特定のカレントディレクトリで起動するためにコマンドプロンプトから実行したりもできる
413:デフォルトの名無しさん (ワッチョイ cb7b-olYR)
16/05/03 09:06:38.37 yoJxNR5i0.net
理解出来ないならいいですわ
414:デフォルトの名無しさん (ワッチョイ 3763-hBSK)
16/05/03 09:44:09.25 WLZfBkZE0.net
>>405
>>404は>>403の後半が読めていなくて「仮定」の単語に反応したようだ
415:デフォルトの名無しさん (ワッチョイ cb7b-olYR)
16/05/03 09:59:16.67 yoJxNR5i0.net
>>407
そりゃ質問がそうだからな、返答にそれを期待するのが当たり前
416:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/03 11:14:03.25 m0WSkRh/0.net
>>407
>>403 の後半は >>402 に関係しないから読み飛ばしてもらっていいよ
ただ前半読んで >>404 の質問出るのが意味不明
>>405 に書いたように起動時のカレントディレクトリはどうとでも設定できるから
> カレントディレクトリがシステムによってどう設定されてるか
って言われても、はあ?
としか返せんし、そもそも元の話は起動されたプログラムの話だし
417:デフォルトの名無しさん (ワッチョイ 6f3c-1woS)
16/05/03 19:39:34.60 G9XEXQGe0.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrent(Covenant)が活発な情報交換・交流コミュニティでオープンソース開発されています(プログラマー募集中)
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise氏)がそういう人と話したいそうなので、よろしければツイートお願いします<(_ _)>
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできない情報発信好きアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネ
418:クションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 6
419:デフォルトの名無しさん (ワッチョイ cb7b-olYR)
16/05/03 20:03:21.71 yoJxNR5i0.net
>>409
起動時のカレントディレクトリがどうとでも設定できるのと仮定しちゃいけないが繋がらないのよ
ユーザーが作業中のディレクトリと仮定しないとrmとかlsとか基本的なコマンドすら実装出来んぞ
420:デフォルトの名無しさん (ワッチョイ cfe5-6p9G)
16/05/03 20:15:22.49 Ga2JkeKt0.net
このところずっとカレントディレクトリの話題ばかりだな。飽きた
421:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK)
16/05/03 20:34:36.80 m0WSkRh/0.net
>>411
> 起動時のカレントディレクトリがどうとでも設定できるのと仮定しちゃいけないが繋がらないのよ
えっ?
ユーザーがどうとでも設定できるからどこかに固定的に設定してるって思っちゃダメ
ってだけの話なんだが理解できないの?
> ユーザーが作業中のディレクトリと仮定しないとrmとかlsとか基本的なコマンドすら実装出来んぞ
はあ、そうですね...
422:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA)
16/05/03 22:10:52.96 TF5VRcqZ0.net
これまでの流れに参加してなかったけどDllMainでGetModuleFileNameを呼び出せばいいことはわかった。
Dllがシンボリックリンクのときはリンク元じゃなくてそのファイルのパスが返ってくることもわかった。
423:デフォルトの名無しさん (ワッチョイ 3763-hBSK)
16/05/03 22:16:37.60 WLZfBkZE0.net
へー、kwsk
424:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA)
16/05/03 22:38:09.58 TF5VRcqZ0.net
いや単に初めて使った感想というだけで...
425:デフォルトの名無しさん (スプー Sdaf-x9NC)
16/05/04 13:12:57.15 opeX4EM+d.net
もっとそういうdll関連の勉強したいんだけどいい資料ってない?
msのドキュメントって断片的でピンとこないことご多いんだ
英語でもいいぞ
426:デフォルトの名無しさん (オッペケ Sre7-hBSK)
16/05/04 13:22:50.71 49qgq2vTr.net
むしろ日本語のドキュメントは読んではいけない
427:デフォルトの名無しさん (ワッチョイ 137b-ohpd)
16/05/04 13:57:04.66 8Bwnd+Rb0.net
MSのドキュメント(Dynamic-Lunk Library Functions)全部読む
パラメーターの意味まで全部読む
428:デフォルトの名無しさん (ワントンキン MM6f-hBSK)
16/05/04 14:04:17.38 ThMOcBqYM.net
dllmainとか書いたことない
VisualStudioならターゲットプロジェクトをdllにして、__declspec(dllexport)でエクスポートするだけだろ
まぁ実際はVisualStudioが裏でdllmainを作ってくれてるんだろうけど
429:デフォルトの名無しさん (ワッチョイ b730-OoOA)
16/05/04 14:16:57.26 qX1/u2G+0.net
定型処理やりたいなら便利だけど
それ以外なら使わないかもね
430:デフォルトの名無しさん (ワッチョイ ef9f-qtmS)
16/05/04 14:51:19.35 buqbh7+Y0.net
スレチが分からない程度の奴には難しいと思う
431:デフォルトの名無しさん (アウアウ Sa27-7WOp)
16/05/04 18:21:57.24 lMLuHG3fa.net
>>419
読みにくい! PDFで下さい! 印刷して読みます!
432:デフォルトの名無しさん (ワッチョイ 137b-ohpd)
16/05/04 19:13:29.48 8Bwnd+Rb0.net
>>423
1ページ5000円で変換してやるよ
433:デフォルトの名無しさん (ワッチョイ 57cb-OoOA)
16/05/04 19:19:40.35 D8cbd8TW0.net
印刷したのをメールで送ってやる
434:デフォルトの名無しさん (ワッチョイ 13f8-Ke/D)
16/05/04 19:31:12.53 p+LvbHBp0.net
保護されたPDFが届く図
435:デフォルトの名無しさん (ワッチョイ ff73-2IYS)
16/05/05 13:30:55.57 KKWEgRGW0.net
文字列で学ぶC++入門
URLリンク(qiita.com)
vs2015で少し勉強しています
strcat_s(str,len+1,s.str);
を使用して文字列をつないでいます
strcat_sの説明にstrの格納領域とs.strの格納領域に重複がある場合
動作は不定ですとあります
自己複写
mystr a="abc";
a+=a;
はエラーで停止したので対処コードを書きました
重複がある場合素直にエラーで停止することにお任せでよいかな?
呼び出しする方の使い方が悪いってことで
436:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/05 13:47:53.97 O83ZUOpH0.net
>>427
仕様はこっちからどうこう言うべきじゃないけど、できないならできない反応をするべき。
エラー値返すとか例外投げるとか。
437:デフォルトの名無しさん (ワッチョイ 400b-Xnmr)
16/05/06 00:22:14.99 uBaztVrf0.net
>>427
strcatは文字連結というより
ただのメモリの範囲コピーであることを考えれば
メモリ領域を重複させるのは意味不明でお菓子な動作を引き起こすことは常識的にわかる
それに対してmystrのa+=a;はaが文字列オブジェクトを名乗るなら
a=
438:デフォルトの名無しさん (ワッチョイ 400b-Xnmr)
16/05/06 00:23:49.40 uBaztVrf0.net
切れた
a="abcabc"となるのを期待するのがふつう
なので対処コードを書くべき
439:デフォルトの名無しさん (スプー Sdb8-wv7z)
16/05/06 01:23:00.59 U/b+V/yed.net
template< typename A, typename B > using hoge = A< B >;
こうしたいのですができません。
いい方法教えてください
440:デフォルトの名無しさん (ワッチョイ bd7b-fQUW)
16/05/06 04:40:09.49 uf2wlWDJ0.net
やりたいのは template template parameters かな
URLリンク(ideone.com)
441:デフォルトの名無しさん (ドコグロ MM74-wv7z)
16/05/06 05:19:27.01 vu9mhOpwM.net
a += a; なんて未定義動作にしか見えないんだけど...
442:デフォルトの名無しさん (ワッチョイ bd7b-ecJ+)
16/05/06 05:44:36.56 uf2wlWDJ0.net
>>433
そう?
std::stringは普通に動くよね?
実装上の問題もないし
443:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/06 08:25:16.93 dFoYv6n+0.net
○ a += a;
× a += a.c_str();
444:デフォルトの名無しさん (ワッチョイ ff73-xz+g)
16/05/06 12:31:28.89 v84XfFkE0.net
>>427
文字列で学ぶはとても勉強になっています
あとは、うろ覚えの状態でカンニングしないように
mystrを自分でコーディングしてみる
基本的なエッセンスがギュって詰まってる
テンプレート機能とかは別の教材さがします。
445:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 16:38:31.12 W8QBH6Wip.net
main(){
loop1();
while(1){
loop2の処理
}
return;
}
void loop1(){
while(1){
loop1の処理
}
}
のようにした時に、関数loop1の最中に並列でloop2の処理に向かってしまうようです。
loop1を呼んでいる最中に進まないようにする方法はありませんか?
446:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 16:43:28.12 W8QBH6Wip.net
ちなみに補足すると、loop1は特定のキー入力でbreakします
そのキー入力でbreakするまではloop2に入って欲しくない、ということです。
447:デフォルトの名無しさん (ワッチョイ ff73-5iF2)
16/05/06 17:30:16.10 v84XfFkE0.net
c++だよね、普通にブレークポイント入れて動作確認したら一発ちゃう
並列なライブラリでも使っているの??
448:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/06 17:33:14.52 zXXHgXCN0.net
forkでもしない限り並列化せんだろ
449:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 18:01:27.30 W8QBH6Wip.net
すいません、よく確認するとloop2に入っているのではなく、
ボタンコールバック(loop2で使う)を拾っているだけで実際にはloop2には入っていませんでした。
で、このコールバックをloop1の最中に拾われるとエラーになるんですけどどうすればいいですか?
loop1はいわゆる確認ダイアログ的なやつで、無限ループにしてあって、マウスコールバックで特定領域をクリックすると抜け出すようになってるんですけど
このループの最中に他のボタンコールバックを無効にするにはどうすればいいですか?
450:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 18:05:53.80 W8QBH6Wip.net
というか、loop1のコールバックが登録されてるウインドウ以外を一時的に操作できなくしたいのですが、可能ですか?
451:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 18:11:14.30 W8QBH6Wip.net
すいません、組み込んだライブラリのせいみたいなので取り下げます
452:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 20:17:54.26 W8QBH6Wip.net
whileで無限ループの中をグルグル回っている最中でも
組み込んだライブラリの関数が勝手に動くんですが、これは普通ですか?
具体的には、mainで無限ループしている最中にも関わらず
特定のボタンをクリックすると別の関数が走ってウインドウ内のスクリーンショットが作成されます
他の関数に制御取られない方法はないですか?
453:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 20:44:03.17 W8QBH6Wip.net
ちなみにメッセージボックス作ってそこにブレークポイント置いてデバッグ実行して、そのブレークポイントで停止している時でも
ボタンを押すとおかまいなしに勝手に動いてスクリーンショットを作りに行きます。
出力先ディレクトリの選択ダイアログとかも出るのに、この間デバッグのログに一切動きなし。
どうすれば??
454:デフォルトの名無しさん (ワッチョイ f64e-wv7z)
16/05/06 20:59:24.09 k5bIkp2l0.net
質問の仕方から教えなければならんのか…?
455:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 21:06:05.42 W8QBH6Wip.net
すみません、不慣れなので出来ればお願いしたいです
456:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/06 21:15:11.86 ieYvqp+A0.net
賢い質問のしかた
URLリンク(www.ranvis.com)
457:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 21:16:54.21 W8QBH6Wip.net
つまり僕はどうすればいいですか…?
458:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/06 21:23:50.67 ieYvqp+A0.net
賢い質問のしかた: 回答の読み方 理解できないときは…
URLリンク(www.ranvis.com)
459:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 21:26:44.03 W8QBH6Wip.net
すいません、よく分からないのでやはり質問の仕方よりもプログラムのやり方を教えて欲しいです
460:デフォルトの名無しさん (ワッチョイ 21c1-cHFQ)
16/05/06 21:30:20.27 R+qFy6/e0.net
>>451
「組み込んだライブラリ」の作者にきくか、そのライブラリを組み込まない
461:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 21:47:37.87 W8QBH6Wip.net
>>452
それは最もなのですが
無限ループやメッセージボックスの応答待ちの時にでも外から割り込んで関数を走らせることは可能なのですか?
462:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/06 22:08:00.65 dFoYv6n+0.net
>>444
>これは普通ですか?
糞ライブラリではよくあること
>他の関数に制御取られない方法はないですか
一般的には糞ライブラリの挙動を制御する方法は無い
わかったらスレ違いの荒らしは去れ
463:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 22:24:03.60 W8QBH6Wip.net
>>454
ありがとうございます
なるほど、そうなのですか…それは大変
ところでどうしてスレ違いなのですか?
464:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/06 22:38:48.68 tz5jr0Roa.net
あっ、触っちゃいけないタイプだ!
465:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 22:43:07.34 W8QBH6Wip.net
>>456
そんなこと言わずに教えてください
初心者なので本当にわからないのです…
466:デフォルトの名無しさん (ワッチョイ 1d30-znPs)
16/05/06 23:18:37.39 ikTXVpGc0.net
イベントドリブンでぐぐっ…ても具体的でわかりやすい説明は
すぐにはでてこないがとりあえず調べな
467:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/06 23:22:22.12 vy9oFqn70.net
URLリンク(ideone.com)
とりあえず、ソースコードやるから落ち着け。
再現してみたけどこれからどうしたい。
468:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/06 23:30:41.46 vy9oFqn70.net
イベントドリブンで動いてて、ループ内にブレーク相当の構文があるか、外部でスレッドを使ってるか。
どっちかが可能性高い。
469:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/06 23:54:59.03 W8QBH6Wip.net
>>459
それぞれのループに入る前にウインドウを生成しています。(window1とwindow2)
window1はいいのですが、window2は外部ライブラリの関数で作成したウインドウで、メニューバーみたいなボタンが最初から付いています
そのボタンの一つが、ウインドウのスクリーンショットを取るボタンなのですが、loop1の中でも動いちゃいます
loop1のループの中ではそのライブラリの関数を使っていないので、恐らく外部スレッド?の方だと思いますが
外部スレッド?の侵入を一時的に不可にする方法があれば知りたいですけど、ないようですね…
470:デフォルトの名無しさん (ワッチョイ e095-5iF2)
16/05/07 00:07:03.33 DL6sNyRg0.net
>>461
ひょっとして、そのライブラリは
471:exeをキックしているだけでメニューバーみたいなボタンのウィンドウは別のプロセスなんてことはないの?
472:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/07 00:13:50.15 pheDUhx40.net
>>461
ここで聞くより、外部ライブラリ作者に聞くのが良いよ
もし、現状できないって言われたら、作者にこうできるようにしてって必死にする
473:デフォルトの名無しさん (ワッチョイ b551-5iF2)
16/05/07 00:16:10.71 LMdi7EDF0.net
マウスクリックでループから抜けるというんだからUIのイベントループが回ってるんだろ。
それ止めたらloop1からも抜けられなくなるが?
特定領域のクリックは受け付けるけどスクリーンショットのボタンは無効にしたいってんなら
そのライブラリの使い方調べてみるしかないだろう。どっちにしてもC++の質問じゃない。
474:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 00:19:48.62 qCADCCRG0.net
URLリンク(ideone.com)
こういう感じのこともC++では可能。
と、かこうとおもったところで、Windowsの質問はすれ違いだ。
475:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/07 00:20:02.90 AgRcX6YRp.net
>>462
タスクマネージャーで調べてみたけどそんなことはなかったです(この調べ方で合ってるですかね)
>>463
Qtとかいうやつなんですけど作者だれかイマイチ分からないし別に無理なら無理でグローバル変数使って無理やりなんとかすることにします
ただ外部関数?を簡単に押さえこめるような方法があるかなーと思ったのですが、思いの外複雑なやうですね。ありがとうございました
476:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 00:21:02.88 qCADCCRG0.net
外部ライブラリの作者に聞くがよい。
477:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 00:21:50.44 qCADCCRG0.net
>>466
QTなら普通の商用ライブラリなのでマニュアル読み直せ。
478:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/07 00:28:25.31 AgRcX6YRp.net
>>468
デバッグモードで追いかけてみましたが、初心者の自分には何してるさっぱりで、途中でqtimer.cppが見つからないとかいって追いかけれなくなるしで散々でした
とりあえず簡単には外部関数?を制御出来ないことが分かっただけでも収穫になりましたのでどうもありがとうございました
479:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 00:31:08.95 qCADCCRG0.net
普通制御メソッドはついてるもんだが、マニュアル嫁としか言いようがないな。
480:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/07 00:37:04.59 pheDUhx40.net
>>466
Qtの特長の一つであるSignel-Slotあたりが原因って感じがするが
まぁ、QtならここよりQtスレで聞いたほうが良い。
481:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/07 00:42:09.98 gfii433/0.net
どう見ても質問者が発生している事象を正しく認識できていないように見える
間違った見当外れの説明を元にアドバイスしてもやはり見当外れになるだけ
もう少し本人がスキルアップするかQtスレで親切なエスパーを待つ他に無い
482:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 00:56:14.88 qCADCCRG0.net
初心者はどうしてこう情報を小出しにするのか。
QTって最初から言ってたら、誘導されてたかもしれんのに。
483:デフォルトの名無しさん (ワッチョイ be5b-aqUl)
16/05/07 01:02:43.31 tnQnmuW40.net
何が必要かわからんから小出しにしちゃうんだよ……
わからんからこそ全部出すべきってのもわかってはいるんだが
484:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/07 01:03:04.65 AgRcX6YRp.net
>>473
ちょっと分からなかったんですよね、というのも
またこんなこと言うと情報小出しと怒られそうですけど
実はちゃんとしたQtじゃないんですよ。opencvのバックエンド?とかいうやつで
元々、opencvを勉強していたんですが、途中でQtってのを組み込むとGUIがちょっと綺麗になるよっていうの発見したのでopencvの関数にqtを組み込んだやつを使ってみたら例外がいっぱい起こってしまいてんてこ舞いという感じでした
次回から情報を小出しにしないように気をつけますありがとうございます
485:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 01:07:00.66 qCADCCRG0.net
>>475
キレるぞマジで。最初からそれを書け。
486:デフォルトの名無しさん (ワッチョイ 778c-jFV0)
16/05/07 01:13:45.79 4oP6NddQ
487:0.net
488:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/07 01:15:11.33 qCADCCRG0.net
安心しなさい、まだ一歩前で止まってるから。
489:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/07 02:19:33.54 hrppdYsNa.net
やっぱり触っちゃいけないタイプだった
490:デフォルトの名無しさん (ワッチョイ 5e3c-wv7z)
16/05/07 05:36:01.95 MCMf/Qi90.net
>>444 の時点でライブラリ名を書いてないような奴にいちいち構うなよ...
491:デフォルトの名無しさん (ワッチョイ b9b4-7Olf)
16/05/07 12:16:58.48 GYpWU44C0.net
コピー禁止(ムーブは可能)なクラス A について
vector<A> vec;
としたとき、
A *a = new A(5 /* 引数は適当 */);
な a を vec に追加するにはどうしたらいいですか?
492:デフォルトの名無しさん (ワッチョイ b96c-f78H)
16/05/07 12:21:20.92 wuS0ySL80.net
vectorのallocatorをいじるんかな
493:デフォルトの名無しさん (ワッチョイ 88cb-7Olf)
16/05/07 12:25:54.60 OK0jFuMO0.net
emplaceとか?
494:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4)
16/05/07 12:37:16.87 50MP5ems0.net
コピーは禁止だけどムーブはオッケーって時点で
シングルトン風味なのにそれをベクターにしたいとか
なんかめちゃくちゃじゃないの。
495:480 (ワッチョイ b9b4-7Olf)
16/05/07 12:44:25.73 GYpWU44C0.net
>>484
「あるクラスのインスタンスがひとつ」なのがシングルトンでは?
>コピーは禁止だけどムーブはオッケー
の場合、「各状態のインスタンスが高々ひとつ」の意味なので
vector で管理するのは別に変ではないような気がします
496:デフォルトの名無しさん (スプー Sdc8-wv7z)
16/05/07 12:44:58.07 NjSdOFLzd.net
unique_ptrをvectorに入れるときのイメージかな?
URLリンク(msdn.microsoft.com)
497:デフォルトの名無しさん (ワッチョイ bd7b-fQUW)
16/05/07 13:02:19.07 5xFs3i7R0.net
URLリンク(ideone.com)
498:480 (ワッチョイ b9b4-7Olf)
16/05/07 13:36:55.97 GYpWU44C0.net
>>486
状況としては似てる…けどちょっと違います
vector の中は unique_ptr の指している実体、という状況です
>>487
>>483 でも言われましたが、コンストラクタに渡すべき引数が
外部から分かるなら emplace_back でいいですね
結局こんな感じで、move() 関数を作りました
URLリンク(ideone.com)
問題は
1. new で確保したインスタンスに対して呼ばないと死ぬ
2. delete this が激しくキモい
ことです
499:480 (ワッチョイ b9b4-7Olf)
16/05/07 13:43:49.86 GYpWU44C0.net
あ、考えてみたら delete this はいらないですね
解放の責任は new した側にありますし
やったーできたー
500:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/07 13:46:19.11 5xFs3i7R0.net
>>489
?
std::moveを使わない理由は?
501:デフォルトの名無しさん (ワッチョイ b9b4-7Olf)
16/05/07 13:53:37.12 GYpWU44C0.net
>>490
あれ、できました
さっきまで、さっきまで動かなかったはずのコードなのに…
ありがとうございます…
502:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/07 14:07:18.10 lqutBYGs0.net
vectorにvoidポインタとしてアドレスをぶち込めばどんなクラスでも型が違っても無制限にぶち込めるぞ
503:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/07 14:24:19.18 9/SiGFfq0.net
取り出すときにキャスト必須だがな
504:デフォルトの名無しさん (ワッチョイ 32a6-7Olf)
16/05/07 14:24:21.49 Nq/4SgpV0.net
どうやって使うのだろう?
505:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/07 14:52:34.98 ISmmGMjJ0.net
>>492
>無制限にぶち込めるぞ
唐突にどうした。アスペか?
506:デフォルトの名無しさん
16/05/07 16:05:54.27 hfPhBXdU5
>>488
delete this;なんて書き方初めて見た。
これC++的にはOKなんだろか。
507:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/07 20:19:39.58 bJut0jV40.net
char str[32];
508://いろいろな処理 char[6] = 0; と記述していたら、先輩から char[6] = '\0'; と修正されたんですが、意味違いますか?
509:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/07 20:20:05.88 bJut0jV40.net
str[6] = 0;
str[6] = '\0';
です
510:デフォルトの名無しさん (ワッチョイ 32a6-7Olf)
16/05/07 20:33:55.18 Nq/4SgpV0.net
文字列としての配列であれば '\0' を
8ビット整数の配列のつもりであれば 0 を
ということでいいのか?
511:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/07 20:37:46.88 ISmmGMjJ0.net
str[6] = 0;
バイナリーデータをstrで管理していて値ゼロを入れようとする思わせぶり
str[6] = '\0';
文字列をstrで管理していて終端のヌル文字入れようとする思わせぶり
512:デフォルトの名無しさん (ワッチョイ f6e5-T8u2)
16/05/07 21:27:36.44 2MzLWeIa0.net
何らかの処理プログラムを超一流のc++プログラマーが書いたものと、超一流のcプログラマーが書いたものを比較するとどっちの方が処理速度が速いとかありますか?理由も教えて下さい。
513:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/07 21:29:03.90 PlV1IzZTa.net
他人がコードを読む前提で解りやすく書こう
三ヶ月後の自分はもはや他人だ
514:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/07 21:48:10.05 gGosoxju0.net
>>501
その(曖昧な)条件だとどちらも同じプログラムに帰結することが可能そうだから、差を生じる理由は導けないと思う。
515:デフォルトの名無しさん (ワッチョイ f6e5-T8u2)
16/05/07 21:50:43.93 2MzLWeIa0.net
>>503
では、逆にこういう処理プログラムを書く場合ならc/c++で差が出るというものはありますか?
516:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/07 22:00:18.21 gGosoxju0.net
>>504
restrict が有効に働くケースなら C が有利になるかもね。
517:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/07 22:22:13.08 ISmmGMjJ0.net
ハゲは例外を使うと速くなることもあると言うが、同じか遅くなった例しか見たことがない
クイックソートだけはかなりの確率でC++の圧勝
518:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/07 22:25:20.03 TEQEM2qu0.net
>>501
小さなプログラムの場合は
基本的にはCで書くのと同じ内容をc++でも書けるので
Cで組むのとc++で組むのとでは処理速度は理論上変わらない。
しかし大きなプログラムの場合には
・優秀なプログラマが一度に理解できるプログラムの行数は1万行オーダー、つまり有限だと言われている
・優秀なプログラマは、理解できる範囲で最適化を行える。つまり、理解不能な最適化は出来ない
・Cとc++で同じ内容の十分に複雑なプログラムを書いた場合、c++の方が若干短くなる
から、優秀なプログラマがバグを出さずに超長いプログラムを組む場合、
Cで組むよりc++で組んだ方が最適化を多く掛ける事が出来るようになるので
Cで書くよりc++で書いた方が処理速度は速くなりうる。
519:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/07 22:42:14.29 bJut0jV40.net
一度に理解できるプログラムの行数は1万行?
はぁ?
プロトタイプでもそんなんじゃかけないぜ
半導体装置制御でC++を使っているが、40万行以上あるぜ
隅々まで理解しているつもり
OSなんていったら相当だろ
520:デフォルトの名無しさん (ワッチョイ fe16-ny5G)
16/05/07 23:07:24.97 2VJKllfT0.net
超一流ってことは、アセンブラもHDLもアナログも高周波もメカもありだよな
そん中のC++を使って書かれた部分の速度ってどんな意味があるんだろう
521:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/07 23:11:17.64 gGosoxju0.net
>>506
URLリンク(h-deb.clg.qc.ca)
> This test shows that in the case most favorable to exceptions (the one
> where they are effectively exceptional), the exception-handling code is
> faster than the error-handling one.
522:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/07 23:35:45.09 pheDUhx40.net
>>508
それを一人で開発やったのか。すごいなお前
523:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/07 23:38:55.40 TEQEM2qu0.net
>>508
要点はそこじゃない。
君が超優秀かどうかはさておき。
524:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/07 23:43:10.78 X4O7V36I0.net
今度Arduinoで温度計作る
525:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/07 23:47:49.64 gfii433/0.net
一般的には少しだけCよりC++の方が遅くなるんじゃないかな
526:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/07 23:49:57.90 TEQEM2qu0.net
>>514
理由は?
527:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/07 23:53:03.44 CJYWvDHF0.net
5/7はメモリー二倍デーだから。
528:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/08 00:26:59.06 HXMhoTSZ0.net
>>515
一般的とう限定では超一流でもないし速度最優先のコーディングでもなく
C++にしか無い機能(クラスとかテンプレートとか)使うとコードもメモリも
肥大化する傾向があるから
529:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/08 00:34:38.65 mfXrjXgw0.net
constexprのようにC++にしかない処理時間を短縮する機能もある
530:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 00:42:36.86 0NRevPWu0.net
>>517
> C++にしか無い機能(クラスとかテンプレートとか)使うとコードもメモリも
> 肥大化する傾向があるから
具体的に、どのコンパイラでの結果を見て言ってるの?
531:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/08 00:49:08.05 hZHozpgd0.net
templateは解らなくもないがクラス使うとって謎だな
Cでもstruct使わない人だろうか
532:デフォルトの名無しさん (ワッチョイ fe16-ny5G)
16/05/08 00:49:58.77 vtsfrRsw0.net
>>514
struct hoge* hoge__member_function(struct hoge* that, int arg, ...)
{
hoge__do_something(that);
return that;
}
hoge& hoge::member_function(int arg ...)
{
do_something();
return *this;
}
何がどう違うんだよw
533:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/08 00:50:51.99 NDoMe0zH0.net
>>515
++演算子の意味をググってください
534:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/08 00:53:25.78 aVBrdKMl0.net
>>520
継承使いまくりするとって感じなんじゃないのか
C++はCより言語仕様複雑、STLあるでメモリ使用は増えるだろうと思う
535:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/08 00:54:32.48 hZHozpgd0.net
>>523
普通はメンバーが無駄になるような意味のない継承なんてしないんだけど
536:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/08 01:13:20.10 HXMhoTSZ0.net
>>519
コンパイラはGCC(gcc,g++)とclangを主に使ってるけど自分の少ない経験では
同じようなGlib/Gtk+ベースのプログラムを書いた場合、C++/gtkmmよりも
Valaを使う方がコンパクトになる
537:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 01:14:10.23 0NRevPWu0.net
>>523
継承なんてメモリ使用の観点では構造体の中に構造体置くのと変わらない。
メモリ使用量を増やすような言語仕様の差があるならそれを挙げてみて。
C++標準コンテナ使うプログラムならCで書いても同じだけメモリ確保が要るだろ。
538:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 01:30:14.46 0NRevPWu0.net
>>525
Vala って独自言語→C の Cfront みたいなやつなんだな。
それで実際に差が出るっていうのは興味深いけど、中間のCのコードと比較しながら
C++のほうをgtkmm含めて改良していけば同じことにはできるんだろうと思う。
539:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/08 01:34:20.48 NDoMe0zH0.net
C++標準コンテナなんて使ってる奴いるか?
バイナリはでかくなるし、遅いし・・・
存在理由がわからん
540:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/08 01:36:39.43 ac/16y3t0.net
馬鹿には利用価値が解らんらしいな
541:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/08 01:38:18.51 r8xFef3w0.net
ポータビリティ!
542:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/08 01:45:58.46 R2Zn2+sX0.net
言語仕様の差と言えるかどうかは置いておいてライブラリの差は大きい
便利なライブラリがあれば使うだろうし車輪の再発明をするより実績のある
ライブラリがあればそれを使うのが普通だからCだったら自分に必要最低限で
済ませるような場合でもC++標準コンテナが便利に使えるケースなら
そこまで汎用性が必要なくても使うことは一般的だと思う
ライブラリの差で言えば標準ライブラリ以外でも便利なライブラリのC++バインディングは
やはりそれなりに汎用的で便利に使えるように考慮して作られることが多いし
極限まで洗練されてるとも限らないのでバインディング分の肥大化もある
543:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/08 01:46:33.21 KW8blOBJ0.net
え、標準コンテナってvectorとかmapのことよな?
逆に使わないで、自前で書いてる奴がいるってこと?
プロジェクトにそんなやつ参加してたら即外すくらい迷惑なんだが…
俺の感覚がおかしいのか?
544:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/08 02:04:27.63 R2Zn2+sX0.net
>>532
C言語でC++標準ライブラリと同等なライブラリを書くことはまず無いと思う
C++で書く場合vectorとかmapの全てのメンバ変数、全てのメソッドが
必要な場合はまず無いと思うので自前で書く奴なんかいないから
何らかの無駄が生じる
545:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/08 03:15:08.39 hZHozpgd0.net
まぁ、C++理解してない奴が使うと遅いかもな
546:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/08 03:20:37.22 BqGdpOYS0.net
PSPがC++で書き直されいきなり重くなって、その数年後コーレルに吸収された。
C++で再設計されると機能は豊富になる傾向がある。
547:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/08 03:30:57.75 r8xFef3w0.net
できることとできないことの取捨選択が設計。そこでこけたらなんもよいことがない。
Cのように薄いラッパーで書くこともできるが、できることが増えると全部使いたくなる。
それが癌。
548:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/08 03:34:24.61 mfXrjXgw0.net
vectorが遅いと思ってる奴は大量のデータを連続でpush_backしまくってる奴
549:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/08 03:49:22.70 hZHozpgd0.net
>>535
C++にしたことによって機能が豊富になり企業ごと買ってもらえてよかったやん?
550:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/08 06:48:20.55 bsBg6NTha.net
coutがprintfより遅い。なんで?
551:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/08 06:56:36.21 r8xFef3w0.net
iostreamの設計はあんまり効率的とは言えないからかなぁ。
汎用性重視して使いまわせるようにした分、特化用途では劣る。
552:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/08 10:49:40.33 pkRLpXcEr.net
設計が糞だから
入出力みたいなIOバウンドな処理でも遅いことが露呈してしまうのは
相当なUNKO
553:デフォルトの名無しさん (ワッチョイ 9e17-wv7z)
16/05/08 11:03:26.85 Zy+4Am2s0.net
入出力多ければcin,cout高速化するのが当たり前
554:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 11:26:43.00 0NRevPWu0.net
>>539-541
言うほど遅くは無いかな。特に読み取りでは。 (@gcc 6.1.0)
URLリンク(melpon.org)
> FILE* write 0.117051 ms
> FILE* read 23.5034 ms
> fstream write 0.156568 ms
> fstream read 23.5264 ms
・・・と思ったら、同じコードなのにこれはひどい。 (@clang 3.8.0)
URLリンク(melpon.org)
> FILE* write 0.117286 ms
> FILE* read 25.3939 ms
> fstream write 36.1465 ms
> fstream read 313.493 ms
ライブラリ実装の質が問題として大きい様子。
gcc のほうの書き込みの差が設計上の問題の表れなのかね?
555:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/08 13:28:04.05 NDoMe0zH0.net
gccなんてどんなシチュエーションで使ってんだよ
無保証で配布されてるようなものよく使うな
556:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4)
16/05/08 13:34:39.34 e7FUVg4v0.net
馬鹿らしい。
結局アセンブラ以上の速度なんかでないんだから、
あとはライブラリがどう実装されているかの差でしかない。
557:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/08 13:43:29.27 Z9PKRgQn0.net
↑日本語の会話ができないアスペ
558:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 13:44:44.46 0NRevPWu0.net
>>544
え?「無保証で配布されてるような」に該当しないC++コンパイラなんてあるの?
559:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/08 13:54:10.64 KW8blOBJ0.net
インテルコンパイラくらいしか思いつかんな
560:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 14:06:52.50 0NRevPWu0.net
>>548
へー、と思って見に行ってみたけど、
URLリンク(software.intel.com)
> 6. NO WARRANTY AND NO SUPPORT: Disclaimer. Intel disclaims all warranties of any kind and ...
やっぱ無保証じゃないの?見てるライセンス文書が違う?
561:デフォルトの名無しさん (ワッチョイ 5e3c-wv7z)
16/05/08 14:08:40.18 7UXL6x+W0.net
>>547
メーカーの有償コンパイラはいくらでもあるだろ
ベースが GCC であろうと保守契約してれば保証はしてくれる
その保証が役に立つかどうかは別だけど
562:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/08 14:11:27.77 KW8blOBJ0.net
>>549
ほんとだ
VC++とかもコンパイラは無保証なのかな?
563:デフォルトの名無しさん (ワッチョイ f64e-wv7z)
16/05/08 14:46:15.67 6EBK0SNh0.net
>>550
有償のコンパイラは数多いけど、何らかの「保証」をしてくれる商品ってあんまりないと思う。
有償の対価はサポートが多いよね。
大体は NO WARRANTY で、期待するような効力は無いと思うけど。
まあ、一口に保証って言ってもいろいろあるけどね…
564:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/08 14:48:20.88 NDoMe0zH0.net
>>547
icc
565:デフォルトの名無しさん (ワッチョイ f64e-wv7z)
16/05/08 14:53:15.78 6EBK0SNh0.net
>>508
半導体装置って何?
って思って検索したら半導体製造装置の事でいいんかな?
しっかし、何かいろいろあってよくわからん世界だな…
566:デフォルトの名無しさん (ワッチョイ 40cf-5iF2)
16/05/08 15:20:27.33 0NRevPWu0.net
>>553
それの保証って >549 じゃないの?違うんならどんな保証があんの?
567:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/08 15:31:09.95 NDoMe0zH0.net
>>555
gccなんて髭面の乞食みたいな奴が作ったソフトでしょ
568:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/08 17:22:36.22 QO+NBPG40.net
君も多分、そのgccで作られたソフトをどこかで利用している
569:デフォルトの名無しさん (ワッチョイ 9fd4-EIjF)
16/05/08 17:46:35.49 NKVAXp+L0.net
ありがとう髭面の共産主義者さん
570:デフォルトの名無しさん (ワッチョイ 328b-lMTc)
16/05/08 18:01:04.73 +0FfKmse0.net
ストールマンは自由主義すぎて共産主義者に見えるだけ
571:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/08 18:17:53.49 Idc9lMfP0.net
何言ってんだコイツ。
資本主義か共産主義かと言えば、明らかに共産寄りの主義を持ってるだろ。
572:デフォルトの名無しさん (スプー Sdb8-wv7z)
16/05/08 18:29:38.44 yx/SoqI4d.net
どこが共産主義的なの?
真逆じゃね。
共産主義国でGPLがまともに効果を発揮するとは思えんが
573:デフォルトの名無しさん (ワッチョイ 3a13-75AG)
16/05/08 18:36:54.38 2KDLdDvi0.net
自己責任でやれ,っていう論調から判断すれば GPL はどちらかというと「リバタリアン」
574:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/08 18:40:04.47 iOm+CRLoa.net
セックスとソフトウェアだけ共産主義で配給性にしよう
575:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/08 18:44:56.64 QO+NBPG40.net
君の財布も共有財産
576:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/08 19:34:23.06 mfXrjXgw0.net
共産主義は国家が資産を独占することだぞ
権力に独占させないのが自由ソフトウェアだろ
577:デフォルトの名無しさん (ワッチョイ bd2b-kevm)
16/05/08 19:35:04.68 us042D/d0.net
554みたいなこと言っちゃう化石ってまだ生き残ってるんだな
578:デフォルトの名無しさん (ワッチョイ 7c42-wv7z)
16/05/08 22:49:21.51 tR
579:pDEO2z0.net
580:デフォルトの名無しさん (ワッチョイ 328b-lMTc)
16/05/08 22:59:44.96 +0FfKmse0.net
んまーストールマンの内実がどうかとかは実はどうでも良くて
やってることは共産主義者だがな、
581:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/08 23:18:24.65 QO+NBPG40.net
そんな人はスマホもPCも使わない方が良いね
582:デフォルトの名無しさん (ワッチョイ 778c-10y/)
16/05/08 23:39:50.87 kgnsEu+L0.net
すいませんOpenGLの使い方教えてくださいお願いします
583:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/08 23:47:10.40 mfXrjXgw0.net
まず服を脱ぎます
584:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4)
16/05/09 00:05:04.99 owmkQV0r0.net
ストールマンはスマホとか使ってない。
585:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/09 00:28:08.65 D9KYpVKqp.net
はい
586:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/09 00:31:37.72 pVI6O9RYp.net
stringの初期値ってなんですか?
string s;
if( s != NULL) ~
って書いたら謎のエラー出されたのですが
587:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/09 00:37:22.99 pUXvKib10.net
>>574
宣言当初は空っぽ。空っぽを知るにはsize()かlength()を使うだっけか。
std::stringはヌルターミネートストリングではない。
588:デフォルトの名無しさん (ワッチョイ f256-wv7z)
16/05/09 00:40:19.49 rFeP9sIM0.net
>>574
if( !s.empty() ) ~
589:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/09 00:42:40.61 pVI6O9RYp.net
>>575
ナルフほど、参考になりました。どうもありがとうございます。
590:デフォルトの名無しさん (ワッチョイ 7cbf-wv7z)
16/05/09 00:50:51.52 27MMukgj0.net
stringのコンストラクタの引数にNULLを渡すのが未定義だと知った時は驚愕したもんだ。
591:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/09 00:52:00.22 pUXvKib10.net
>>576
それだ。あんま使わないから忘れてた。
592:デフォルトの名無しさん (ワッチョイ ff73-OI8D)
16/05/09 07:12:53.06 FiIoAZ6E0.net
stringのコンストラクタには素直に""渡せって事?
593:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/09 07:51:26.99 gB83NhqC0.net
>>580
引数要らない
594:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/09 07:56:30.26 gB83NhqC0.net
テンプレート使ったメタプログラミングのバイナリーサイズとコンパイル時間の最適化どうやってる?
実行時みたいなプロファイラないよね?
595:デフォルトの名無しさん (スプー Sdb8-wv7z)
16/05/09 09:56:31.43 Xsyq9PvJd.net
std::vector<std::string>から<algorithm>のfindで文字列検索した場合よりも、std::unordered_set<std::string>のfindで文字列検索した方が高速だったのですが理由はなんでしょうか?
596:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/09 10:05:09.76 OXHQFkpS0.net
>>583
vectorとunordered_setではデータ構造が違うから。
一般的に、vector(線形時間)→set(対数時間)→unordered_set(定数時間)の順で検索は速くなる。
ただし、vectorは要素(この場合はstd::string)に何の仮定も置かないのに対して、
setでは全順序性を仮定するし、unordered_setではもっと厳しい条件を仮定する。
597:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/09 10:08:08.13 OXHQFkpS0.net
>>582
TMPは可能な限りコンパイル時に全ての計算を済ませる物だから、
コンパイル時間を減らすっていう意味での最適化とは逆方向じゃない?
コンパイル時にレイトレーシングする強者もいるし(コンパイルに1週間くらい掛かるらしいが実行は数秒になる)
598:デフォルトの名無しさん (ワントンキン MM40-YzxY)
16/05/09 11:00:56.87 fUCJ6I
599:jvM.net
600:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6)
16/05/09 17:22:51.78 e5OTdnsK0.net
>>586
> unordered_setは要素のハッシュ値でソート済みのデータ構造だから。
どういう意味?
URLリンク(ideone.com)
バケツもバケツの中身もソートされませんけど。
601:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/09 18:05:24.60 pVI6O9RYp.net
printf(”a\n”);
cout <<”a\n” ;
cout << ”a” << endl;
これらはどれも結果?見た目?は同じですが
内部的にはどう違うのか教えてください
602:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/09 18:27:34.76 D21wZ97+r.net
>見た目?は同じですが
>>588の目がフシアナなだけだろう
603:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-fZAN)
16/05/09 18:31:24.94 12nCphG6K.net
>>588
printfは%書式の解釈が入るから、最適化されていなければputsより遅い。
endlは改行を出力するだけでなく、フラッシュも入るから、
フラッシュが効かない場合より処理が遅いが、実際の出力の開始は早くなるかもしれない。
最適化される場合は、どのように処理されるかはコンパイラ次第。
604:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/09 18:37:47.43 6ljAms74r.net
>printfは%書式の解釈が入るから、最適化されていなければputsより遅い
こういう奴はどこにでも居るな。
質問の内容も読まずに脊髄反応して
脳内で単語レベルでヒットした蘊蓄を
ありがた迷惑に貼り付けるアスペが。
まあフラッシュについては>>588も得るものが有ったかも知れない。ご苦労
605:デフォルトの名無しさん (ワッチョイ ad5b-7Olf)
16/05/09 19:21:32.17 aNITGvAM0.net
>>588
若干動作違う。
下記はエンターキー押すたびに処理が進む。
各行を入れ替えたりすると動作の違いがわかる。
printf("a\n"); getchar();
cout <<"a\n" ; getchar();
cout << "a" << endl; getchar();
606:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6)
16/05/09 19:40:47.53 e5OTdnsK0.net
ios_base::sync_with_stdio
607:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/09 20:31:36.08 pVI6O9RYp.net
なるほど、勉強になりました。
みなさまありがとうございます。
608:デフォルトの名無しさん (スプー Sdb8-wv7z)
16/05/09 21:37:15.19 Xsyq9PvJd.net
>>584
>>586
>>587
勉強になりました、ありがとうございます。
609:デフォルトの名無しさん (ワッチョイ ff73-xUNW)
16/05/09 22:50:09.03 FiIoAZ6E0.net
C++の関数呼び出し時
int a(const int b, const mystruct mst);
こんな感じでconstにしない場合と引数のために
int b用のコピー、mst用の構造体mystruct変数のコピーが作られるって書いてある
intのコピーはサイズ的に問題ないけど
構造体mystruct mstのサイズが物凄く大きい可能性がある
物凄く大きな場合も効率や速度を無視して変数のコピーが作られるのですか?
触った感じではコピーが作られているっぽいのですが
610:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/09 23:06:19.92 oK/ks2/Z0.net
作られるよ
コピーしたくなきゃアドレスを渡すしかない(C++ならポインタか参照)
611:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/09 23:07:05.31 Ii8g1eqf0.net
コピーする必要が有ってコピーさせてたかも知れないのに
サイズで勝手にコピーを省略されたらブチ切れだな
612:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/09 23:43:00.36 jCCSCwvz0.net
>>596
馬鹿なん?なんでコピーされるかわからないならC言語からやり直せよ
613:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z)
16/05/09 23:45:48.90 jCCSCwvz0.net
なんでC++に参照を意味するアンパーサンド演算子がわざわざ用意されたのか判らんのかいね?
614:デフォルトの名無しさん (ワッチョイ 9c41-X9cp)
16/05/09 23:49:52.01 noyNIse20.net
この手の奴多いよな
うちの会社にもろくにc/c++を知らないで、仕事してる奴いるわ
615:デフォルトの名無しさん (ワッチョイ 778c-10y/)
16/05/09 23:52:36.52 M3iPLLj40.net
>>596
void swap(int a, int b){
int tmp = a;
a = b;
b = tmp;
}
main(){
int a = 0;
int b = 1;
swap(a,b);
printf(”%d %d\n”,a,b);
return;
}
さて何が出力されるでしょう?
616:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/10 00:12:39.31 VjIbGp3Q0.net
>>601
いかにもゆとりIT会社って感じだな
617:デフォルトの名無しさん (ワッチョイ ff73-YF3X)
16/05/10 05:28:12.75 u9nXjF/T0.net
>>602
0と1だね
C#だとポインターがないとか言うので
コピー渡しのみだと死ぬなと思いつつ考えてた
C#も参照渡しがありました
初心者スレで聞くべきでした
void swap(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
}
618:デフォルトの名無しさん (JP 0H0d-aZyM)
16/05/10 09:58:36.58 xA250nOWH.net
それは C の話で
C++ だと &,&& も増えた
619:デフォルトの名無しさん (ワントンキン MM40-wv7z)
16/05/10 10:07:05.90 soJOAvIwM.net
そもそもC#は全部参照渡しでしょ?
620:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/10 10:10:28.85 E+X0dc0Z0.net
プリミティブ型は値渡しだった気がする、数年前のこと。
621:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/10 12:50:19.00 iYvr3+wx0.net
参照渡しはクラスだけ
622:デフォルトの名無しさん (スプー Sdc8-wv7z)
16/05/10 13:05:23.01 39a1ddzGd.net
template< typename T > void hoge()
{
[](){ T a{}; }();
}
ラムダ式の中からTを使う事はできますか
623:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6)
16/05/10 14:28:48.29 xt6qowzE0.net
>>609
質問の意図がよく分からないけど
URLリンク(ideone.com)
普通に使えるのでは?
624:444 (ササクッテロ Spa9-10y/)
16/05/10 15:30:29.67 Jb8df6a5p.net
444です
メッセージBOXでTASKMODALを指定すれば動かなくなりましたので報告だけしときますありがとうございました
625:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/10 18:38:39.38 215vkzzCr.net
>>606
>>607
>>608
C#は基本的に(refを付けない限り)全部値渡しだが
何を言っているんだお前らは
626:デフォルトの名無しさん (ワッチョイ b976-ymBj)
16/05/10 19:46:50.88 URI7I2Cg0.net
「参照型 値渡し」で検索しとけ
627:デフォルトの名無しさん (スプー Sdb8-wv7z)
16/05/10 20:05:12.28 QMa4CHQvd.net
よくわかんないけどT*とT*&みたいなもん?
628:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 20:24:20.24 dn5a8gBPp.net
プログラムのCPU負荷を下げる方法はどうしますか?
特に重い処理をしていないにも関わらず、CPU負荷が100%近くになります。
対策をお願いします。
629:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/10 20:27:23.22 GH5TUzj80.net
nice 20 とか
630:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6)
16/05/10 20:30:54.94 3v8mTcBj0.net
>>615
本当に「特に重い処理をしていないにも関わらず、CPU負荷が100%近く」なら何かバグってる
631:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 20:43:15.13 dn5a8gBPp.net
>>617
とある事情でwhileループで入力待ちしてるんですが
特に処理はしていないのに待機中にCPU100%になってますね…
632:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 20:46:30.52 dn5a8gBPp.net
一応、重くならないように
ループには、1ループあたり1msの待機時間作っています
633:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/10 20:46:51.93 lywmyip50.net
待てていないような気がしますね。
634:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6)
16/05/10 20:48:47.48 3v8mTcBj0.net
>>612
URLリンク(ideone.com)
635:デフォルトの名無しさん (ワッチョイ 5602-wv7z)
16/05/10 21:22:24.14 O0lvE+VW0.net
>>619
なんで問題のコードをださないの?
無駄にレス増えるだけだと思うんだけど
636:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/10 21:29:25.26
637:VjIbGp3Q0.net
638:デフォルトの名無しさん (ワッチョイ 7d7b-7M79)
16/05/10 21:29:43.77 AdrvoLMk0.net
まあ頭冷やして考えた方がいいんじゃねーの?
コード出したら実際糞過ぎて叩かれるだけだと思われ。
639:デフォルトの名無しさん (ワッチョイ 5602-wv7z)
16/05/10 21:31:42.01 O0lvE+VW0.net
>>623
ワッチョイで一目瞭然
640:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 21:41:10.13 dn5a8gBPp.net
>>620
待機時間を2倍の2msにして見ても、CPUが半分になるかと思ったらそれどころか全然減りませんがどうすればよいですか
641:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 21:54:48.65 dn5a8gBPp.net
>>622
while(1)
{
...
int c = waitKey(1);
if(c == 'q') break;
}
642:デフォルトの名無しさん (ワッチョイ 7c7b-m/h6)
16/05/10 22:12:32.27 3v8mTcBj0.net
>>626
答えは>>620
時間待ちさえ明らかにバグっててちゃんと待ててない
他の人も言ってるけどコードを晒せば?
643:デフォルトの名無しさん (ワッチョイ 9c9d-APoh)
16/05/10 22:17:19.25 VjIbGp3Q0.net
>>627
waitKeyってOpenCVの関数なのか。なら、スレあるのかは知らないがOpenCVスレで聞くのがいいだろ
俺、OpenCVは使ったことはないが、
URLリンク(opencv.jp)
の注意 2にある動作条件
>HighGUI ウィンドウが少なくとも1つ存在し,それがアクティブな場合にのみ動作
これが守られてなんじゃないのか?
644:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/10 22:23:32.56 A1YVuqbS0.net
>>626
nanosleep使ってもある程度大きな値まではビジーループだぞ
OSはそんなに小さなタイミングで割り込みなんて出来ないから
645:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/10 22:34:59.20 zxnDb8j/0.net
>>630
超どうでも良いけど、可能か不可能かで言ったら
約0.84マイクロ秒置き(1193182 Hz)の割り込みが来るように出来るようにハードウェアは組まれてるです。
646:デフォルトの名無しさん (ワッチョイ 56c0-T8u2)
16/05/10 23:00:23.29 yaG18+U20.net
スレッドの切り替えチャンスは与えたけど誰もいないので俺スレ頑張っちゃうよ
647:デフォルトの名無しさん (ワッチョイ be9f-fbpY)
16/05/10 23:06:07.16 HVyJ1rA+0.net
>>631
ハードウェアもOSも限定せずにそんな保証できるわけないだろ
648:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/10 23:18:12.87 T8dqPhAzr.net
>>621
いきなりイミフなコードを貼り付けてどうした?
何か話さなきゃお前はただのアスペだぞ
649:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj)
16/05/10 23:19:38.14 zxnDb8j/0.net
>>633
ごめんよ。
でも8259互換チップが入ってないPC/AT互換マシンなんて今時あるのかい?
650:デフォルトの名無しさん (ワッチョイ be9f-HMKq)
16/05/10 23:33:33.53 7q8s7zNm0.net
唐突にPC/AT互換マシン
651:デフォルトの名無しさん (ワッチョイ 9c41-lMTc)
16/05/10 23:51:40.34 5J1aLd4L0.net
PC/AT互換マシンって言いたいだけの奴いるよなwww
652:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/10 23:54:10.15 GH5TUzj80.net
入力があるまでHALTする方法はないのか?
653:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/10 23:54:27.58 5EInyMQF0.net
>>634
値渡しじゃなくて参照渡しだってコードだろ
要するに>>612は間違い
654:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/10 23:56:27.95 y6IvleFLp.net
>>628
コードは>>627です
>>629
ウインドウはちゃんとループ外で定義してありますし使い方は合ってるはずです
>>630
ある程度はどれくらいですか?
100ms待たせたらCPU80%くらいまで減りましたが…
655:デフォルトの名無しさん (オッペケ Sra9-wv7z)
16/05/10 23:59:19.74 T8dqPhAzr.net
>>639
低能のお前にヒントをやろう
参照型と参照渡しを混同してはいけない
そしてC#言語仕様5版 7.5.1 Argument lists を読んでこい
656:Java言語仕様8版でもいいぞ
657:デフォルトの名無しさん (ワッチョイ 9c42-wv7z)
16/05/11 00:00:38.44 AJNn1ICv0.net
あ、そう…
658:デフォルトの名無しさん (ワッチョイ 9c41-lMTc)
16/05/11 01:10:14.65 GzlL/1jH0.net
言語仕様がどうとか言う奴ってえてして仕事できないよなw
内の会社にもやたら、言語に関しては詳しいけど実際のコーディング、デバッグなんかは
やたら遅い奴いるわw
たぶん小さなサンプルプログラムばっかりしか書いたこと無いんだろうな
659:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/11 01:21:35.07 ubToLDC+0.net
>>640
多分CPUは、この無限ループを全力で実行しているんだと思うよ
>通常のイベント処理ではこの関数を周期的に呼び出す必要があります.
ってあるから、通常は時々呼び出しなさいということでしょ。
660:デフォルトの名無しさん (ササクッテロ Spa9-10y/)
16/05/11 01:27:59.88 0F7keYqip.net
>>644
ありがとうございます。
そこで、CPUにこの無限ループを全力で実行させないようにする方法はないですかね?
661:デフォルトの名無しさん (ワッチョイ 3f42-7Olf)
16/05/11 01:48:35.76 ubToLDC+0.net
OSが何かにも寄るんでしょうkが、
Windows環境ならSleep()と言うのがあります。
Unix環境ならusleep()関数を使ってみては?
waitKey()の説明を読む限り、この関数内でのタイムアウト時間指定ですよね。
ループ全体の中でwaitKey()が専有する時間が1msって事で、
ループのそれ以外の部分では、何の処理も行わず、再びwaitKey()に戻っているんでしょう。
おそらくSleep、usleep関数に渡す引数の値だけCPU占有率が減ると思います。
これは泥縄的な方法ですけどね。
できるなら、「イベント発生通知をOSから受け取る。それまではお休みする」が良いと思います。
662:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc)
16/05/11 02:04:52.39 TxG4e4qF0.net
C++11からchronoとthis_threadを使ったスリープが汎用的にアルヨ。
osまたぎたいならこれも視野に。
まぁ問題はそこじゃなさそうだけど。
663:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/11 04:12:57.00 AYk4CdLN0.net
MATAGI vs KIKORI。
664:デフォルトの名無しさん (ワッチョイ 9c7b-SnbV)
16/05/11 07:33:54.29 E3fj3Ww+0.net
ビジーループ(ポーリング)と、イベント(call back)では、イベントを使うべき
ビジーループでは、CPUが占有されてしまう。
一方イベントでは、CPUを使わない
665:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/11 14:29:08.71 Hst0/UDE0.net
賢いドライバーならカーブでは速度を落とすものです。
ところで、ポーリングで速度を落とす賢いプログラマはいないモノでしょうか。
666:デフォルトの名無しさん (ワッチョイ f910-F7+X)
16/05/11 15:24:54.40 GeTKo9910.net
>>645
そもそも「...」の部分の処理が重いんじゃないの?
処理一切無しでwaitKeyだけでも重いの?
667:デフォルトの名無しさん (JP 0H0d-aZyM)
16/05/11 15:31:43.86 l/Aku55rH.net
ゲーム系のフレームワークでありがちな
ウエイト無しクソサンプルを真似たんじゃろ
まともなものならドキュメントなりチュートリアルなりで説明があるはず
コールバック型のイベント処理だって探せば出てくるんじゃないの
668:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/11 16:24:44.34 to/KEVVR0.net
クソサンプルてゲームならそれでええやろ
669:デフォルトの名無しさん (JP 0H0d-aZyM)
16/05/11 16:35:01.05 l/Aku55rH.net
駄目だ駄目だ駄目だ
670:デフォルトの名無しさん (ワッチョイ bd7b-YzxY)
16/05/11 16:50:01.24 to/KEVVR0.net
>>654
一応聞いてやるけど何が?
671:デフォルトの名無しさん (ワッチョイ c13c-APoh)
16/05/11 17:04:09.30 Hst0/UDE0.net
>>655
ノートが熱くなって燃えてしまいました。
謝罪と賠償を要求します。
672:デフォルトの名無しさん (ワッチョイ 9c41-lMTc)
16/05/11 18:03:39.93 GzlL/1jH0.net
C++を開発するってどういうこと?
Bjarne Stroustruはなにをしたの?
MSやintel
673:なんかにコンパイラを作って提供したって事なの?
674:デフォルトの名無しさん (JP 0H0d-aZyM)
16/05/11 18:39:38.91 l/Aku55rH.net
C++を発明した
675:デフォルトの名無しさん (ワッチョイ 8063-wv7z)
16/05/11 19:05:28.34 5a6iax+r0.net
糖質がまた幻覚を見たようだな
今日はまた一段とぶっ飛んでいる
676:デフォルトの名無しさん (ワッチョイ bd02-7Olf)
16/05/11 20:32:01.30 FbDxsPeF0.net
>>657
最初にC++というものを考えた
677:デフォルトの名無しさん (ワッチョイ 56c0-T8u2)
16/05/11 21:38:44.46 Hbfyg6Vu0.net
int C=0;
C++;
678:デフォルトの名無しさん (アウアウ Sa41-Zs2w)
16/05/11 21:55:30.78 mridOWona.net
C with classes
679:デフォルトの名無しさん (ワッチョイ 7d7b-7M79)
16/05/11 23:05:50.38 rzhdH4Ry0.net
なぜ ++c でなくて c++ なのか。
それは c の間にやっておきたかった事があるから。
680:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh)
16/05/12 00:49:34.70 skSN1OPx0.net
++cよりc++の方が速いかもしれないから
681:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR)
16/05/12 01:54:44.22 V7G0arWW0.net
後置はイテレータだと副作用が出るけどな
682:デフォルトの名無しさん (ドコグロ MMef-/3cR)
16/05/12 07:19:43.34 H+I8h1G8M.net
>>664
そんなケースあったっけ?
683:デフォルトの名無しさん (ワッチョイ 37bf-/3cR)
16/05/12 08:51:12.00 N3lYKGUd0.net
>>664
勘違いしちゃったのかなー?
684:デフォルトの名無しさん (ブーイモ MM1f-/3cR)
16/05/12 08:53:10.66 4BYM8qUWM.net
c++プログラマなら使えるところは常に前置だろjk
685:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0)
16/05/12 08:59:45.88 rpWGZ4yl0.net
>>666-667
後置はアウトオブオーダー実行が上手く働く可能性が高い
686:デフォルトの名無しさん (ワントンキン MM9f-/3cR)
16/05/12 09:05:01.86 c1sDAwi0M.net
いやいや…
687:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 09:18:46.59 BxH3pzV60.net
URLリンク(cpp.aquariuscode.com)
この件かな
688:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0)
16/05/12 09:33:56.48 rpWGZ4yl0.net
>>671
本来は後置++の方が等速あるいは速い、但しstd::iteratorに限っては前置++の方が速い
そのページはstd::iteratorでも前置++が速いと言う主張だろ
689:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 09:48:47.40 BxH3pzV60.net
>>672
数行のまとめすら読めないのか
690:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 09:51:14.28 BxH3pzV60.net
>>672
と、思ったらそれ以上のバカだったのかな?
いいから後置の方が早い理由を示せよ
691:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0)
16/05/12 09:58:38.72 rpWGZ4yl0.net
>>673
誤字を鬼の首取ったように突っ込むな
誤 そのページはstd::iteratorでも前置++が速いと言う主張だろ
正 そのページはstd::iteratorでも後置++が速いと言う主張だろ
692:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 10:02:26.01 BxH3pzV60.net
>>675
読んだらそんな結論にならないと思うんだけど
693:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0)
16/05/12 10:03:07.66 rpWGZ4yl0.net
>>674
取り敢えずキミは、pentium以降のCPUの高速化技術を検索して、理解してから出直しなさい。
694:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh)
16/05/12 10:10:22.66 3WPpAXGg0.net
特定のCPUを持ち出す必要があるんですか?
695:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 10:11:24.20 BxH3pzV60.net
>>677
取り敢えずキミは、提示された資料を読めるようになってから出直しなさい。もう手遅れかもしれんけど。
696:デフォルトの名無しさん (ワッチョイ 4b7b-XzP0)
16/05/12 10:12:01.44 rpWGZ4yl0.net
>>676
そのページが参照してる
> インクリメントの前後置速度比較
のソース読んでから出直す事だ
> ゲームエンジンアーキテクチャ第二版 プレインクリメント vs ポストインクリメント
の主張を全然反映してないベンチマーク引用してるから、理解力が不足してると迷宮に囚われる
697:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/12 10:13:08.97 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)
16/05/12 10:17:36.81 BxH3pzV60.net
>>681
それ同じ処理じゃねえから、ベンチマークとして不適切
700:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/12 10:21:09.51 DRM/51U40.net
>>682
うん、確かに10億分の1だけ前置のほうが早く終わる処理になってるけど
それでも後置のほうが3%くらい速くなるケースが実際にあった。
10億分の1と3%の比較は出来る?
701:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/12 11:04:31.19 BxH3pzV60.net
>>683
いや、俺が悪かった。
後値を前値に単純に置き換えられるような処理で後値の方が早くなるケースなんてほぼないもんな。
702:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/12 11:28:30.44 DRM/51U40.net
>>684
そうなー。
後置を前置で単純に置き換えれるって事は副作用しか使ってないわけで
副作用しか要求しておらず、コンパイラが最適化をサボる場合には、
余計なインスタンスの生成が走りうる後置よりin-placeな前置の方が速い。
但し、intなんかのbuilt-inな型はコンパイラが最適化してくれる
&そうでない型も処理が見えてればコンパイラが頑張って最適化してくれるので
副作用しか使わなければどっちでも同じ機械語列になるって事は書いてあるね。
でも>>671の先から引用を引用すると
「しかし、値が使われる場合、CPUのパイプラインでストールを生じさせないので、
ポストインクリメントの方が優秀である。
したがって、プレインクリメントの動作が絶対に必要である場合を除いて、
必ずポストインクリメントを使う習慣を身につけたほうがよい。」
とあって、パイプラインストールが起こりうるなら後置のほうが良い事もあるってのが元々の論旨だから
もっと露骨にパイプラインストールが起こるようにコンパイラの最適化を邪魔したら
-O3しても後置のほうが速くなったわ
URLリンク(gist.github.com)
703:デフォルトの名無しさん (ミカカウィ FF6f-Wsqh)
16/05/12 14:57:11.64 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)
16/05/12 15:55:07.83 MyP06V7u0.net
d->v->data()[1].score = 1;
d->v->at(1).score =1; // ただし境界チェックが入る
(d->v->begin() + 1)->score = 1;
705:デフォルトの名無しさん (ワッチョイ ef9f-Wsqh)
16/05/12 16:02:27.95 LsrVgu920.net
>>687
ありがとうございました。そういうやり方があったんですね。
706:デフォルトの名無しさん (ワッチョイ 377b-nbuf)
16/05/12 16:02:54.52 e6oRkxgP0.net
そんなことよりなんでtest::vがポインターなんだよ
newしてないし、[1]にはアクセスできないし、それ動かないよ
いずれにせよ初心者歓迎スレ案件だな
707:デフォルトの名無しさん (ワッチョイ ef9f-Wsqh)
16/05/12 16:15:54.25 LsrVgu920.net
あ、質問スレ他にあったんだ。ここだと思った。
708:デフォルトの名無しさん (ワッチョイ 237b-/3cR)
16/05/12 17:49:55.66 e7uDPICZ0.net
これってよく言われる前置か後置かの問題じゃないでしょ。
変数更新タイミングを使用直前にするか更新可能な一番早いタイミングで行いかの違いで、アルゴリズムの変更を伴う可能性が高い。
その場合後者の方がいいが、コピーして前置でも結果は同じ。
前置か後置かで前置がいいと言われているのは、あくまで単に+1したいってとき。所謂forの3つめ
709:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR)
16/05/12 18:41:37.34 V7G0arWW0.net
>>686
いちいちポインタに直すメリットは?
710:デフォルトの名無しさん (スプー Sd1f-/3cR)
16/05/12 19:09:46.88 V8j8LQpxd.net
メリットデメリットなんて問題にしてないから
711:デフォルトの名無しさん (ワッチョイ 033c-hNIp)
16/05/12 19:23:08.71 wtk4J6jy0.net
ポインタの方がカッコイイじゃないですか。
頭良さそうで。
712:デフォルトの名無しさん (ワッチョイ dbb1-yliF)
16/05/12 20:19:14.11 u4rYymiL0.net
(d->v)とか最高に頭悪そうだな
流れは違うが前置と後置がわかってない、以前に憶える気がない
713:684 (ワッチョイ cbcf-Wsqh)
16/05/12 20:25:17.26 6ncal6FL0.net
>>689
>そんなことよりなんでtest::vがポインターなんだよ
要素数100万くらいのvectorが10個くらいあって、
必要なvectorにいちいちポインタを書き換えてる、じゃダメ?
入門書以外で他人のコード読むことないからぐちゃぐちゃやってる。
714:デフォルトの名無しさん (ワッチョイ 377b-nbuf)
16/05/12 20:36:16.87 e6oRkxgP0.net
>>696
ごめん。何言いたいのか分からない
1M要素くらいの配列が10個くらいあるからってなんだって言うんだろう?
715:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/12 21:04:50.54 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)
16/05/12 21:12:08.75 k4tl7img0.net
>>697
俺も>>696が何言いたいのかわからんが、
>>686の質問からして初心者だろうから、あんまり突ついてもって思う。
少しレベル上がると、今のコード見て恥ずかしい・頭悪いやり方してたんだ
って思うんじゃないか。
717:デフォルトの名無しさん (ワッチョイ 7f13-Q4kq)
16/05/12 21:15:46.74 R6+MliT10.net
>>663
後置インクリメント,前置デクリメントは68系の慣習
718:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W)
16/05/12 21:35:16.27 xhYAhim/0.net
Z-80のpopとpushもそう
719:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W)
16/05/12 21:36:56.40 xhYAhim/0.net
ていうか今日日のコンパイラが
インクリメント前のcの値を使わないケースでも
c++を++cと違うコードに落とすとはにわかには信じ難い
この世には知らないほうが幸せなことがあるのかもしれない…
720:デフォルトの名無しさん (ワッチョイ 2310-0YMq)
16/05/12 22:01:48.84 2OPIh6as0.net
>>686
d->v->operator[](1).score = 1;
721:デフォルトの名無しさん (ワッチョイ 937b-qps8)
16/05/13 08:07:22.18 ApLv0E8+0.net
return c++;
とかで外で値を受け取らないケースで最適化が上手く動くもしくは動かないケースとかなら
あるかもとは思うけど、そんなどうでもいいケース考えてどうすんの?って話ではある。
722:デフォルトの名無しさん (ワッチョイ 37bf-/3cR)
16/05/13 08:44:07.94 Ja7udZmR0.net
・クラス化されたiteratorを使う時には、言語レベルでの手順差が明らかにあるから、とりあえず全て前置使っとけば問題ないでしょ
ていう方法論の話と、
・整数プリミティブ型の場合は後置の方が速い事がある
って言う実測論に近い話をごっちゃにしてはいけないと思うの。
723:デフォルトの名無しさん (スプー Sd1f-/3cR)
16/05/13 11:31:14.81 G/A+aqfad.net
「言語レベル」の手順差?
724:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/13 13:01:39.98 ZUyuraMo0.net
>>702
人間としては同じ意味のコードでも、言語の意味論上は別な意味として解釈しなければならないのだから
最適化前のコードは異なって当然。
んでもって、違うコードを初期地点として独立に最適化を掛ける訳だから
最適化後のコードは異なる可能性がある(偶然一致する可能性もある)。
そういうお話
725:デフォルトの名無しさん (ワッチョイ a763-/3cR)
16/05/13 20:48:02.35 EayoOtAj0.net
>そういうお話
という幻覚を見てしまったようです。
統合失調症ID:rpWGZ4yl0、ID:DRM/51U40と
その他の健常者との噛み合わない会話
726:662 (ワッチョイ 9fa6-Wsqh)
16/05/13 20:56:04.60 y6JoVpFh0.net
鼻ほじりながら書いたら>>666-668あたりで予想通りのレスが返ってきて、それで終わるのかと思いきや
意外と後を引いててワロタw
727:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/13 21:28:43.56 ZUyuraMo0.net
>>708
残念、糖質じゃなくてアスペでした
728:デフォルトの名無しさん (ワッチョイ 2730-o0Hb)
16/05/13 21:41:15.90 na9JUjrP0.net
キチガイの一言で解決しろや
729:デフォルトの名無しさん (ワッチョイ 9302-Wsqh)
16/05/13 23:27:56.30 akm6bXau0.net
いいからアセンブラのコード見ろよ
730:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/14 01:22:12.62 guvuQQ9l0.net
前値を後値に変更して効率的になる場所なんて限られてるからどうしてもその場所のパフォーマンスを上げたいって時の知識として知っててもいいかなぐらいの事だよ
常に後値で書かれたらデメリットが大きすぎる
731:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 08:57:39.96 BsF9lC3v0.net
アセンブリも読めないc++erなんて滅びればいい
732:デフォルトの名無しさん (ワッチョイ a763-/3cR)
16/05/14 09:11:42.00 EHXndh+50.net
アセンブリが読めてもパイプラインの正しい知識の無い人に言われても…
733:デフォルトの名無しさん (ワッチョイ 9302-Wsqh)
16/05/14 10:34:04.60 5qwu2L7o0.net
デジタル回路の正しい知識も必要
734:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 10:37:31.14 BsF9lC3v0.net
そうだね。
1段NOTゲートと3段NOTゲートの違いくらい説明できなきゃね。
735:デフォルトの名無しさん (ワッチョイ 9302-Wsqh)
16/05/14 11:45:07.22 50Ljn6jM0.net
半導体の物性を理解していない人にC++を使って欲しくない
736:デフォルトの名無しさん (ワッチョイ a763-/3cR)
16/05/14 11:53:10.78 EHXndh+50.net
むしろC++を語るのに半導体物性とかアセンブリ言語とかどうでもいい
737:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 12:13:40.02 BsF9lC3v0.net
基礎は大事だろ。
何処まで掘り下げるかって問題はあるけど
738:デフォルトの名無しさん (ワッチョイ 233c-/3cR)
16/05/14 12:43:01.47 eiJc4QAX0.net
なにが悲しくてアセンブリを理解しなきゃならんのだ。
そんなのは言語開発者とコンパイラの仕事だ。
739:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh)
16/05/14 12:53:34.15 jHuAeQfl0.net
ビジネスアプリケーション専門の人ならそうかもしれないが
ハードウェア資源を有効利用しようとした途端アセンブラレベルの知識は必要になるだろ
理解する必要はないが、理解している奴の仕事を代わって引き受けられないな
740:デフォルトの名無しさん (ワッチョイ 3775-yliF)
16/05/14 12:56:54.42 4NwAroGq0.net
なぜか事務処理系の案件もやったことがあるが
ちょっとしたバカの壁を透過するのにアセンブラ使ったぞ
741:デフォルトの名無しさん (JP 0H6f-mfIb)
16/05/14 13:35:56.95 fLeelvLJH.net
なにが悲しくてC++を理解しなきゃならんのだ。
そんなのは組込み・基盤システム開発者の仕事だ。
742:デフォルトの名無しさん (スプー Sd1f-/3cR)
16/05/14 13:59:43.12 K+XlGAeBd.net
まじかよアセンブラer最低だな
743:デフォルトの名無しさん (ワッチョイ 937b-qps8)
16/05/14 14:38:23.70 UFikrM320.net
なにが悲しくてc++を理解しなきゃならんのだ。
そんなのはc++エバンジェリストの仕事だ。
744:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR)
16/05/14 14:42:24.09 QuevABMG0.net
アセンブリの基礎を判ってないとregisterの使い道すらわからんだろ
745:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR)
16/05/14 14:45:28.79 QuevABMG0.net
アセンブラ理解出来てない奴は最適化失敗するときのステートメントの修正方法すら判断つかんだろ
746:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/14 14:46:17.04 guvuQQ9l0.net
C++使ってるのは移植性のためでもあるからレジスタ直接触ることなんてほぼないわ
747:デフォルトの名無しさん (ワッチョイ 233c-/3cR)
16/05/14 14:52:23.85 eiJc4QAX0.net
アセンブリだのレジスタだの、そういう低レベルな処理をプログラマが考える必要を無くしていくのがコンパイラとその設計者の仕事でしょうが。
748:デフォルトの名無しさん (スプー Sd1f-/3cR)
16/05/14 15:12:38.19 K+XlGAeBd.net
まじかよアセンブラer大海を知らずだな
749:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh)
16/05/14 15:34:48.60 jHuAeQfl0.net
移植のこと効力するなら、それこそソースレベルで分けていけばいい話だと思うけどね
750:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh)
16/05/14 15:35:45.78 jHuAeQfl0.net
× 移植のこと効力するなら
○ 移植のことを考慮するなら
751:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W)
16/05/14 15:41:24.26 XQsBVmZY0.net
>>729
リーナスに殺されるぞ…
752:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W)
16/05/14 15:45:05.04 XQsBVmZY0.net
漏れの無い抽象化は言うほど簡単ではない
C++ぐらいではまだまだ低水準レイヤーの話を切り離すわけにはいかない
そもそもこの言語の最初の開発動機がSimulaの高速化であって
抽象化された高水準レイヤーとCPUアーキテクチャとメモリが透けて見える低水準レイヤーの
境にあるんである
753:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 16:37:14.60 BsF9lC3v0.net
今はグラフ彩色アルゴリズムで準最適なレジスタ割り当てが出来るってばっちゃが言ってた
register使ったこと殆ど無いわ
crubyのC拡張書くのに使った事はあるけど
754:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/14 16:57:46.20 guvuQQ9l0.net
registerってキーワードの事言ってるの?
755:デフォルトの名無しさん (ワッチョイ a763-/3cR)
16/05/14 17:15:25.88 EHXndh+50.net
>>727から733まではCPUレジスターの話だったけど
突然>>736がstorage class specifierの話をし出した
756:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 17:18:52.05 BsF9lC3v0.net
> アセンブリの基礎を判ってないとregisterの使い道すらわからんだろ
この文を適切に補完すると
(それはCの一要素でありながら) (ry
ってなるだろうからキーワードの方だと思ったけど
違った?
757:デフォルトの名無しさん (ワッチョイ a763-/3cR)
16/05/14 17:27:09.65 EHXndh+50.net
一見その様な日本語にも見えるが、
規格では「殆どの処理系で無視されるのでdeprecated」になっていて
次期改訂のドラフト4582からも削除されてしまったキーワードについて
使い道を主張するとは考えにくい
758:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX)
16/05/14 17:31:14.33 BsF9lC3v0.net
にほんごむずい
759:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh)
16/05/14 18:05:33.36 jHuAeQfl0.net
register キーワードはアセンブリというより、コンパイラの知識じゃないのかな
今のコンパイラは賢いから最適化して割り当てるので、
変に使うとかえって効率を落としかねないから使うなって教わった
760:デフォルトの名無しさん (ワッチョイ 6f3c-/3cR)
16/05/14 18:06:21.55 W/mpGy/20.net
>>740
>>727 がそう言うことを熟知していると仮定するのもどうかと思うが
761:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/14 18:35:40.54 guvuQQ9l0.net
registerキーワードが無意味なのは常識だと思ってた
762:デフォルトの名無しさん (ワッチョイ 9302-Wsqh)
16/05/14 18:36:20.83 50Ljn6jM0.net
無意味にスタックに積んでからすぐ取り出して使うゴミみたいなコンパイラならそれを止められるから意味ある
763:デフォルトの名無しさん (ワッチョイ b79d-hNIp)
16/05/14 20:30:12.22 stGv22ss0.net
組み込みの開発ってやったことないんだけど、ベンダーが提供するコンパイラ
しか使えない場合が結構あるんでしょ? そうなるとそれがゴミみたいな代物
なら >>745 だと思う。
764:デフォルトの名無しさん (ワッチョイ 937b-UkU1)
16/05/14 21:33:09.63 guvuQQ9l0.net
大抵gccベースだけどな
765:デフォルトの名無しさん (ワッチョイ 3764-yliF)
16/05/15 06:32:49.04 U+van56a0.net
>>742
教わった、のはいいが
ちゃんと自分で再検証したか?