[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/10 14:55 / Filesize : 275 KB / Number-of Response : 1033
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part124



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

384 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:25:12.54 ID:V/Rz0lGL6.net]
>>374
test2は最初からtest1の下に用意されているものです。
絶対パスは、配布する場合などに使えないので相対パスで指定の方法を考えていました。
今は教えてもらった通りで動いていますが、動かなくこともありますか?

385 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 19:29:01.28 ID:GdZkeqisK.net]
【ディレクトリ・パス関連のAPI(テストに出るかも)】
GetCurrentDirectory
SetCurrentDirectory
GetModuleFileName
GetWindowsDirectory
GetSystemDirectory
GetTempPath
GetTempFileName
GetFullPathName
SHGetSpecialFolderLocation
SHGetSpecialFolderPath
SHGetPathFromIDList

386 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 19:31:57.84 ID:GdZkeqisK.net]
このGetModuleFileName を使えば、読み込んだDLLのフルパスや現在実行中のEXEのフルパスが得られる。

387 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:41:24.27 ID:V/Rz0lGL6.net]
>>379
何度もすみません。
exeの方の使い方は分かりましたが、
.dllのフルパスを取得してもどうすればいいのか分かりません。
調べると、.dllもカレントディレクトリから呼ばれる、とあったので、プログラムでsetcurrentdirectlyをしたついでに、.dllも読み込んでくれるかと新しいディレクトリの方に.dllを全部移してみたのですが、dllがないというエラーが吐かれました。

388 名前:デフォルトの名無しさん (ワッチョイ ef9f-qtmS) mailto:sage [2016/05/02(月) 19:49:22.82 ID:rwpIh2xK0.net]
>>375
遅延読み込みするDLLを除いて通常の方法ではmain/WinMain関数に
制御が渡った時点でDLLのロードは終わって居るのでプログラムから制御するには
かなり特殊な手段を用いることになる
 ⇒ だから一般的にはやらないし、無理って言う人も居る

あと、スレ違いだから

389 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:57:48.05 ID:V/Rz0lGL6.net]
>>381
ショートカット作成のプロパティから簡単に出来るので、プログラムでも簡単に出来るかと思ったのですが、難しいのですか…
スレ違いなのは分からずすみませんでした。
よければ、どこのスレに行けばいいのか分かりませんので教えて貰えますでしょうか?

390 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 19:58:23.64 ID:GdZkeqisK.net]
スレチなのでスレ誘導します↓

Win32API質問箱 Build122
echo.2ch.net/test/read.cgi/tech/1451988219/

391 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/02(月) 19:58:58.17 ID:3YV7E0Ft0.net]
>>377
>>374 はアホだから気にしなくていい

392 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:59:04.30 ID:V/Rz0lGL6.net]
>>383
ありがとうございます、移動します。
お騒がせしましたどうもすみません。



393 名前:デフォルトの名無しさん (ワッチョイ a77b-1+8h) mailto:sage [2016/05/02(月) 20:31:02.13 ID:btgv3pKW0.net]
>>384
別に決め打ちの絶対パスで指定しろとは言ってないからね
そう解釈したならアホはお前
実行ファイルからの相対パスを指定したいならGetModuleFileNameで実行ファイルのパスを取って
目的とするファイルの絶対パスを作るのが定石

394 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/02(月) 20:59:05.00 ID:3YV7E0Ft0.net]
>>386
> 起動時のカレントディレクトリがどこになってるかについて仮定しちゃいけない
がバカって言われていることも理解できてないのかよ...

395 名前:デフォルトの名無しさん (ワッチョイ 2f57-Huko) mailto:sage [2016/05/02(月) 20:59:28.28 ID:B7fwjF4l0.net]
コロン二つはstd::cinのように名前空間で区別するために使いますが、これはクラスで区別するときにも使うのですか?
クラスtestで、void test::sample(){...}の様に、です。

396 名前:デフォルトの名無しさん (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 21:01:18.03 ID:GdZkeqisK.net]
>>388 Yes.

397 名前:デフォルトの名無しさん (ワッチョイ a77b-1+8h) mailto:sage [2016/05/02(月) 21:06:07.95 ID:btgv3pKW0.net]
>>387
で?仮定していいとでも思ってるの?
「バカって言われてる」ってそんなバカなこと言ってるのはお前しか見えないけどなw

398 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 21:11:40.51 ID:GdZkeqisK.net]
CreateProcessやショートカットの設定でexe起動時のカレント
ディレクトリーを変更できることは、知っておいても損しないだろう。

399 名前:デフォルトの名無しさん (ワッチョイ 2f57-Huko) mailto:sage [2016/05/02(月) 21:15:09.99 ID:B7fwjF4l0.net]
>>389
ありがとうございます

400 名前:デフォルトの名無しさん (ワッチョイ 3f56-hBSK) mailto:sage [2016/05/02(月) 21:26:05.14 ID:14Ao2YKq0.net]
>>388
一応、呼び方は「スコープ解決演算子」な
https://msdn.microsoft.com/ja-jp/library/b451xz31.aspx

401 名前:デフォルトの名無しさん (ワッチョイ 2f57-Huko) mailto:sage [2016/05/02(月) 21:32:28.67 ID:B7fwjF4l0.net]
おお、ありがとうございます

402 名前:デフォルトの名無しさん (ワッチョイ 2742-OoOA) mailto:sage [2016/05/02(月) 21:32:59.60 ID:IfsZ2QOP0.net]
このやりとりって、Windows限定なのか、それともOSを限定せずにプログラム一般での話なのか
どっちなの?



403 名前:デフォルトの名無しさん (オッペケ Sre7-hBSK) mailto:sage [2016/05/02(月) 21:35:36.19 ID:zmzMdNqXr.net]
Windowsとそれ以外で何か事情がかわるのだろうか

404 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/02(月) 21:35:54.15 ID:3YV7E0Ft0.net]
>>390
誰も仮定してないんだが...
マジでバカなの?

405 名前:デフォルトの名無しさん (ワッチョイ a77b-1+8h) mailto:sage [2016/05/02(月) 22:14:34.12 ID:btgv3pKW0.net]
>>397
少なくとも質問者の>>363は仮定してるだろ
もうお前はいいよ

406 名前:デフォルトの名無しさん (ワッチョイ 2742-OoOA) mailto:sage [2016/05/02(月) 22:33:31.86 ID:IfsZ2QOP0.net]
何か知らないOS環境でもあってさ、そこでの動きが標準的な物と違っていて

それを根拠に、仮定するのは誤りだと結論を出してくるとか、ありそうだし

407 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/02(月) 22:45:30.28 ID:IsbB/noh0.net]
>質問者の>>363は仮定してるだろ

>>397の意図は不明だが、これは言葉のすり替えだな
「誰も」とは「俺は言ってない」ぐらいの意味だろう

408 名前:デフォルトの名無しさん (ワッチョイ a77b-1+8h) mailto:sage [2016/05/02(月) 23:25:56.25 ID:btgv3pKW0.net]
いやいや「誰も」=「俺は」こそ言葉のすり替えだな
>>397みたいな何を言いたいのかすら分からないイチャモンつけるような
明白なバカ・ドジ・マヌケが何考えてようがもうどうでもいいよ

409 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/05/03(火) 00:46:50.12 ID:yoJxNR5i0.net]
カレントディレクトリがどこになってるか仮定しちゃいけないってどういう事?

410 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/03(火) 06:11:23.04 ID:m0WSkRh/0.net]
>>402
> カレントディレクトリがどこになってるか仮定しちゃいけないってどういう事?
絶対にダメと言うわけじゃない
ただ必要もないのにカレントディレクトリがどこかにあることを仮定して作ると当然その場所にないとうまく動かないから使い辛いってこと
ちなみに >>363 はカレントディレクトリの設定についての質問で「起動時の」カレントディレクトリについてはなんの仮定もおいてない

411 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/05/03(火) 06:32:35.85 ID:yoJxNR5i0.net]
それって仮定しちゃいけないとかいう話じゃなくて、カレントディレクトリがシステムによってどう設定されてるか理解すべきって話じゃないの?

412 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/03(火) 07:08:25.20 ID:m0WSkRh/0.net]
>>404
何を言ってるのかさっぱりわからん
カレントディレクトリなんて >>391 の言うようにショートカット等でも変更できる
一時的に特定のカレントディレクトリで起動するためにコマンドプロンプトから実行したりもできる



413 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/05/03(火) 09:06:38.37 ID:yoJxNR5i0.net]
理解出来ないならいいですわ

414 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/03(火) 09:44:09.25 ID:WLZfBkZE0.net]
>>405
>>404>>403の後半が読めていなくて「仮定」の単語に反応したようだ

415 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/05/03(火) 09:59:16.67 ID:yoJxNR5i0.net]
>>407
そりゃ質問がそうだからな、返答にそれを期待するのが当たり前

416 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/03(火) 11:14:03.25 ID:m0WSkRh/0.net]
>>407
>>403 の後半は >>402 に関係しないから読み飛ばしてもらっていいよ
ただ前半読んで >>404 の質問出るのが意味不明
>>405 に書いたように起動時のカレントディレクトリはどうとでも設定できるから
> カレントディレクトリがシステムによってどう設定されてるか
って言われても、はあ?
としか返せんし、そもそも元の話は起動されたプログラムの話だし

417 名前:デフォルトの名無しさん (ワッチョイ 6f3c-1woS) [2016/05/03(火) 19:39:34.60 ID:G9XEXQGe0.net]
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrent(Covenant)が活発な情報交換・交流コミュニティでオープンソース開発されています(プログラマー募集中)

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise氏)がそういう人と話したいそうなので、よろしければツイートお願いします<(_ _)>
https://twitter.com/Lyrise_al

ちなみにオイラは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的に分散され、特定のサーバーに依存しません
[]
[ここ壊れてます]

419 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/05/03(火) 20:03:21.71 ID:yoJxNR5i0.net]
>>409
起動時のカレントディレクトリがどうとでも設定できるのと仮定しちゃいけないが繋がらないのよ
ユーザーが作業中のディレクトリと仮定しないとrmとかlsとか基本的なコマンドすら実装出来んぞ

420 名前:デフォルトの名無しさん (ワッチョイ cfe5-6p9G) mailto:sage [2016/05/03(火) 20:15:22.49 ID:Ga2JkeKt0.net]
このところずっとカレントディレクトリの話題ばかりだな。飽きた

421 名前:デフォルトの名無しさん (ワッチョイ 6f3c-hBSK) mailto:sage [2016/05/03(火) 20:34:36.80 ID:m0WSkRh/0.net]
>>411
> 起動時のカレントディレクトリがどうとでも設定できるのと仮定しちゃいけないが繋がらないのよ
えっ?
ユーザーがどうとでも設定できるからどこかに固定的に設定してるって思っちゃダメ
ってだけの話なんだが理解できないの?

> ユーザーが作業中のディレクトリと仮定しないとrmとかlsとか基本的なコマンドすら実装出来んぞ
はあ、そうですね...

422 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/05/03(火) 22:10:52.96 ID:TF5VRcqZ0.net]
これまでの流れに参加してなかったけどDllMainでGetModuleFileNameを呼び出せばいいことはわかった。
Dllがシンボリックリンクのときはリンク元じゃなくてそのファイルのパスが返ってくることもわかった。



423 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/03(火) 22:16:37.60 ID:WLZfBkZE0.net]
へー、kwsk

424 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/05/03(火) 22:38:09.58 ID:TF5VRcqZ0.net]
いや単に初めて使った感想というだけで...

425 名前:デフォルトの名無しさん (スプー Sdaf-x9NC) mailto:sage [2016/05/04(水) 13:12:57.15 ID:opeX4EM+d.net]
もっとそういうdll関連の勉強したいんだけどいい資料ってない?
msのドキュメントって断片的でピンとこないことご多いんだ
英語でもいいぞ

426 名前:デフォルトの名無しさん (オッペケ Sre7-hBSK) mailto:sage [2016/05/04(水) 13:22:50.71 ID:49qgq2vTr.net]
むしろ日本語のドキュメントは読んではいけない

427 名前:デフォルトの名無しさん (ワッチョイ 137b-ohpd) mailto:sage [2016/05/04(水) 13:57:04.66 ID:8Bwnd+Rb0.net]
MSのドキュメント(Dynamic-Lunk Library Functions)全部読む
パラメーターの意味まで全部読む

428 名前:デフォルトの名無しさん (ワントンキン MM6f-hBSK) mailto:sage [2016/05/04(水) 14:04:17.38 ID:ThMOcBqYM.net]
dllmainとか書いたことない
VisualStudioならターゲットプロジェクトをdllにして、__declspec(dllexport)でエクスポートするだけだろ
まぁ実際はVisualStudioが裏でdllmainを作ってくれてるんだろうけど

429 名前:デフォルトの名無しさん (ワッチョイ b730-OoOA) mailto:sage [2016/05/04(水) 14:16:57.26 ID:qX1/u2G+0.net]
定型処理やりたいなら便利だけど
それ以外なら使わないかもね

430 名前:デフォルトの名無しさん (ワッチョイ ef9f-qtmS) mailto:sage [2016/05/04(水) 14:51:19.35 ID:buqbh7+Y0.net]
スレチが分からない程度の奴には難しいと思う

431 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/05/04(水) 18:21:57.24 ID:lMLuHG3fa.net]
>>419
読みにくい! PDFで下さい! 印刷して読みます!

432 名前:デフォルトの名無しさん (ワッチョイ 137b-ohpd) mailto:sage [2016/05/04(水) 19:13:29.48 ID:8Bwnd+Rb0.net]
>>423
1ページ5000円で変換してやるよ



433 名前:デフォルトの名無しさん (ワッチョイ 57cb-OoOA) [2016/05/04(水) 19:19:40.35 ID:D8cbd8TW0.net]
印刷したのをメールで送ってやる

434 名前:デフォルトの名無しさん (ワッチョイ 13f8-Ke/D) mailto:sage [2016/05/04(水) 19:31:12.53 ID:p+LvbHBp0.net]
保護されたPDFが届く図

435 名前:デフォルトの名無しさん (ワッチョイ ff73-2IYS) mailto:sage [2016/05/05(木) 13:30:55.57 ID:KKWEgRGW0.net]
文字列で学ぶC++入門
ttp://qiita.com/7shi/items/cac7b3e9b90bf91b00cc
vs2015で少し勉強しています
strcat_s(str,len+1,s.str);
を使用して文字列をつないでいます
strcat_sの説明にstrの格納領域とs.strの格納領域に重複がある場合
動作は不定ですとあります
自己複写
mystr a="abc";
a+=a;
はエラーで停止したので対処コードを書きました
重複がある場合素直にエラーで停止することにお任せでよいかな?
呼び出しする方の使い方が悪いってことで

436 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/05(木) 13:47:53.97 ID:O83ZUOpH0.net]
>>427
仕様はこっちからどうこう言うべきじゃないけど、できないならできない反応をするべき。
エラー値返すとか例外投げるとか。

437 名前:デフォルトの名無しさん (ワッチョイ 400b-Xnmr) [2016/05/06(金) 00:22:14.99 ID:uBaztVrf0.net]
>>427
strcatは文字連結というより
ただのメモリの範囲コピーであることを考えれば
メモリ領域を重複させるのは意味不明でお菓子な動作を引き起こすことは常識的にわかる

それに対してmystrのa+=a;はaが文字列オブジェクトを名乗るなら
a=

438 名前:デフォルトの名無しさん (ワッチョイ 400b-Xnmr) [2016/05/06(金) 00:23:49.40 ID:uBaztVrf0.net]
切れた
a="abcabc"となるのを期待するのがふつう

なので対処コードを書くべき

439 名前:デフォルトの名無しさん (スプー Sdb8-wv7z) [2016/05/06(金) 01:23:00.59 ID:U/b+V/yed.net]
template< typename A, typename B > using hoge = A< B >;
こうしたいのですができません。
いい方法教えてください

440 名前:デフォルトの名無しさん (ワッチョイ bd7b-fQUW) [2016/05/06(金) 04:40:09.49 ID:uf2wlWDJ0.net]
やりたいのは template template parameters かな
https://ideone.com/0KvwZt

441 名前:デフォルトの名無しさん (ドコグロ MM74-wv7z) mailto:sage [2016/05/06(金) 05:19:27.01 ID:vu9mhOpwM.net]
a += a; なんて未定義動作にしか見えないんだけど...

442 名前:デフォルトの名無しさん (ワッチョイ bd7b-ecJ+) [2016/05/06(金) 05:44:36.56 ID:uf2wlWDJ0.net]
>>433
そう?
std::stringは普通に動くよね?
実装上の問題もないし



443 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/06(金) 08:25:16.93 ID:dFoYv6n+0.net]
○ a += a;
× a += a.c_str();

444 名前:デフォルトの名無しさん (ワッチョイ ff73-xz+g) mailto:sage [2016/05/06(金) 12:31:28.89 ID:v84XfFkE0.net]
>>427
文字列で学ぶはとても勉強になっています
あとは、うろ覚えの状態でカンニングしないように
mystrを自分でコーディングしてみる
基本的なエッセンスがギュって詰まってる
テンプレート機能とかは別の教材さがします。

445 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 16:38:31.12 ID:W8QBH6Wip.net]
main(){
loop1();
while(1){
loop2の処理

return;


void loop1(){
while(1){
loop1の処理



のようにした時に、関数loop1の最中に並列でloop2の処理に向かってしまうようです。
loop1を呼んでいる最中に進まないようにする方法はありませんか?

446 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 16:43:28.12 ID:W8QBH6Wip.net]
ちなみに補足すると、loop1は特定のキー入力でbreakします
そのキー入力でbreakするまではloop2に入って欲しくない、ということです。

447 名前:デフォルトの名無しさん (ワッチョイ ff73-5iF2) mailto:sage [2016/05/06(金) 17:30:16.10 ID:v84XfFkE0.net]
c++だよね、普通にブレークポイント入れて動作確認したら一発ちゃう
並列なライブラリでも使っているの??

448 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/06(金) 17:33:14.52 ID:zXXHgXCN0.net]
forkでもしない限り並列化せんだろ

449 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 18:01:27.30 ID:W8QBH6Wip.net]
すいません、よく確認するとloop2に入っているのではなく、
ボタンコールバック(loop2で使う)を拾っているだけで実際にはloop2には入っていませんでした。
で、このコールバックをloop1の最中に拾われるとエラーになるんですけどどうすればいいですか?
loop1はいわゆる確認ダイアログ的なやつで、無限ループにしてあって、マウスコールバックで特定領域をクリックすると抜け出すようになってるんですけど
このループの最中に他のボタンコールバックを無効にするにはどうすればいいですか?

450 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 18:05:53.80 ID:W8QBH6Wip.net]
というか、loop1のコールバックが登録されてるウインドウ以外を一時的に操作できなくしたいのですが、可能ですか?

451 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 18:11:14.30 ID:W8QBH6Wip.net]
すいません、組み込んだライブラリのせいみたいなので取り下げます

452 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 20:17:54.26 ID:W8QBH6Wip.net]
whileで無限ループの中をグルグル回っている最中でも
組み込んだライブラリの関数が勝手に動くんですが、これは普通ですか?
具体的には、mainで無限ループしている最中にも関わらず
特定のボタンをクリックすると別の関数が走ってウインドウ内のスクリーンショットが作成されます
他の関数に制御取られない方法はないですか?



453 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 20:44:03.17 ID:W8QBH6Wip.net]
ちなみにメッセージボックス作ってそこにブレークポイント置いてデバッグ実行して、そのブレークポイントで停止している時でも
ボタンを押すとおかまいなしに勝手に動いてスクリーンショットを作りに行きます。
出力先ディレクトリの選択ダイアログとかも出るのに、この間デバッグのログに一切動きなし。
どうすれば??

454 名前:デフォルトの名無しさん (ワッチョイ f64e-wv7z) mailto:sage [2016/05/06(金) 20:59:24.09 ID:k5bIkp2l0.net]
質問の仕方から教えなければならんのか…?

455 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 21:06:05.42 ID:W8QBH6Wip.net]
すみません、不慣れなので出来ればお願いしたいです

456 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/06(金) 21:15:11.86 ID:ieYvqp+A0.net]
賢い質問のしかた
www.ranvis.com/articles/smart-questions.ja.html

457 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 21:16:54.21 ID:W8QBH6Wip.net]
つまり僕はどうすればいいですか…?

458 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/06(金) 21:23:50.67 ID:ieYvqp+A0.net]
賢い質問のしかた: 回答の読み方 理解できないときは…
www.ranvis.com/articles/smart-questions.ja.html#lesser

459 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 21:26:44.03 ID:W8QBH6Wip.net]
すいません、よく分からないのでやはり質問の仕方よりもプログラムのやり方を教えて欲しいです

460 名前:デフォルトの名無しさん (ワッチョイ 21c1-cHFQ) mailto:sage [2016/05/06(金) 21:30:20.27 ID:R+qFy6/e0.net]
>>451
「組み込んだライブラリ」の作者にきくか、そのライブラリを組み込まない

461 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 21:47:37.87 ID:W8QBH6Wip.net]
>>452
それは最もなのですが
無限ループやメッセージボックスの応答待ちの時にでも外から割り込んで関数を走らせることは可能なのですか?

462 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/06(金) 22:08:00.65 ID:dFoYv6n+0.net]
>>444
>これは普通ですか?
糞ライブラリではよくあること
>他の関数に制御取られない方法はないですか
一般的には糞ライブラリの挙動を制御する方法は無い

わかったらスレ違いの荒らしは去れ



463 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 22:24:03.60 ID:W8QBH6Wip.net]
>>454
ありがとうございます
なるほど、そうなのですか…それは大変
ところでどうしてスレ違いなのですか?

464 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/06(金) 22:38:48.68 ID:tz5jr0Roa.net]
あっ、触っちゃいけないタイプだ!

465 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 22:43:07.34 ID:W8QBH6Wip.net]
>>456
そんなこと言わずに教えてください
初心者なので本当にわからないのです…

466 名前:デフォルトの名無しさん (ワッチョイ 1d30-znPs) mailto:sage [2016/05/06(金) 23:18:37.39 ID:ikTXVpGc0.net]
イベントドリブンでぐぐっ…ても具体的でわかりやすい説明は
すぐにはでてこないがとりあえず調べな

467 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/06(金) 23:22:22.12 ID:vy9oFqn70.net]
ideone.com/ZNjwn0
とりあえず、ソースコードやるから落ち着け。
再現してみたけどこれからどうしたい。

468 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/06(金) 23:30:41.46 ID:vy9oFqn70.net]
イベントドリブンで動いてて、ループ内にブレーク相当の構文があるか、外部でスレッドを使ってるか。
どっちかが可能性高い。

469 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/06(金) 23:54:59.03 ID:W8QBH6Wip.net]
>>459
それぞれのループに入る前にウインドウを生成しています。(window1とwindow2)
window1はいいのですが、window2は外部ライブラリの関数で作成したウインドウで、メニューバーみたいなボタンが最初から付いています
そのボタンの一つが、ウインドウのスクリーンショットを取るボタンなのですが、loop1の中でも動いちゃいます
loop1のループの中ではそのライブラリの関数を使っていないので、恐らく外部スレッド?の方だと思いますが
外部スレッド?の侵入を一時的に不可にする方法があれば知りたいですけど、ないようですね…

470 名前:デフォルトの名無しさん (ワッチョイ e095-5iF2) mailto:sage [2016/05/07(土) 00:07:03.33 ID:DL6sNyRg0.net]
>>461
ひょっとして、そのライブラリは

471 名前:exeをキックしているだけでメニューバーみたいなボタンのウィンドウは別のプロセスなんてことはないの? []
[ここ壊れてます]

472 名前:デフォルトの名無しさん (ワッチョイ 9c9d-APoh) mailto:sage [2016/05/07(土) 00:13:50.15 ID:pheDUhx40.net]
>>461
ここで聞くより、外部ライブラリ作者に聞くのが良いよ
もし、現状できないって言われたら、作者にこうできるようにしてって必死にする



473 名前:デフォルトの名無しさん (ワッチョイ b551-5iF2) mailto:sage [2016/05/07(土) 00:16:10.71 ID:LMdi7EDF0.net]
マウスクリックでループから抜けるというんだからUIのイベントループが回ってるんだろ。
それ止めたらloop1からも抜けられなくなるが?
特定領域のクリックは受け付けるけどスクリーンショットのボタンは無効にしたいってんなら
そのライブラリの使い方調べてみるしかないだろう。どっちにしてもC++の質問じゃない。

474 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 00:19:48.62 ID:qCADCCRG0.net]
ideone.com/cuzrR7
こういう感じのこともC++では可能。
と、かこうとおもったところで、Windowsの質問はすれ違いだ。

475 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/07(土) 00:20:02.90 ID:AgRcX6YRp.net]
>>462
タスクマネージャーで調べてみたけどそんなことはなかったです(この調べ方で合ってるですかね)

>>463
Qtとかいうやつなんですけど作者だれかイマイチ分からないし別に無理なら無理でグローバル変数使って無理やりなんとかすることにします
ただ外部関数?を簡単に押さえこめるような方法があるかなーと思ったのですが、思いの外複雑なやうですね。ありがとうございました

476 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 00:21:02.88 ID:qCADCCRG0.net]
外部ライブラリの作者に聞くがよい。

477 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 00:21:50.44 ID:qCADCCRG0.net]
>>466
QTなら普通の商用ライブラリなのでマニュアル読み直せ。

478 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/07(土) 00:28:25.31 ID:AgRcX6YRp.net]
>>468
デバッグモードで追いかけてみましたが、初心者の自分には何してるさっぱりで、途中でqtimer.cppが見つからないとかいって追いかけれなくなるしで散々でした
とりあえず簡単には外部関数?を制御出来ないことが分かっただけでも収穫になりましたのでどうもありがとうございました

479 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 00:31:08.95 ID:qCADCCRG0.net]
普通制御メソッドはついてるもんだが、マニュアル嫁としか言いようがないな。

480 名前:デフォルトの名無しさん (ワッチョイ 9c9d-APoh) mailto:sage [2016/05/07(土) 00:37:04.59 ID:pheDUhx40.net]
>>466
Qtの特長の一つであるSignel-Slotあたりが原因って感じがするが
まぁ、QtならここよりQtスレで聞いたほうが良い。

481 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/07(土) 00:42:09.98 ID:gfii433/0.net]
どう見ても質問者が発生している事象を正しく認識できていないように見える
間違った見当外れの説明を元にアドバイスしてもやはり見当外れになるだけ
もう少し本人がスキルアップするかQtスレで親切なエスパーを待つ他に無い

482 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 00:56:14.88 ID:qCADCCRG0.net]
初心者はどうしてこう情報を小出しにするのか。
QTって最初から言ってたら、誘導されてたかもしれんのに。



483 名前:デフォルトの名無しさん (ワッチョイ be5b-aqUl) mailto:sage [2016/05/07(土) 01:02:43.31 ID:tnQnmuW40.net]
何が必要かわからんから小出しにしちゃうんだよ……
わからんからこそ全部出すべきってのもわかってはいるんだが

484 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/07(土) 01:03:04.65 ID:AgRcX6YRp.net]
>>473
ちょっと分からなかったんですよね、というのも
またこんなこと言うと情報小出しと怒られそうですけど
実はちゃんとしたQtじゃないんですよ。opencvのバックエンド?とかいうやつで
元々、opencvを勉強していたんですが、途中でQtってのを組み込むとGUIがちょっと綺麗になるよっていうの発見したのでopencvの関数にqtを組み込んだやつを使ってみたら例外がいっぱい起こってしまいてんてこ舞いという感じでした
次回から情報を小出しにしないように気をつけますありがとうございます

485 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 01:07:00.66 ID:qCADCCRG0.net]
>>475
キレるぞマジで。最初からそれを書け。

486 名前:デフォルトの名無しさん (ワッチョイ 778c-jFV0) mailto:sage [2016/05/07(土) 01:13:45.79 ID:4oP6NddQ ]
[ここ壊れてます]

487 名前:0.net mailto: やばすぎて流石に草
もっと叩け 今度は
実はPython版OpenCVでしたとか言い出すぞw
[]
[ここ壊れてます]

488 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/07(土) 01:15:11.33 ID:qCADCCRG0.net]
安心しなさい、まだ一歩前で止まってるから。

489 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/07(土) 02:19:33.54 ID:hrppdYsNa.net]
やっぱり触っちゃいけないタイプだった

490 名前:デフォルトの名無しさん (ワッチョイ 5e3c-wv7z) mailto:sage [2016/05/07(土) 05:36:01.95 ID:MCMf/Qi90.net]
>>444 の時点でライブラリ名を書いてないような奴にいちいち構うなよ...

491 名前:デフォルトの名無しさん (ワッチョイ b9b4-7Olf) mailto:sage [2016/05/07(土) 12:16:58.48 ID:GYpWU44C0.net]
コピー禁止(ムーブは可能)なクラス A について
vector<A> vec;
としたとき、
A *a = new A(5 /* 引数は適当 */);
な a を vec に追加するにはどうしたらいいですか?

492 名前:デフォルトの名無しさん (ワッチョイ b96c-f78H) mailto:sage [2016/05/07(土) 12:21:20.92 ID:wuS0ySL80.net]
vectorのallocatorをいじるんかな



493 名前:デフォルトの名無しさん (ワッチョイ 88cb-7Olf) [2016/05/07(土) 12:25:54.60 ID:OK0jFuMO0.net]
emplaceとか?

494 名前:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4) mailto:sage [2016/05/07(土) 12:37:16.87 ID:50MP5ems0.net]
コピーは禁止だけどムーブはオッケーって時点で
シングルトン風味なのにそれをベクターにしたいとか
なんかめちゃくちゃじゃないの。

495 名前:480 (ワッチョイ b9b4-7Olf) mailto:sage [2016/05/07(土) 12:44:25.73 ID:GYpWU44C0.net]
>>484
「あるクラスのインスタンスがひとつ」なのがシングルトンでは?
>コピーは禁止だけどムーブはオッケー
の場合、「各状態のインスタンスが高々ひとつ」の意味なので
vector で管理するのは別に変ではないような気がします

496 名前:デフォルトの名無しさん (スプー Sdc8-wv7z) mailto:sage [2016/05/07(土) 12:44:58.07 ID:NjSdOFLzd.net]
unique_ptrをvectorに入れるときのイメージかな?

https://msdn.microsoft.com/ja-jp/library/hh279676.aspx

497 名前:デフォルトの名無しさん (ワッチョイ bd7b-fQUW) [2016/05/07(土) 13:02:19.07 ID:5xFs3i7R0.net]
https://ideone.com/SAS4fK

498 名前:480 (ワッチョイ b9b4-7Olf) mailto:sage [2016/05/07(土) 13:36:55.97 ID:GYpWU44C0.net]
>>486
状況としては似てる…けどちょっと違います
vector の中は unique_ptr の指している実体、という状況です

>>487
>>483 でも言われましたが、コンストラクタに渡すべき引数が
外部から分かるなら emplace_back でいいですね

結局こんな感じで、move() 関数を作りました
https://ideone.com/BgtPGR
問題は
1. new で確保したインスタンスに対して呼ばないと死ぬ
2. delete this が激しくキモい
ことです

499 名前:480 (ワッチョイ b9b4-7Olf) mailto:sage [2016/05/07(土) 13:43:49.86 ID:GYpWU44C0.net]
あ、考えてみたら delete this はいらないですね
解放の責任は new した側にありますし
やったーできたー

500 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/07(土) 13:46:19.11 ID:5xFs3i7R0.net]
>>489

std::moveを使わない理由は?

501 名前:デフォルトの名無しさん (ワッチョイ b9b4-7Olf) mailto:sage [2016/05/07(土) 13:53:37.12 ID:GYpWU44C0.net]
>>490
あれ、できました
さっきまで、さっきまで動かなかったはずのコードなのに…
ありがとうございます…

502 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/07(土) 14:07:18.10 ID:lqutBYGs0.net]
vectorにvoidポインタとしてアドレスをぶち込めばどんなクラスでも型が違っても無制限にぶち込めるぞ



503 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/07(土) 14:24:19.18 ID:9/SiGFfq0.net]
取り出すときにキャスト必須だがな

504 名前:デフォルトの名無しさん (ワッチョイ 32a6-7Olf) mailto:sage [2016/05/07(土) 14:24:21.49 ID:Nq/4SgpV0.net]
どうやって使うのだろう?

505 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/07(土) 14:52:34.98 ID:ISmmGMjJ0.net]
>>492
>無制限にぶち込めるぞ
唐突にどうした。アスペか?

506 名前:デフォルトの名無しさん mailto:sage [2016/05/07(土) 16:05:54.27 ID:hfPhBXdU5]
>>488
delete this;なんて書き方初めて見た。
これC++的にはOKなんだろか。

507 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/07(土) 20:19:39.58 ID:bJut0jV40.net]
char str[32];


508 名前://いろいろな処理

char[6] = 0;
と記述していたら、先輩から
char[6] = '\0';

と修正されたんですが、意味違いますか?
[]
[ここ壊れてます]

509 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/07(土) 20:20:05.88 ID:bJut0jV40.net]
str[6] = 0;
str[6] = '\0';
です

510 名前:デフォルトの名無しさん (ワッチョイ 32a6-7Olf) mailto:sage [2016/05/07(土) 20:33:55.18 ID:Nq/4SgpV0.net]
文字列としての配列であれば '\0' を
8ビット整数の配列のつもりであれば 0 を
ということでいいのか?

511 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/07(土) 20:37:46.88 ID:ISmmGMjJ0.net]
str[6] = 0;
 バイナリーデータをstrで管理していて値ゼロを入れようとする思わせぶり
str[6] = '\0';
 文字列をstrで管理していて終端のヌル文字入れようとする思わせぶり

512 名前:デフォルトの名無しさん (ワッチョイ f6e5-T8u2) mailto:sage [2016/05/07(土) 21:27:36.44 ID:2MzLWeIa0.net]
何らかの処理プログラムを超一流のc++プログラマーが書いたものと、超一流のcプログラマーが書いたものを比較するとどっちの方が処理速度が速いとかありますか?理由も教えて下さい。



513 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/07(土) 21:29:03.90 ID:PlV1IzZTa.net]
他人がコードを読む前提で解りやすく書こう
三ヶ月後の自分はもはや他人だ

514 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/07(土) 21:48:10.05 ID:gGosoxju0.net]
>>501
その(曖昧な)条件だとどちらも同じプログラムに帰結することが可能そうだから、差を生じる理由は導けないと思う。

515 名前:デフォルトの名無しさん (ワッチョイ f6e5-T8u2) mailto:sage [2016/05/07(土) 21:50:43.93 ID:2MzLWeIa0.net]
>>503
では、逆にこういう処理プログラムを書く場合ならc/c++で差が出るというものはありますか?

516 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/07(土) 22:00:18.21 ID:gGosoxju0.net]
>>504
restrict が有効に働くケースなら C が有利になるかもね。

517 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/07(土) 22:22:13.08 ID:ISmmGMjJ0.net]
ハゲは例外を使うと速くなることもあると言うが、同じか遅くなった例しか見たことがない
クイックソートだけはかなりの確率でC++の圧勝

518 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/07(土) 22:25:20.03 ID:TEQEM2qu0.net]
>>501
小さなプログラムの場合は
基本的にはCで書くのと同じ内容をc++でも書けるので
Cで組むのとc++で組むのとでは処理速度は理論上変わらない。

しかし大きなプログラムの場合には
・優秀なプログラマが一度に理解できるプログラムの行数は1万行オーダー、つまり有限だと言われている
・優秀なプログラマは、理解できる範囲で最適化を行える。つまり、理解不能な最適化は出来ない
・Cとc++で同じ内容の十分に複雑なプログラムを書いた場合、c++の方が若干短くなる
から、優秀なプログラマがバグを出さずに超長いプログラムを組む場合、
Cで組むよりc++で組んだ方が最適化を多く掛ける事が出来るようになるので
Cで書くよりc++で書いた方が処理速度は速くなりうる。

519 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/07(土) 22:42:14.29 ID:bJut0jV40.net]
一度に理解できるプログラムの行数は1万行?
はぁ?

プロトタイプでもそんなんじゃかけないぜ

半導体装置制御でC++を使っているが、40万行以上あるぜ
隅々まで理解しているつもり

OSなんていったら相当だろ

520 名前:デフォルトの名無しさん (ワッチョイ fe16-ny5G) [2016/05/07(土) 23:07:24.97 ID:2VJKllfT0.net]
超一流ってことは、アセンブラもHDLもアナログも高周波もメカもありだよな
そん中のC++を使って書かれた部分の速度ってどんな意味があるんだろう

521 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/07(土) 23:11:17.64 ID:gGosoxju0.net]
>>506
h-deb.clg.qc.ca/Sujets/Developpement/Exceptions-Costs.html
> 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) mailto:sage [2016/05/07(土) 23:35:45.09 ID:pheDUhx40.net]
>>508
それを一人で開発やったのか。すごいなお前



523 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/07(土) 23:38:55.40 ID:TEQEM2qu0.net]
>>508
要点はそこじゃない。
君が超優秀かどうかはさておき。

524 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/07(土) 23:43:10.78 ID:X4O7V36I0.net]
今度Arduinoで温度計作る

525 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/07(土) 23:47:49.64 ID:gfii433/0.net]
一般的には少しだけCよりC++の方が遅くなるんじゃないかな

526 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/07(土) 23:49:57.90 ID:TEQEM2qu0.net]
>>514
理由は?

527 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/07(土) 23:53:03.44 ID:CJYWvDHF0.net]
5/7はメモリー二倍デーだから。

528 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/08(日) 00:26:59.06 ID:HXMhoTSZ0.net]
>>515
一般的とう限定では超一流でもないし速度最優先のコーディングでもなく
C++にしか無い機能(クラスとかテンプレートとか)使うとコードもメモリも
肥大化する傾向があるから

529 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/08(日) 00:34:38.65 ID:mfXrjXgw0.net]
constexprのようにC++にしかない処理時間を短縮する機能もある

530 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 00:42:36.86 ID:0NRevPWu0.net]
>>517
> C++にしか無い機能(クラスとかテンプレートとか)使うとコードもメモリも
> 肥大化する傾向があるから

具体的に、どのコンパイラでの結果を見て言ってるの?

531 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/08(日) 00:49:08.05 ID:hZHozpgd0.net]
templateは解らなくもないがクラス使うとって謎だな
Cでもstruct使わない人だろうか

532 名前:デフォルトの名無しさん (ワッチョイ fe16-ny5G) [2016/05/08(日) 00:49:58.77 ID: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) mailto:sage [2016/05/08(日) 00:50:51.99 ID:NDoMe0zH0.net]
>>515
++演算子の意味をググってください

534 名前:デフォルトの名無しさん (ワッチョイ 9c9d-APoh) mailto:sage [2016/05/08(日) 00:53:25.78 ID:aVBrdKMl0.net]
>>520
継承使いまくりするとって感じなんじゃないのか
C++はCより言語仕様複雑、STLあるでメモリ使用は増えるだろうと思う

535 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/08(日) 00:54:32.48 ID:hZHozpgd0.net]
>>523
普通はメンバーが無駄になるような意味のない継承なんてしないんだけど

536 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/08(日) 01:13:20.10 ID:HXMhoTSZ0.net]
>>519
コンパイラはGCC(gcc,g++)とclangを主に使ってるけど自分の少ない経験では
同じようなGlib/Gtk+ベースのプログラムを書いた場合、C++/gtkmmよりも
Valaを使う方がコンパクトになる

537 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 01:14:10.23 ID:0NRevPWu0.net]
>>523
継承なんてメモリ使用の観点では構造体の中に構造体置くのと変わらない。
メモリ使用量を増やすような言語仕様の差があるならそれを挙げてみて。
C++標準コンテナ使うプログラムならCで書いても同じだけメモリ確保が要るだろ。

538 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 01:30:14.46 ID:0NRevPWu0.net]
>>525
Vala って独自言語→C の Cfront みたいなやつなんだな。
それで実際に差が出るっていうのは興味深いけど、中間のCのコードと比較しながら
C++のほうをgtkmm含めて改良していけば同じことにはできるんだろうと思う。

539 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/08(日) 01:34:20.48 ID:NDoMe0zH0.net]
C++標準コンテナなんて使ってる奴いるか?
バイナリはでかくなるし、遅いし・・・
存在理由がわからん

540 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/08(日) 01:36:39.43 ID:ac/16y3t0.net]
馬鹿には利用価値が解らんらしいな

541 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/08(日) 01:38:18.51 ID:r8xFef3w0.net]
ポータビリティ!

542 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/08(日) 01:45:58.46 ID:R2Zn2+sX0.net]
言語仕様の差と言えるかどうかは置いておいてライブラリの差は大きい

便利なライブラリがあれば使うだろうし車輪の再発明をするより実績のある
ライブラリがあればそれを使うのが普通だからCだったら自分に必要最低限で
済ませるような場合でもC++標準コンテナが便利に使えるケースなら
そこまで汎用性が必要なくても使うことは一般的だと思う

ライブラリの差で言えば標準ライブラリ以外でも便利なライブラリのC++バインディングは
やはりそれなりに汎用的で便利に使えるように考慮して作られることが多いし
極限まで洗練されてるとも限らないのでバインディング分の肥大化もある



543 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/08(日) 01:46:33.21 ID:KW8blOBJ0.net]
え、標準コンテナってvectorとかmapのことよな?
逆に使わないで、自前で書いてる奴がいるってこと?
プロジェクトにそんなやつ参加してたら即外すくらい迷惑なんだが…
俺の感覚がおかしいのか?

544 名前:デフォルトの名無しさん (ワッチョイ be9f-fbpY) mailto:sage [2016/05/08(日) 02:04:27.63 ID:R2Zn2+sX0.net]
>>532
C言語でC++標準ライブラリと同等なライブラリを書くことはまず無いと思う
C++で書く場合vectorとかmapの全てのメンバ変数、全てのメソッドが
必要な場合はまず無いと思うので自前で書く奴なんかいないから
何らかの無駄が生じる

545 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/08(日) 03:15:08.39 ID:hZHozpgd0.net]
まぁ、C++理解してない奴が使うと遅いかもな

546 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/08(日) 03:20:37.22 ID:BqGdpOYS0.net]
PSPがC++で書き直されいきなり重くなって、その数年後コーレルに吸収された。
C++で再設計されると機能は豊富になる傾向がある。

547 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/08(日) 03:30:57.75 ID:r8xFef3w0.net]
できることとできないことの取捨選択が設計。そこでこけたらなんもよいことがない。
Cのように薄いラッパーで書くこともできるが、できることが増えると全部使いたくなる。
それが癌。

548 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/08(日) 03:34:24.61 ID:mfXrjXgw0.net]
vectorが遅いと思ってる奴は大量のデータを連続でpush_backしまくってる奴

549 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/08(日) 03:49:22.70 ID:hZHozpgd0.net]
>>535
C++にしたことによって機能が豊富になり企業ごと買ってもらえてよかったやん?

550 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/08(日) 06:48:20.55 ID:bsBg6NTha.net]
coutがprintfより遅い。なんで?

551 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/08(日) 06:56:36.21 ID:r8xFef3w0.net]
iostreamの設計はあんまり効率的とは言えないからかなぁ。
汎用性重視して使いまわせるようにした分、特化用途では劣る。

552 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/08(日) 10:49:40.33 ID:pkRLpXcEr.net]
設計が糞だから
入出力みたいなIOバウンドな処理でも遅いことが露呈してしまうのは
相当なUNKO



553 名前:デフォルトの名無しさん (ワッチョイ 9e17-wv7z) mailto:sage [2016/05/08(日) 11:03:26.85 ID:Zy+4Am2s0.net]
入出力多ければcin,cout高速化するのが当たり前

554 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 11:26:43.00 ID:0NRevPWu0.net]
>>539-541
言うほど遅くは無いかな。特に読み取りでは。 (@gcc 6.1.0)
melpon.org/wandbox/permlink/vHk9j9P41g38ZwQz
> FILE* write 0.117051 ms
> FILE* read 23.5034 ms
> fstream write 0.156568 ms
> fstream read 23.5264 ms

・・・と思ったら、同じコードなのにこれはひどい。 (@clang 3.8.0)
melpon.org/wandbox/permlink/pufsFMa7Pl29iEwT
> FILE* write 0.117286 ms
> FILE* read 25.3939 ms
> fstream write 36.1465 ms
> fstream read 313.493 ms

ライブラリ実装の質が問題として大きい様子。
gcc のほうの書き込みの差が設計上の問題の表れなのかね?

555 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/08(日) 13:28:04.05 ID:NDoMe0zH0.net]
gccなんてどんなシチュエーションで使ってんだよ
無保証で配布されてるようなものよく使うな

556 名前:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4) mailto:sage [2016/05/08(日) 13:34:39.34 ID:e7FUVg4v0.net]
馬鹿らしい。
結局アセンブラ以上の速度なんかでないんだから、
あとはライブラリがどう実装されているかの差でしかない。

557 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/08(日) 13:43:29.27 ID:Z9PKRgQn0.net]
↑日本語の会話ができないアスペ

558 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 13:44:44.46 ID:0NRevPWu0.net]
>>544
え?「無保証で配布されてるような」に該当しないC++コンパイラなんてあるの?

559 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/08(日) 13:54:10.64 ID:KW8blOBJ0.net]
インテルコンパイラくらいしか思いつかんな

560 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 14:06:52.50 ID:0NRevPWu0.net]
>>548
へー、と思って見に行ってみたけど、
https://software.intel.com/sites/default/files/managed/67/99/Master_EULA_for_Intel_Sw_Development_Products_March_2016.pdf
> 6. NO WARRANTY AND NO SUPPORT: Disclaimer. Intel disclaims all warranties of any kind and ...
やっぱ無保証じゃないの?見てるライセンス文書が違う?

561 名前:デフォルトの名無しさん (ワッチョイ 5e3c-wv7z) mailto:sage [2016/05/08(日) 14:08:40.18 ID:7UXL6x+W0.net]
>>547
メーカーの有償コンパイラはいくらでもあるだろ
ベースが GCC であろうと保守契約してれば保証はしてくれる
その保証が役に立つかどうかは別だけど

562 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/08(日) 14:11:27.77 ID:KW8blOBJ0.net]
>>549
ほんとだ

VC++とかもコンパイラは無保証なのかな?



563 名前:デフォルトの名無しさん (ワッチョイ f64e-wv7z) mailto:sage [2016/05/08(日) 14:46:15.67 ID:6EBK0SNh0.net]
>>550
有償のコンパイラは数多いけど、何らかの「保証」をしてくれる商品ってあんまりないと思う。
有償の対価はサポートが多いよね。
大体は NO WARRANTY で、期待するような効力は無いと思うけど。

まあ、一口に保証って言ってもいろいろあるけどね…

564 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/08(日) 14:48:20.88 ID:NDoMe0zH0.net]
>>547
icc

565 名前:デフォルトの名無しさん (ワッチョイ f64e-wv7z) mailto:sage [2016/05/08(日) 14:53:15.78 ID:6EBK0SNh0.net]
>>508
半導体装置って何?
って思って検索したら半導体製造装置の事でいいんかな?
しっかし、何かいろいろあってよくわからん世界だな…

566 名前:デフォルトの名無しさん (ワッチョイ 40cf-5iF2) mailto:sage [2016/05/08(日) 15:20:27.33 ID:0NRevPWu0.net]
>>553
それの保証って >549 じゃないの?違うんならどんな保証があんの?

567 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/08(日) 15:31:09.95 ID:NDoMe0zH0.net]
>>555
gccなんて髭面の乞食みたいな奴が作ったソフトでしょ

568 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/08(日) 17:22:36.22 ID:QO+NBPG40.net]
君も多分、そのgccで作られたソフトをどこかで利用している

569 名前:デフォルトの名無しさん (ワッチョイ 9fd4-EIjF) mailto:sage [2016/05/08(日) 17:46:35.49 ID:NKVAXp+L0.net]
ありがとう髭面の共産主義者さん

570 名前:デフォルトの名無しさん (ワッチョイ 328b-lMTc) mailto:sage [2016/05/08(日) 18:01:04.73 ID:+0FfKmse0.net]
ストールマンは自由主義すぎて共産主義者に見えるだけ

571 名前:デフォルトの名無しさん (ワッチョイ c13c-APoh) [2016/05/08(日) 18:17:53.49 ID:Idc9lMfP0.net]
何言ってんだコイツ。
資本主義か共産主義かと言えば、明らかに共産寄りの主義を持ってるだろ。

572 名前:デフォルトの名無しさん (スプー Sdb8-wv7z) mailto:sage [2016/05/08(日) 18:29:38.44 ID:yx/SoqI4d.net]
どこが共産主義的なの?
真逆じゃね。
共産主義国でGPLがまともに効果を発揮するとは思えんが



573 名前:デフォルトの名無しさん (ワッチョイ 3a13-75AG) mailto:sage [2016/05/08(日) 18:36:54.38 ID:2KDLdDvi0.net]
自己責任でやれ,っていう論調から判断すれば GPL はどちらかというと「リバタリアン」

574 名前:デフォルトの名無しさん (アウアウ Sa41-Zs2w) mailto:sage [2016/05/08(日) 18:40:04.47 ID:iOm+CRLoa.net]
セックスとソフトウェアだけ共産主義で配給性にしよう

575 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/08(日) 18:44:56.64 ID:QO+NBPG40.net]
君の財布も共有財産

576 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/08(日) 19:34:23.06 ID:mfXrjXgw0.net]
共産主義は国家が資産を独占することだぞ
権力に独占させないのが自由ソフトウェアだろ

577 名前:デフォルトの名無しさん (ワッチョイ bd2b-kevm) [2016/05/08(日) 19:35:04.68 ID:us042D/d0.net]
554みたいなこと言っちゃう化石ってまだ生き残ってるんだな

578 名前:デフォルトの名無しさん (ワッチョイ 7c42-wv7z) mailto:sage [2016/05/08(日) 22:49:21.51 ID:tR ]
[ここ壊れてます]

579 名前:pDEO2z0.net mailto: 今でこそclangが台頭してきているが、tvとかレコーダとかルーターとか電子辞書とかスマホとかlinuxで動いてる電子機器はたいていgccを使ってる。

そんなことも知らずにストールマンを髭とかピザデブとか言う奴は、禿て氏んでしまえ。
[]
[ここ壊れてます]

580 名前:デフォルトの名無しさん (ワッチョイ 328b-lMTc) mailto:sage [2016/05/08(日) 22:59:44.96 ID:+0FfKmse0.net]
んまーストールマンの内実がどうかとかは実はどうでも良くて
やってることは共産主義者だがな、

581 名前:デフォルトの名無しさん (ワッチョイ 3f42-7Olf) mailto:sage [2016/05/08(日) 23:18:24.65 ID:QO+NBPG40.net]
そんな人はスマホもPCも使わない方が良いね

582 名前:デフォルトの名無しさん (ワッチョイ 778c-10y/) mailto:sage [2016/05/08(日) 23:39:50.87 ID:kgnsEu+L0.net]
すいませんOpenGLの使い方教えてくださいお願いします



583 名前:デフォルトの名無しさん (ワッチョイ bd02-7Olf) mailto:sage [2016/05/08(日) 23:47:10.40 ID:mfXrjXgw0.net]
まず服を脱ぎます

584 名前:デフォルトの名無しさん (ワッチョイ 7d7b-xjE4) mailto:sage [2016/05/09(月) 00:05:04.99 ID:owmkQV0r0.net]
ストールマンはスマホとか使ってない。

585 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/09(月) 00:28:08.65 ID:D9KYpVKqp.net]
はい

586 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/09(月) 00:31:37.72 ID:pVI6O9RYp.net]
stringの初期値ってなんですか?
string s;
if( s != NULL) 〜
って書いたら謎のエラー出されたのですが

587 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/09(月) 00:37:22.99 ID:pUXvKib10.net]
>>574
宣言当初は空っぽ。空っぽを知るにはsize()かlength()を使うだっけか。
std::stringはヌルターミネートストリングではない。

588 名前:デフォルトの名無しさん (ワッチョイ f256-wv7z) mailto:sage [2016/05/09(月) 00:40:19.49 ID:rFeP9sIM0.net]
>>574
if( !s.empty() ) 〜

589 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/09(月) 00:42:40.61 ID:pVI6O9RYp.net]
>>575
ナルフほど、参考になりました。どうもありがとうございます。

590 名前:デフォルトの名無しさん (ワッチョイ 7cbf-wv7z) mailto:sage [2016/05/09(月) 00:50:51.52 ID:27MMukgj0.net]
stringのコンストラクタの引数にNULLを渡すのが未定義だと知った時は驚愕したもんだ。

591 名前:デフォルトの名無しさん (ワッチョイ 3fe7-lMTc) mailto:sage [2016/05/09(月) 00:52:00.22 ID:pUXvKib10.net]
>>576
それだ。あんま使わないから忘れてた。

592 名前:デフォルトの名無しさん (ワッチョイ ff73-OI8D) mailto:sage [2016/05/09(月) 07:12:53.06 ID:FiIoAZ6E0.net]
stringのコンストラクタには素直に""渡せって事?



593 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/09(月) 07:51:26.99 ID:gB83NhqC0.net]
>>580
引数要らない

594 名前:デフォルトの名無しさん (ワッチョイ bd7b-YzxY) [2016/05/09(月) 07:56:30.26 ID:gB83NhqC0.net]
テンプレート使ったメタプログラミングのバイナリーサイズとコンパイル時間の最適化どうやってる?
実行時みたいなプロファイラないよね?

595 名前:デフォルトの名無しさん (スプー Sdb8-wv7z) mailto:sage [2016/05/09(月) 09:56:31.43 ID:Xsyq9PvJd.net]
std::vector<std::string>から<algorithm>のfindで文字列検索した場合よりも、std::unordered_set<std::string>のfindで文字列検索した方が高速だったのですが理由はなんでしょうか?

596 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/09(月) 10:05:09.76 ID:OXHQFkpS0.net]
>>583
vectorとunordered_setではデータ構造が違うから。
一般的に、vector(線形時間)→set(対数時間)→unordered_set(定数時間)の順で検索は速くなる。
ただし、vectorは要素(この場合はstd::string)に何の仮定も置かないのに対して、
setでは全順序性を仮定するし、unordered_setではもっと厳しい条件を仮定する。

597 名前:デフォルトの名無しさん (ワッチョイ 3ff8-H0Kj) mailto:sage [2016/05/09(月) 10:08:08.13 ID:OXHQFkpS0.net]
>>582
TMPは可能な限りコンパイル時に全ての計算を済ませる物だから、
コンパイル時間を減らすっていう意味での最適化とは逆方向じゃない?

コンパイル時にレイトレーシングする強者もいるし(コンパイルに1週間くらい掛かるらしいが実行は数秒になる)

598 名前:デフォルトの名無しさん (ワントンキン MM40-YzxY) [2016/05/09(月) 11:00:56.87 ID:fUCJ6I ]
[ここ壊れてます]

599 名前:jvM.net mailto: >>583
unordered_setは要素のハッシュ値でソート済みのデータ構造だから。
std::vectorで近いパフォーマンス出したいなら要素をstd::sortとかでソート済みにしてstd::lower_boundとstd::upper_boundで一致する範囲を取る
[]
[ここ壊れてます]

600 名前:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6) [2016/05/09(月) 17:22:51.78 ID:e5OTdnsK0.net]
>>586
> unordered_setは要素のハッシュ値でソート済みのデータ構造だから。
どういう意味?
https://ideone.com/PH29rq
バケツもバケツの中身もソートされませんけど。

601 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/09(月) 18:05:24.60 ID:pVI6O9RYp.net]
printf(”a\n”);
cout <<”a\n” ;
cout << ”a” << endl;
これらはどれも結果?見た目?は同じですが
内部的にはどう違うのか教えてください

602 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/09(月) 18:27:34.76 ID:D21wZ97+r.net]
>見た目?は同じですが

>>588の目がフシアナなだけだろう



603 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK3f-fZAN) mailto:sage [2016/05/09(月) 18:31:24.94 ID:12nCphG6K.net]
>>588
printfは%書式の解釈が入るから、最適化されていなければputsより遅い。
endlは改行を出力するだけでなく、フラッシュも入るから、
フラッシュが効かない場合より処理が遅いが、実際の出力の開始は早くなるかもしれない。
最適化される場合は、どのように処理されるかはコンパイラ次第。

604 名前:デフォルトの名無しさん (オッペケ Sra9-wv7z) mailto:sage [2016/05/09(月) 18:37:47.43 ID:6ljAms74r.net]
>printfは%書式の解釈が入るから、最適化されていなければputsより遅い

こういう奴はどこにでも居るな。
質問の内容も読まずに脊髄反応して
脳内で単語レベルでヒットした蘊蓄を
ありがた迷惑に貼り付けるアスペが。
まあフラッシュについては>>588も得るものが有ったかも知れない。ご苦労

605 名前:デフォルトの名無しさん (ワッチョイ ad5b-7Olf) mailto:sage [2016/05/09(月) 19:21:32.17 ID:aNITGvAM0.net]
>>588
若干動作違う。
下記はエンターキー押すたびに処理が進む。
各行を入れ替えたりすると動作の違いがわかる。
printf("a\n"); getchar();
cout <<"a\n" ; getchar();
cout << "a" << endl; getchar();

606 名前:デフォルトの名無しさん (ワッチョイ 3f77-mNQ6) [2016/05/09(月) 19:40:47.53 ID:e5OTdnsK0.net]
ios_base::sync_with_stdio

607 名前:デフォルトの名無しさん (ササクッテロ Spa9-10y/) mailto:sage [2016/05/09(月) 20:31:36.08 ID:pVI6O9RYp.net]
なるほど、勉強になりました。
みなさまありがとうございます。

608 名前:デフォルトの名無しさん (スプー Sdb8-wv7z) mailto:sage [2016/05/09(月) 21:37:15.19 ID:Xsyq9PvJd.net]
>>584
>>586
>>587
勉強になりました、ありがとうございます。

609 名前:デフォルトの名無しさん (ワッチョイ ff73-xUNW) mailto:sage [2016/05/09(月) 22:50:09.03 ID:FiIoAZ6E0.net]
C++の関数呼び出し時
int a(const int b, const mystruct mst);
こんな感じでconstにしない場合と引数のために
int b用のコピー、mst用の構造体mystruct変数のコピーが作られるって書いてある
intのコピーはサイズ的に問題ないけど
構造体mystruct mstのサイズが物凄く大きい可能性がある
物凄く大きな場合も効率や速度を無視して変数のコピーが作られるのですか?

触った感じではコピーが作られているっぽいのですが

610 名前:デフォルトの名無しさん (ワッチョイ 9c42-wv7z) mailto:sage [2016/05/09(月) 23:06:19.92 ID:oK/ks2/Z0.net]
作られるよ
コピーしたくなきゃアドレスを渡すしかない(C++ならポインタか参照)

611 名前:デフォルトの名無しさん (ワッチョイ 8063-wv7z) mailto:sage [2016/05/09(月) 23:07:05.31 ID:Ii8g1eqf0.net]
コピーする必要が有ってコピーさせてたかも知れないのに
サイズで勝手にコピーを省略されたらブチ切れだな

612 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/09(月) 23:43:00.36 ID:jCCSCwvz0.net]
>>596
馬鹿なん?なんでコピーされるかわからないならC言語からやり直せよ



613 名前:デフォルトの名無しさん (ワッチョイ 5ecc-wv7z) mailto:sage [2016/05/09(月) 23:45:48.90 ID:jCCSCwvz0.net]
なんでC++に参照を意味するアンパーサンド演算子がわざわざ用意されたのか判らんのかいね?

614 名前:デフォルトの名無しさん (ワッチョイ 9c41-X9cp) mailto:sage [2016/05/09(月) 23:49:52.01 ID:noyNIse20.net]
この手の奴多いよな
うちの会社にもろくにc/c++を知らないで、仕事してる奴いるわ

615 名前:デフォルトの名無しさん (ワッチョイ 778c-10y/) mailto:sage [2016/05/09(月) 23:52:36.52 ID: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) mailto:sage [2016/05/10(火) 00:12:39.31 ID:VjIbGp3Q0.net]
>>601
いかにもゆとりIT会社って感じだな

617 名前:デフォルトの名無しさん (ワッチョイ ff73-YF3X) mailto:sage [2016/05/10(火) 05:28:12.75 ID: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) mailto:sage [2016/05/10(火) 09:58:36.58 ID:xA250nOWH.net]
それは C の話で
C++ だと &,&& も増えた

619 名前:デフォルトの名無しさん (ワントンキン MM40-wv7z) mailto:sage [2016/05/10(火) 10:07:05.90 ID:soJOAvIwM.net]
そもそもC#は全部参照渡しでしょ?

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;

721 名前:デフォルトの名無しさん (ワッチョイ 937b-qps8) mailto:sage [2016/05/13(金) 08:07:22.18 ID:ApLv0E8+0.net]
return c++;
とかで外で値を受け取らないケースで最適化が上手く動くもしくは動かないケースとかなら
あるかもとは思うけど、そんなどうでもいいケース考えてどうすんの?って話ではある。

722 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/13(金) 08:44:07.94 ID:Ja7udZmR0.net]
・クラス化されたiteratorを使う時には、言語レベルでの手順差が明らかにあるから、とりあえず全て前置使っとけば問題ないでしょ
ていう方法論の話と、
・整数プリミティブ型の場合は後置の方が速い事がある
って言う実測論に近い話をごっちゃにしてはいけないと思うの。



723 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/13(金) 11:31:14.81 ID:G/A+aqfad.net]
「言語レベル」の手順差?

724 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/13(金) 13:01:39.98 ID:ZUyuraMo0.net]
>>702
人間としては同じ意味のコードでも、言語の意味論上は別な意味として解釈しなければならないのだから
最適化前のコードは異なって当然。
んでもって、違うコードを初期地点として独立に最適化を掛ける訳だから
最適化後のコードは異なる可能性がある(偶然一致する可能性もある)。
そういうお話

725 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/13(金) 20:48:02.35 ID:EayoOtAj0.net]
>そういうお話
という幻覚を見てしまったようです。
統合失調症ID:rpWGZ4yl0、ID:DRM/51U40と
その他の健常者との噛み合わない会話

726 名前:662 (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/13(金) 20:56:04.60 ID:y6JoVpFh0.net]
鼻ほじりながら書いたら>>666-668あたりで予想通りのレスが返ってきて、それで終わるのかと思いきや
意外と後を引いててワロタw

727 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/13(金) 21:28:43.56 ID:ZUyuraMo0.net]
>>708
残念、糖質じゃなくてアスペでした

728 名前:デフォルトの名無しさん (ワッチョイ 2730-o0Hb) mailto:sage [2016/05/13(金) 21:41:15.90 ID:na9JUjrP0.net]
キチガイの一言で解決しろや

729 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/13(金) 23:27:56.30 ID:akm6bXau0.net]
いいからアセンブラのコード見ろよ

730 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 01:22:12.62 ID:guvuQQ9l0.net]
前値を後値に変更して効率的になる場所なんて限られてるからどうしてもその場所のパフォーマンスを上げたいって時の知識として知っててもいいかなぐらいの事だよ
常に後値で書かれたらデメリットが大きすぎる

731 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) [2016/05/14(土) 08:57:39.96 ID:BsF9lC3v0.net]
アセンブリも読めないc++erなんて滅びればいい

732 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 09:11:42.00 ID:EHXndh+50.net]
アセンブリが読めてもパイプラインの正しい知識の無い人に言われても…



733 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/14(土) 10:34:04.60 ID:5qwu2L7o0.net]
デジタル回路の正しい知識も必要

734 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 10:37:31.14 ID:BsF9lC3v0.net]
そうだね。
1段NOTゲートと3段NOTゲートの違いくらい説明できなきゃね。

735 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/14(土) 11:45:07.22 ID:50Ljn6jM0.net]
半導体の物性を理解していない人にC++を使って欲しくない

736 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 11:53:10.78 ID:EHXndh+50.net]
むしろC++を語るのに半導体物性とかアセンブリ言語とかどうでもいい

737 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 12:13:40.02 ID:BsF9lC3v0.net]
基礎は大事だろ。

何処まで掘り下げるかって問題はあるけど

738 名前:デフォルトの名無しさん (ワッチョイ 233c-/3cR) mailto:sage [2016/05/14(土) 12:43:01.47 ID:eiJc4QAX0.net]
なにが悲しくてアセンブリを理解しなきゃならんのだ。
そんなのは言語開発者とコンパイラの仕事だ。

739 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 12:53:34.15 ID:jHuAeQfl0.net]
ビジネスアプリケーション専門の人ならそうかもしれないが
ハードウェア資源を有効利用しようとした途端アセンブラレベルの知識は必要になるだろ

理解する必要はないが、理解している奴の仕事を代わって引き受けられないな

740 名前:デフォルトの名無しさん (ワッチョイ 3775-yliF) [2016/05/14(土) 12:56:54.42 ID:4NwAroGq0.net]
なぜか事務処理系の案件もやったことがあるが
ちょっとしたバカの壁を透過するのにアセンブラ使ったぞ

741 名前:デフォルトの名無しさん (JP 0H6f-mfIb) mailto:sage [2016/05/14(土) 13:35:56.95 ID:fLeelvLJH.net]
なにが悲しくてC++を理解しなきゃならんのだ。
そんなのは組込み・基盤システム開発者の仕事だ。

742 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/14(土) 13:59:43.12 ID:K+XlGAeBd.net]
まじかよアセンブラer最低だな



743 名前:デフォルトの名無しさん (ワッチョイ 937b-qps8) mailto:sage [2016/05/14(土) 14:38:23.70 ID:UFikrM320.net]
なにが悲しくてc++を理解しなきゃならんのだ。
そんなのはc++エバンジェリストの仕事だ。

744 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/14(土) 14:42:24.09 ID:QuevABMG0.net]
アセンブリの基礎を判ってないとregisterの使い道すらわからんだろ

745 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/14(土) 14:45:28.79 ID:QuevABMG0.net]
アセンブラ理解出来てない奴は最適化失敗するときのステートメントの修正方法すら判断つかんだろ

746 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 14:46:17.04 ID:guvuQQ9l0.net]
C++使ってるのは移植性のためでもあるからレジスタ直接触ることなんてほぼないわ

747 名前:デフォルトの名無しさん (ワッチョイ 233c-/3cR) mailto:sage [2016/05/14(土) 14:52:23.85 ID:eiJc4QAX0.net]
アセンブリだのレジスタだの、そういう低レベルな処理をプログラマが考える必要を無くしていくのがコンパイラとその設計者の仕事でしょうが。

748 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/14(土) 15:12:38.19 ID:K+XlGAeBd.net]
まじかよアセンブラer大海を知らずだな

749 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 15:34:48.60 ID:jHuAeQfl0.net]
移植のこと効力するなら、それこそソースレベルで分けていけばいい話だと思うけどね

750 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 15:35:45.78 ID:jHuAeQfl0.net]
× 移植のこと効力するなら
○ 移植のことを考慮するなら

751 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/14(土) 15:41:24.26 ID:XQsBVmZY0.net]
>>729
リーナスに殺されるぞ…

752 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/14(土) 15:45:05.04 ID:XQsBVmZY0.net]
漏れの無い抽象化は言うほど簡単ではない
C++ぐらいではまだまだ低水準レイヤーの話を切り離すわけにはいかない
そもそもこの言語の最初の開発動機がSimulaの高速化であって
抽象化された高水準レイヤーとCPUアーキテクチャとメモリが透けて見える低水準レイヤーの
境にあるんである



753 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 16:37:14.60 ID:BsF9lC3v0.net]
今はグラフ彩色アルゴリズムで準最適なレジスタ割り当てが出来るってばっちゃが言ってた
register使ったこと殆ど無いわ
crubyのC拡張書くのに使った事はあるけど

754 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 16:57:46.20 ID:guvuQQ9l0.net]
registerってキーワードの事言ってるの?

755 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 17:15:25.88 ID:EHXndh+50.net]
>>727から733まではCPUレジスターの話だったけど
突然>>736がstorage class specifierの話をし出した

756 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 17:18:52.05 ID:BsF9lC3v0.net]
> アセンブリの基礎を判ってないとregisterの使い道すらわからんだろ
この文を適切に補完すると
(それはCの一要素でありながら) (ry
ってなるだろうからキーワードの方だと思ったけど

違った?

757 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 17:27:09.65 ID:EHXndh+50.net]
一見その様な日本語にも見えるが、
規格では「殆どの処理系で無視されるのでdeprecated」になっていて
次期改訂のドラフト4582からも削除されてしまったキーワードについて
使い道を主張するとは考えにくい

758 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 17:31:14.33 ID:BsF9lC3v0.net]
にほんごむずい

759 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 18:05:33.36 ID:jHuAeQfl0.net]
register キーワードはアセンブリというより、コンパイラの知識じゃないのかな
今のコンパイラは賢いから最適化して割り当てるので、
変に使うとかえって効率を落としかねないから使うなって教わった

760 名前:デフォルトの名無しさん (ワッチョイ 6f3c-/3cR) mailto:sage [2016/05/14(土) 18:06:21.55 ID:W/mpGy/20.net]
>>740
>>727 がそう言うことを熟知していると仮定するのもどうかと思うが

761 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 18:35:40.54 ID:guvuQQ9l0.net]
registerキーワードが無意味なのは常識だと思ってた

762 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/14(土) 18:36:20.83 ID:50Ljn6jM0.net]
無意味にスタックに積んでからすぐ取り出して使うゴミみたいなコンパイラならそれを止められるから意味ある



763 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) [2016/05/14(土) 20:30:12.22 ID:stGv22ss0.net]
組み込みの開発ってやったことないんだけど、ベンダーが提供するコンパイラ
しか使えない場合が結構あるんでしょ? そうなるとそれがゴミみたいな代物
なら >>745 だと思う。

764 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 21:33:09.63 ID:guvuQQ9l0.net]
大抵gccベースだけどな

765 名前:デフォルトの名無しさん (ワッチョイ 3764-yliF) [2016/05/15(日) 06:32:49.04 ID:U+van56a0.net]
>>742
教わった、のはいいが
ちゃんと自分で再検証したか?

766 名前:デフォルトの名無しさん (ワッチョイ 27a8-Wsqh) mailto:sage [2016/05/15(日) 09:35:30.57 ID:IffsDtB30.net]
>>742
言語仕様上の制約として register キーワード付きの変数はアドレスを取ることが出来なくなる。
(まともなコンパイラならアドレスを取ろうとするとエラーを通知する。)
当然だがアドレスが存在しなければならない変数はレジスタに載せられない

767 名前:フで、
その逆にアドレスを取らなくていい変数であることを確約することで結果的にレジスタに載りやすくなる可能性はある。

gcc などは register キーワードの有無は変数をレジスタに載せるかどうかの決定を左右しないが、
レジスタに載せることが可能な変数の選択肢が多ければ結果的に最適化しやすくなるかもしれない。

まあ、よほど速度に厳しい箇所をチューニングするのでもなければ付けなくていいと思うけどね。
[]
[ここ壊れてます]

768 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/15(日) 09:45:04.30 ID:WYUaDR6g0.net]
ここはC++のスレでregisterはC++17で削除される。clangなんかだと使ってるだけで警告もでる。
よって単にregisterは使ってはいけない。それ以上でも以下でもない。

769 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/15(日) 10:12:20.69 ID:SQ5j33E00.net]
ポインタになら現行でもrestrictを付けることでaliasが無いものとコンパイラに通知され、
>>749の懸念は半分無用となるが(注:アドレスをとってもエラーにはならない)
参照にもつけられるようになるんだっけ;

770 名前:749 (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/15(日) 10:18:51.93 ID:SQ5j33E00.net]
訂正
×:アドレスをとってもエラーにはならない
○:Aliasを作ってアクセスしてもエラーにはならない

ていうかaliasが存在しないことの保証とか、コンパイラは宇宙の果てまでは追いきらん

771 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 10:42:40.03 ID:TLapgfGj0.net]
>言語仕様上の制約として register キーワード付きの変数はアドレスを取ることが出来なくなる

大昔に聞いたような記憶がよみがえった
26年前の別の言語の仕様でな

772 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 10:46:36.48 ID:TLapgfGj0.net]
>ポインタになら現行でもrestrictを付けることで

大昔に聞いたような記憶がよみがえった
16年前の別の言語でな



773 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/15(日) 12:42:51.94 ID:heRU3dbC0.net]
>>753
C89?

774 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/15(日) 12:43:35.52 ID:heRU3dbC0.net]
>>754
C99?

775 名前:751 (オッペケ Sr2f-/3cR) mailto:sage [2016/05/15(日) 12:59:06.40 ID:Ep7D2rxvr.net]
>>755
C89は知らんけどC90では禁止されていたような
調べたらC11でも禁止されたままだった
>>756
イエス、マダーム

776 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/15(日) 13:07:07.31 ID:vsTAFBzF0.net]
C++じゃまだrestrictは規格的にはサポートされてないよ
C99との互換性のために書いてもエラーにせず無視することになってるけど(C++14 $17.2/2)
でも殆どのコンパイラで__restrictが使えるけどね

777 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/15(日) 13:12:53.03 ID:dHmJMeXo0.net]
禁止と言うことは、無視されるではなく、
エラーになる(可能性がある)って理解で良いですか?

778 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/15(日) 13:18:12.39 ID:vsTAFBzF0.net]
>99との互換性のために書いてもエラーにせず無視することになってるけど(C++14 $17.2/2)
ごめん。これ嘘
GCCでもClangでもrestrictはエラーになる

779 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/15(日) 13:54:04.82 ID:Ep7D2rxvr.net]
>>759
イエス、マダーム

register int x;
&x;

780 名前:デフォルトの名無しさん (ワッチョイ 87cb-Wsqh) [2016/05/15(日) 18:54:11.89 ID:vMirLtIS0.net]
struct hoge
{
int val;
};
hoge h;
int* val = static_cast<int*>( &h );

のようにhoge*をint*にキャストしたら自動的に&hoge::valが得られるようにしたいんですが
どうすればいいですか。

781 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/15(日) 18:57:44.93 ID:YfWps9FTd.net]
そんなことをやろうとしない

782 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/15(日) 19:11:08.36 ID:WYUaDR6g0.net]
ポインタからじゃなくていいならキャスト演算子のオーバーロードで出来る



783 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:16:44.98 ID:TLapgfGj0.net]
>>762
>>763の言うとおり。別の解を探さないと、マトモな方法では難しい
ideone.com/4D984F

784 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/15(日) 19:17:38.83 ID:jxnGY8hD0.net]
>>762
int* val = (int*)&h;

785 名前:デフォルトの名無しさん (ワッチョイ afc2-1Mko) mailto:sage [2016/05/15(日) 19:19:32.41 ID:HZxVWbFB0.net]
int* val=(int*)(&h)

786 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:31:53.73 ID:TLapgfGj0.net]
やっぱり最も素直なのはこうだな
ideone.com/iRfjtv

std::chronoのduration_castもこんな感じだろう

787 名前:デフォルトの名無しさん (ワッチョイ 53dc-zbyT) mailto:sage [2016/05/15(日) 19:48:04.92 ID:yfD+f9Qr0.net]
そもそも

788 名前: struct hoge {int val;}; において、
hoge h; の &h と &h.val が値として一致する、つまり
reinterpret_cast<int*>&h == &h.val が常に成立するって
規格で保証されてるんだっけ?
[]
[ここ壊れてます]

789 名前:デフォルトの名無しさん (ワッチョイ 377b-1Mko) mailto:sage [2016/05/15(日) 19:52:05.11 ID:vsTAFBzF0.net]
保証されてるんじゃない(適当)
でなけりゃバイナリイメージのレイアウト作れない

790 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:52:30.43 ID:TLapgfGj0.net]
その保証を得るための条件確認を>>765で書いてやったというのに…
ISO/IEC 14882:2014 9.2p19

791 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 22:10:43.04 ID:TLapgfGj0.net]
>キャスト演算子のオーバーロードで出来る

変換関数を定義することを規格で「キャスト」「演算子」「オーバーロード」と読んでいただろうか?
と思って調べたが、演算子とオーバーロードは確かに微妙な書き方だった。
キャストは式の一種で、変換関数のことをキャストとは言わないな

792 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/15(日) 22:28:39.62 ID:8VRuH69B0.net]
さっぱりわからんが
int* val = static_cast<int*>( h );
なら(簡単に)出来るってことか?



793 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/15(日) 22:35:42.94 ID:8VRuH69B0.net]
今気付いたんだけど、ワッチョイって結構重複するのか?
>>746は俺じゃないのにワッチョイ同じだな

794 名前:デフォルトの名無しさん (ワッチョイ b7bf-a45h) mailto:sage [2016/05/15(日) 22:37:30.44 ID:vFNZTgb70.net]
こういう珍しいコード?って実際の業務だと普通にあり得ることなんですか?

795 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/15(日) 22:39:05.28 ID:q+e+aGMq0.net]
>>773
普通に
operator int* () & { return &val; }
と定義するだけでできるでしょ?

796 名前:デフォルトの名無しさん (ササクッテロ Sp2f-a45h) mailto:sage [2016/05/16(月) 09:35:35.81 ID:8tgjguWIp.net]
右半分はブラウザのUAだからすぐ被るけど
左半分はipアドかホスト名とかだったきがするからそうそう被らんとは思うけど

797 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/16(月) 10:58:51.83 ID:UIK75Ntg0.net]
template<typename T>const char* typename()
{
return typeid(T).name();
}
これって実行時に変わることはないけどコンパイル時に取れないよね?
コンパイル時に決定される代替の方法ないかな?

798 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/16(月) 11:05:06.85 ID:Wv3wWMiG0.net]
リフレクションは(標準には)無い。

799 名前:デフォルトの名無しさん (ワンミングク MM9f-/3cR) mailto:sage [2016/05/16(月) 11:11:03.55 ID:bmeyzU+wM.net]
ポインターがコンパイル時に決定されたとしてなにか嬉しいのだろうか…
特殊化で解決できないケースが思いつかない

800 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/16(月) 12:19:01.47 ID:5ug0//ZW0.net]
RTTI使わないで型名を文字列化したいということでしょ
出来てもいいよね
ないんだっけ?
テンプレートの特殊化で解決とかは冗談だろ?

801 名前:デフォルトの名無しさん (ガックシ 065f-a45h) mailto:sage [2016/05/16(月) 12:47:03.24 ID:ViRuPN/26.net]
getmodulefilenameで拾ったwchar*を、stdのstringに変換する方法はありませんか?
ウェブで調べても、systemのstringに変換してたり、wstringから変換しているものしか見つかりませんでした

802 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/16(月) 13:21:09.52 ID:UIK75Ntg0.net]
>>781
>型名を文字列化したい
まさにそれです。

今は実行時にvariadic templateで渡された型からエラーメッセージを生成しています。
エラーメッセージなので実行コストは問題にしていないのですが2〜3種類程templateのインスタンス化した時点で1KB以上コードサイズが増えてしまっててコンパイル時に生成できたら数十バイト程に収まるのになぁと思っての質問でした。



803 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/16(月) 21:35:11.73 ID:ptsyD+4U0.net]
もう、ウンコboostを使うしか無いな
melpon.org/wandbox/permlink/AQMpoO8QkAgq9vd2

boostつかうと一気に実行ファ

804 名前:イルサイズが10倍に?! []
[ここ壊れてます]

805 名前:デフォルトの名無しさん (ワッチョイ 2317-yliF) [2016/05/16(月) 22:32:19.16 ID:hnQ6k/Go0.net]
見れば見るほどRTTIはクソだね
拙速にもほどがある
いつかメジャーチェンジで刷新をきぼんぬ

806 名前:デフォルトの名無しさん (ワッチョイ a7cf-Jrc9) mailto:sage [2016/05/16(月) 23:00:15.78 ID:ZRzqLMgu0.net]
>>783
ひどい話に聞こえるけど、それコンパイラ何?

807 名前:デフォルトの名無しさん (ワッチョイ cbd4-7yL8) [2016/05/17(火) 10:42:57.44 ID:0QCad9Bp0.net]
C#のプログラマなんだけどさあ
他人が書いたC++のソースコードを読むにあたり、まあ生き別れの兄貴なら多少違ってても雰囲気で読めるだろうとぐらいに思ってたんだけど・・・・・全然読めなくておわた
テンプレート多用も堪えるけど、一番困るのはヘッダファイルが全然読めなくて意味不明な点だ
差し当たって最低限の知識を得れる本等でおすすめがあったら教えてくれんかな

808 名前:デフォルトの名無しさん (JP 0H6f-mfIb) mailto:sage [2016/05/17(火) 11:34:36.15 ID:eRIY89eqH.net]
その兄はおそらく幼い頃から日本以外で生活してた

809 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 12:24:41.75 ID:DLx6Jllf0.net]
基本的な構文がCスタイルなだけで生き別れでも何でもない他人だし

810 名前:デフォルトの名無しさん (ワンミングク MM9f-UkU1) [2016/05/17(火) 12:31:05.41 ID:aW8j1xwWM.net]
ヘッダファイルが読めないって単にソースが読めないって事だからな

811 名前:デフォルトの名無しさん (JP 0H6f-mfIb) mailto:sage [2016/05/17(火) 12:40:39.83 ID:eRIY89eqH.net]
たぶん boost 系のクソテンプレートだろう

812 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 12:42:18.92 ID:JBnvLbQwd.net]
>>787
例えばヘッダのどんなところが読めなかった?

C言語部分がわからないのか、C++特有の部分がわからないのか



813 名前:デフォルトの名無しさん (ワッチョイ 236c-gj/H) mailto:sage [2016/05/17(火) 12:44:01.08 ID:YEDl+1EH0.net]
逆に今C#初めて見たけど、そこそこ見れるな

814 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:53:10.45 ID:AYutjq9j0.net]
C++こそが至高

815 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:54:20.44 ID:AYutjq9j0.net]
C#は舎弟

816 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:57:07.99 ID:AYutjq9j0.net]
そしてJava奴隷

817 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 15:10:49.08 ID:w5cAt2PYd.net]
「ヘッダファイルがぜんぜん読めなくて困る」の意味があやふやでなんとも

818 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/17(火) 17:47:37.73 ID:SVOYn8cOr.net]
そもそもC++の言語仕様にヘッダファイルなどと言うものは存在しない

819 名前:デフォルトの名無しさん (ワンミングク MM9f-/3cR) mailto:sage [2016/05/17(火) 18:02:38.06 ID:xRsGC6W0M.net]
>>798
これのせいで、ヘッダに何書けばいいのかとか詳しく書いてくれてる書籍が皆無っていう

820 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 18:31:08.64 ID:YSbkH+WYd.net]
Googleのスタイルガイドに従っておけば良い

821 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/17(火) 18:32:04.81 ID:SVOYn8cOr.net]
例外禁止?
ノーサンキューです

822 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 18:53:28.33 ID:AYutjq9j0.net]
フリーフォーマットだしヘッダのinclude自体プリプロによる前処理だし



823 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 19:00:13.12 ID:AYutjq9j0.net]
ハンガリアンなんていうゴミ記法はゴミ信者が布教したもんだし
ヘッダなんていう定礎もソレと同じ
本来フリーフォーマットだし従う必要もない

824 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 19:12:11.14 ID:w5cAt2PYd.net]
拡張子も自由だしどう呼ぼうと勝手だな

825 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Bhie) mailto:sage [2016/05/17(火) 19:26:22.91 ID:0ndBRKVS0.net]
拡張子ってあれでしょ、MS-DOSの悪しき風習の一つでしょ

>>803
システムハンガリアン記法とアプリケーションハンガリアン記法の違い、知ってる?

826 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 19:33:40.71 ID:AYutjq9j0.net]
違いは知っている
どっちにしろ醜い

827 名前:デフォルトの名無しさん (ワンミングク MM9f-UkU1) [2016/05/17(火) 19:49:53.46 ID:aW8j1xwWM.net]
アプリケーションハンガリアンは意味のある統一された名前付けをしようってだけのもので、それなりに合理的だと思うけどな

828 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 20:16:48.91 ID:AYutjq9j0.net]
メンバー変数にm_
グローバル変数にg_
など見苦しくてコード読むのもなんか

829 名前:キモい []
[ここ壊れてます]

830 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 20:22:05.14 ID:AYutjq9j0.net]
余計なことすんなって気がする

831 名前:デフォルトの名無しさん (ササクッテロ Sp2f-a45h) mailto:sage [2016/05/17(火) 20:45:27.40 ID:ZLInSjXlp.net]
メンバ変数ってスコープが明らかにローカル変数と違うから、一目でわかる識別子は価値があると思う

832 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 20:52:50.22 ID:DLx6Jllf0.net]
その話題ついこの前やったな
m_はm一字で入力候補として全部出せるからまだマシ



833 名前:デフォルトの名無しさん (オイコラミネオ MMdf-lVte) mailto:sage [2016/05/17(火) 21:18:01.72 ID:H7Xr8xNTM.net]
_いれる派が多いのか

834 名前:デフォルトの名無しさん (ワッチョイ 87cb-Wsqh) [2016/05/17(火) 21:19:16.67 ID:5ZuXJob50.net]
メンバの一覧表示してなんか意味あるの?

835 名前:デフォルトの名無しさん (ワッチョイ d35b-Wsqh) mailto:sage [2016/05/17(火) 21:20:13.79 ID:0Uq+w/x10.net]
俺もmとかあっていい派だな。
ただアンダースコアが助長な感じするんで、
mHogeみたいな感じで使ってるな。

836 名前:デフォルトの名無しさん (ワッチョイ 373d-yliF) [2016/05/17(火) 21:23:42.65 ID:n2YIPAfm0.net]
エムバーでメンバーという駄洒落なのさ

837 名前:デフォルトの名無しさん (ワッチョイ 4b64-Wsqh) mailto:sage [2016/05/17(火) 21:25:33.49 ID:NhE32Twq0.net]
いずれにせよ他人に強要するもんじゃないから
プロジェクトチーム内でコンセンサスが取れていれば何でもいいんじゃないですかね。

838 名前:デフォルトの名無しさん (ワッチョイ 8fc0-TzrJ) mailto:sage [2016/05/17(火) 21:35:08.37 ID:iUzOcy+l0.net]
>>815
なんか納得した

839 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/17(火) 22:19:21.77 ID:xjOiIw8U0.net]
贅沢な名だね
お前の名は今日からtmpだ

840 名前:デフォルトの名無しさん (ブーイモ MM6f-/3cR) mailto:sage [2016/05/17(火) 22:28:00.80 ID:zWksk4WFM.net]
今日から私のことは二つ名テンプテーションと呼んでくれ

841 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 22:41:23.98 ID:DLx6Jllf0.net]
>>813
記憶があやふやであれ何だったかなあっていうときにm押せば出てくるのは便利

842 名前:デフォルトの名無しさん (ワッチョイ 4b64-Wsqh) mailto:sage [2016/05/17(火) 23:26:37.97 ID:NhE32Twq0.net]
むしろただの変数は二文字以上ある時点で豪華な部類



843 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/17(火) 23:33:54.07 ID:xjOiIw8U0.net]
>>821
そうでした。すみません。

844 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 00:11:45.44 ID:yEeXtbl90.net]
>>808
それシステムハンガリアンだよね

845 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/18(水) 00:15:09.75 ID:GQGC04nZ0.net]
MS勘違いハンガリアン

846 名前:デフォルトの名無しさん (ワッチョイ 87ff-gmVm) mailto:sage [2016/05/18(水) 00:31:32.12 ID:WN1OorbV0.net]
なんちゃらウィザードで作ると、m_まで入ってるから繋げちゃうよなw

847 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 00:45:12.55 ID:hZVHIlqW0.net]
メンバー明示したいならthis使えと。
そもそもグローバル変数は使うなと。

特にグローバル変数使うとコピペしたい時すげー不便。

848 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 00:46:39.05 ID:bTqCK2tF0.net]
グローバル変数って何?

849 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 00:47:25.65 ID:hZVHIlqW0.net]
え?

850 名前:デフォルトの名無しさん (ガラプー KK8f-6Ylf) mailto:sage [2016/05/18(水) 00:49:41.11 ID:jYlR0JsWK.net]
>>827
That is 大局なvariables.

851 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 00:52:22.73 ID:5/m+TFHG0.net]
グローバル変数使うなという人は久しぶりに見た

852 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 00:59:32.23 ID:yEeXtbl90.net]
最近は当たり前すぎてわざわざ言う人居なかったよね



853 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 01:06:37.05 ID:5/m+TFHG0.net]
え?

854 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 01:18:04.13 ID:oA47oPzz0.net]
>>826
thisなんて忘れたってエラーにもなんにもならないんだから役に立たんわ

855 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:19:11.35 ID:hZVHIlqW0.net]
>>833
だから、明示したい時って書いてるじゃん。
プレフィックス使ってもお堅いだけよ。

856 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/18(水) 01:27:17.96 ID:Y8xrmYKy0.net]
>>826
高脳C++使いはm_xxx/mxxx や xxx_なんて美しくない形のメンバー名にしないよな
メンバー名はセンスあるxxxで、使うときにthis->xxxってするのが美しいC++だよね
でも、低脳、ゆとりC++使いは美的感覚ないからm_xxx/mxxx や xxx_形を普通に使うからな
俺もだけど,orz

857 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:28:20.91 ID:hZVHIlqW0.net]
>>835
炎上させたいのか?
そういう高低の話じゃないんだが。

858 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 01:50:24.96 ID:oA47oPzz0.net]
>>834
メンバ変数アクセスなのかローカル変数アクセスなのかは常にパッと見て分かるようになってるほうが良いと思うけどね
メンバ関数からメンバ変数をアクセスする場合は.memberとしなければならないとかだったら良かったのになあ

859 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:53:50.03 ID:hZVHIlqW0.net]
>>837
そこ強制しちゃうのかー。
名前被らないようにしてれば大体問題ないけどねぇ。

860 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 02:28:40.96 ID:yEeXtbl90.net]
>>833
プレフィックスなんて忘れたってエラーにもなんにもならないんだから役に立たんわ

861 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/18(水) 06:27:23.33 ID:c/4q+m1z0.net]
役に立たないというのは話のすり替えだな。
例えば「クラス名はPascalCaseに統一しようぜ」と言う奴に
「間違えてcamelCaseで書いてもエラーにならないから無意味」
と言ったら詭弁だろう

862 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:06:57.31 ID:CyiE2Hpq0.net]
>>833
ほんとこれ
強制されたいガチガチに縛って欲しいハアハア、



863 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 07:08:23.39 ID:bTqCK2tF0.net]
>>829
なにが言えればグローバル変数って認められるんだろう

アクセスできる範囲(翻訳単位を越えるor越えない)
状態を持つ/変更できる
寿命(mainより長い)

864 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:09:50.65 ID:CyiE2Hpq0.net]
しかし正直教育型言語であるはずのパスカルでさえ
with文とかあって長ったらしい構造体メンバアクセスを省略可能にしているぐらいだから
this->fooとかいちいち書いてあるC++のソースとか読んでたら目が腐りそう…

やっぱm_プレフィックスぐらいの軽い奴をコンパイラが強制してくれたら嬉しいハアハア

865 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:33:52.96 ID:CyiE2Hpq0.net]
ていうか質問なのですが、
template<class T> { ... }の定義の中で、Tが整数型限定だとして
TのMSBを得るコードってどう書くのが良いのでしょうか。
Tによって変わるとはいえ本質的に定数なので、実行時コストを定数アクセス以下に抑えたい
やっぱ特殊化しちゃうのが常道?

一応<limits.h>ぐらいはインクルードしているものとして
const T MSB = (T)1 << ((CHAR_BIT * sizeof(T) - 1);
としたらできている気がするが、、

866 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/18(水) 07:53:45.73 ID:LyU/n3Wrr.net]
まず貴様のMSBとやらの定義を訊こうか
少なくともその定数はコンパイル時に決定できるので特殊化は要らないだろう

867 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/18(水) 07:56:24.15 ID:GQGC04nZ0.net]
そういや int i; を書くのが面倒だからグローバルにしているとか抜かすバカシャチョウ居たな

868 名前:デフォルトの名無しさん (ワッチョイ 87ff-gmVm) mailto:sage [2016/05/18(水) 08:05:53.90 ID:WN1OorbV0.net]
forループにしか使わないということかw

869 名前:デフォルトの名無しさん (ドコグロ MMdf-/3cR) mailto:sage [2016/05/18(水) 08:19:26.66 ID:Bv005giXM.net]
>>846
本物のプログラマーなんだろ

870 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 08:47:55.80 ID:5/m+TFHG0.net]
>>846
シングルスレッドなら何も困らないけど

871 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 08:49:44.59 ID:yEeXtbl90.net]
>>842
グローバルネームスペースに置かれてる変数

872 名前:デフォルトの名無しさん (ブーイモ MM6f-/3cR) mailto:sage [2016/05/18(水) 12:40:24.80 ID:83U9cWaxM.net]
>>849
いや困るでしょ…
for内で関数呼び出してて、その関数の中でもfor使ってたら…



873 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 12:44:09.84 ID:5/m+TFHG0.net]
>>851
そのためにi,j,k,l,m,nとかやってるんでしょ
知らんけど

874 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/18(水) 12:45:06.50 ID:PJk+y+uRd.net]
>>846
そこまで言うと作り話でしょ。
事実だとしても考慮外として切り

875 名前:捨て []
[ここ壊れてます]

876 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) [2016/05/18(水) 12:45:13.34 ID:ICIQ9a1pd.net]
azまで全部宣言しておけばいいだろ!

877 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 13:30:49.34 ID:yEeXtbl90.net]
そうだ!配列とインデックス変数にして使うときにインクリメント使い終わったらデクリメントすればいいんだ!

878 名前:デフォルトの名無しさん (ワッチョイ d35b-Wsqh) mailto:sage [2016/05/18(水) 18:52:20.04 ID:ODcMRn4j0.net]
全部グローバルにした方が、どっからでもアクセスできて便利だろ。

879 名前:デフォルトの名無しさん (ドコグロ MMdf-/3cR) mailto:sage [2016/05/18(水) 18:54:32.39 ID:Bv005giXM.net]
本人面白いこと言ってるつもりなんだろうな...

880 名前:デフォルトの名無しさん (ワッチョイ 1362-a45h) mailto:sage [2016/05/18(水) 18:58:10.91 ID:kXIjvZGj0.net]
定番かもしれんが

#define private public

は見たことある。
この時は好ましく無い使われ方だったが、ある意味目から鱗だった。

881 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 19:04:22.76 ID:oA47oPzz0.net]
そりゃ目から何出ても不思議じゃないわ

882 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 20:12:25.05 ID:5/m+TFHG0.net]
最近それ無効じゃなかったっけ



883 名前:856 (ワッチョイ 1362-Wsqh) mailto:sage [2016/05/18(水) 20:26:25.13 ID:kXIjvZGj0.net]
>>860

試しにやってみたら確かに警告出ますね。
ちなみに、これ見たのは10年くらい前でした。

884 名前:デフォルトの名無しさん (ワッチョイ 937b-qps8) mailto:sage [2016/05/18(水) 22:15:33.16 ID:p8whoeqx0.net]
>>843
その手の問題ってたいていダラダラ長いメソッド書いてるのが問題ってだけ。

885 名前:デフォルトの名無しさん (ブーイモ MM1f-/3cR) mailto:sage [2016/05/18(水) 23:00:45.13 ID:dPKzZ46VM.net]
>>830
いつどこで書き換えられるか分かり辛い。
再入可能なプログラムが書きづらい。

当然分かってるんだよな?

886 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 23:05:35.36 ID:oA47oPzz0.net]
再入どころかループ中に呼んだ関数で。。。
そんなもん問題外に決まってるだろw

887 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 23:08:36.18 ID:5/m+TFHG0.net]
>>863
下手なだけじゃん
それを踏まえた上でどこからでも参照できるという利便性は余りある
使ってはいけない機能なんか無いんだよ

888 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 23:12:10.63 ID:yEeXtbl90.net]
ガチで言ってるなら相当頭悪いな

889 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 23:56:41.02 ID:bTqCK2tF0.net]
>>865
利便性はたまにしかない。
たまにファイルレベルのグローバル変数(無名namespace内)がなかなか消せないことがあるってくらいだろう。

890 名前:デフォルトの名無しさん (ワッチョイ 1c42-MTTD) mailto:sage [2016/05/19(木) 00:15:20.75 ID:/u6FV+LN0.net]
>>865
下手はお前のことだよ…

891 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 00:34:18.53 ID:CdsyDRqW0.net]
お前らレベル低すぎだろ
所詮2chは人の受け売りしか言えない奴ばかりだな

892 名前:デフォルトの名無しさん (ワッチョイ 1c42-MTTD) mailto:sage [2016/05/19(木) 00:48:21.19 ID:/u6FV+LN0.net]
賢者は歴史から学ぶんだよ。
愚者でも長年マ続けてればグローバル変数が危ういことくらい自分で気づくだろ



893 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 00:50:20.65 ID:CdsyDRqW0.net]
長年続けていれば上手い使い方くらい分かってくるはずだよな

894 名前:デフォルトの名無しさん (ワッチョイ e6cc-MTTD) mailto:sage [2016/05/19(木) 00:54:48.61 ID:jjXAPX3H0.net]
バカシャチョウ肯定する奴が多くてオレサマちょっとビックルがぶ飲みしますたw

895 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/19(木) 00:58:49.66 ID:AERHjGsq0.net]
上手い使い方っていうより害が少ない使い方ってだけだろ。

一連の流れの中で複数個所から見えるデータとして使うだけのグローバル変数なら簡単に消せる。
一連の流れとかに限定できなくて、プログラムの開始から終了までいつでも好きな時に使えて状態も保持してくれる、
ってなると何を使えばいいんだ?

896 名前:デフォルトの名無しさん (ワッチョイ c69f-VMrL) mailto:sage [2016/05/19(木) 01:02:49.20 ID:MRopiFdD0.net]
std::cout とか std::cerr とか滅茶便利だからみんな使え

897 名前:デフォルトの名無しさん (ワッチョイ 3b73-QLyI) mailto:sage [2016/05/19(木) 03:25:07.54 ID:8MpWaHz30.net]
単純な文字列比較のコード書いたんだけど


898 名前:の呼び出して=、>、<って判明する方が楽だよね
とりあえずキーの重複チェック、登録、キーの値でインデックス更新
C++の set みたいな挙動
[]
[ここ壊れてます]

899 名前:デフォルトの名無しさん (ワッチョイ bc42-MTTD) mailto:sage [2016/05/19(木) 06:46:13.07 ID:YvzDSQsZ0.net]
>>873
シングルトン

900 名前:デフォルトの名無しさん (ワッチョイ 7be7-8iTP) mailto:sage [2016/05/19(木) 06:51:42.87 ID:7d5d2lg80.net]
template<class T,int N>
T& global(){
static T V;
return V;
}

ネーム空間をなるべく汚染しないグローバル変数の実装。
Nを変更するとそれ毎に関数が生成される。なのでペナルティはあるかもね。

901 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 07:07:31.92 ID:A0YFV+4B0.net]
まさに「俺すごいもの発明しちゃった」的な迷惑コード
全ソース内で一意な番号をプログラマー責任で決めて変数を識別するという発想がunko
しかもコンストラクターに引数が与えられない残念仕様

902 名前:デフォルトの名無しさん (ワッチョイ 7be7-8iTP) mailto:sage [2016/05/19(木) 07:47:17.80 ID:7d5d2lg80.net]
enumってコンパイルタイム変数になったんじゃなかったっけ。
それに。別にINTじゃなくてもなんでも識別できれば代用できるよ。
まぁ、ベストとは思わんよさすがに。



903 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 08:56:20.09 ID:shk5tFZP0.net]
ベターどころか最悪の部類だよ
グローバル変数よりたちが悪い

904 名前:デフォルトの名無しさん (ワッチョイ 138c-7Gsa) mailto:sage [2016/05/19(木) 09:05:34.39 ID:C8F3ftqe0.net]
いい加減グローバル変数にアレルギーある老害は引退しろ

905 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 09:08:06.56 ID:STy3ELMD0.net]
グローバル変数とそれに準ずる機能を使っていいのは、初期化時のみ変更し、その後読み取り専用にする場合ぐらいだろ

仕様やコストや納期などの制限もなしにあえてやるというのは、ただの依存関係を考えられない初心者ぐらい

プログラマにとって怠惰は美徳だが、センスのないやつが履き違えるとこうなるといういい例だな

906 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:09:30.57 ID:shk5tFZP0.net]
namespaceすら使えないカスが偉そうにすんな

907 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 09:12:16.18 ID:eVW3ynUMd.net]
グローバル変数なんて使った事ないけど何に必要なの

908 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:18:07.29 ID:shk5tFZP0.net]
>>884
モジュール間のインターフェースを決められない未熟なプログラマに必要

909 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 09:44:48.05 ID:ZQvJITQCd.net]
>>884
プログラムの開始から終了まで何らかの状態を保持し、任意のタイミングでそれを参照する必要があるとき。
ちなみにシングルトンや関数内staticの使用では完全な問題解決とは見なされない。

910 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 09:48:07.93 ID:ZQvJITQCd.net]
かえってシングルトンの方が嫌われている。

911 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:56:21.08 ID:shk5tFZP0.net]
>>886
参照するだけで変更しないなら定数でいいし、
変更するにしても名前空間に置けばいい
グローバルにする理由が一つもない

912 名前:デフォルトの名無しさん (JP 0H31-1UMr) mailto:sage [2016/05/19(木) 10:07:12.42 ID:73EK6oIWH.net]
ファイルから読み込んでずっと変更しないシステム定数

それに名前空間なんて名前衝突しないだけで何の意味もない
名前空間下にあろうがなかろうがグローバルだよ



913 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 10:16:44.29 ID:shk5tFZP0.net]
>>889
名前衝突しないのは大事だろそれを意味ないって名前空間全否定か。

お前は
sturuct A{static int B;};
こういうのもグローバル変数って言ってるの?
そうならお前のいうグローバル変数と俺の思ってるグローバル変数は異なる物だ

914 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:19:20.40 ID:eVW3ynUMd.net]
いくら聞いてもグローバルじゃないとダメな理由が見えてこない
サンプル書いてみて

915 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 10:23:06.51 ID:TN2vwqPV0.net]
グローバルや

916 名前:Vングルトンの必要性が分からないやつは単に経験が少ないだけ
必要のないところでまで無闇に使うのは論外だが
[]
[ここ壊れてます]

917 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 10:46:00.80 ID:shk5tFZP0.net]
>>889
>ファイルから読み込んでずっと変更しないシステム定数
グローバル変数にするより関数にしたほうがいい。誤って書き換えてしまう心配もなくなる

>>892
グローバル変数とシングルトン両方否定してる奴居ないと思うけど誰に対して言ってる?
独り言?

918 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 10:51:14.99 ID:uMP5aDx/p.net]
>>891
ある関数内で、bool型の3つのフラグに応じて3つの処理をするか決める時に使ってたなあ
例えばこんな感じ
bool f1,f2,f3;
main(){
//フラグを決める処理をここに記述
func();
return;
}
func(){
if(f1)〜
if(f2)〜
if(f3)〜
}
こういう場合どうすればスマートなの?
funcの引数にフラグ渡すのはブサイクな気がしたからグローバルにしたけど

919 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:55:48.76 ID:ZQvJITQCd.net]
グローバル変数に対する批判

シングルトンの導入

シングルトンの乱用が目立つ

シングルトンに対する批判(デサパタの中でも下の下)
→根本的な改善策は?←イマココ

920 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 10:56:57.72 ID:STy3ELMD0.net]
>>894
引数にして何がブサイクなのかさっぱりわからんぞ…
数が増えるのが嫌なら構造体にして渡すし、むしろ迷う意味がわからない
というか、C++ならそういう場合は関数じゃなくてクラスにしろよ

921 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:57:15.07 ID:eVW3ynUMd.net]
f1,f2,f3とfuncをひとつのクラスにしてmainのローカルにすればいいのでは

922 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 10:58:07.34 ID:TN2vwqPV0.net]
>>893
>グローバル変数とシングルトン両方否定してる奴居ないと思うけど誰に対して言ってる?
俺のレスの1つ前に「グローバルじゃないとダメな理由が見えてこない」って書いてあるんだが?
シングルトンなんて機能的にはグローバルに薄皮一枚かぶせただけのものだし



923 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 10:58:41.46 ID:STy3ELMD0.net]
シングルトンもはっきり言ってただの手抜きだから
静的クラス全てがそう

924 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:58:53.44 ID:ZQvJITQCd.net]
>>894
mainとfuncだけに閉じた処理だから引数で渡すのに何の困難もないじゃないか。

925 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:59:11.66 ID:eVW3ynUMd.net]
>>898
勝手な解釈すんな

926 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:59:37.70 ID:ZQvJITQCd.net]
>>899
Yes

927 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:02:36.04 ID:TN2vwqPV0.net]
>>901
じゃあどういう解釈すればよかったんだよ?
お前はグローバルとシングルトンが本質的に違うとでも思ってるのか?
シングルトンのほうが柔軟性があることは認めるがね

928 名前:デフォルトの名無しさん (ワッチョイ 653c-rvT4) [2016/05/19(木) 11:03:15.86 ID:n4iAdyIo0.net]
日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」
と発言するのと同じレベルだ!!
「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
masaikaw@microsoft.com
090-2541-1718

929 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:08:16.28 ID:STy3ELMD0.net]
>>903
初心者かよ…
シングルトンパターンとグローバル変数じゃスコープの要件の時点で既に違うだろ

930 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:11:13.83 ID:eVW3ynUMd.net]
>>903
どれがマシかという話をしてるんだろ
静的変数が是か否かなんて今更くだらない
勝手な解釈すんなアホが

931 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:12:18.94 ID:TN2vwqPV0.net]
>>905
「スコープの要件」とは?
何のことなのかよく分かりませんので詳しくご教示ください

932 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 11:13:39.15 ID:uMP5aDx/p.net]
やっぱそうだよね…長年CやってたせいでいつまでたってもCライクな書き方が抜けない、重症です



933 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:14:15.63 ID:STy3ELMD0.net]
>>907
シングルトンに静的インスタンスとしての概念はあっても公開の概念はない
デザパタやり直せ

934 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:15:29.40 ID:TN2vwqPV0.net]
>>906
>どれがマシかという話をしてるんだろ
>静的変数が是か否かなんて
さあ?それこそあんたの勝手な解釈だな
是か否かなんて話は俺はしてないよ文盲

935 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:18:04.90 ID:eVW3ynUMd.net]
勝手に人の話を勘違いして例にあげて
アホな解釈で話を歪めてトンチンカンな事言っておいてこの言い草
マジヤバイ

936 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:18:30.55 ID:TN2vwqPV0.net]
>>909
>公開の概念はない
ほう。そこをもう少し詳しく

937 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:20:22.01 ID:STy3ELMD0.net]
>>912
いやこれ以上は答えないよ
既に質問ではなく相手を打ち負かすつもりのレスだからね
お前はもう最初のレスから詰んでるよ
残念だったな

938 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:20:51.55 ID:TN2vwqPV0.net]
>>911
そうだとしたら何を言いたいのか分からないようなテキストを書いたお前の責だバーカ

939 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:22:16.79 ID:STy3ELMD0.net]
いつの間にこんなにレベルが下がったんだここは
ちょっと前までC++の仕様を少しでも間違えば後ろから刺される勢いだったのに…

940 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:24:10.88 ID:eVW3ynUMd.net]
>>914
勝手に人の話を勘違いで解釈して赤っ恥をこいた男の末路がこのレスに込められていますね

941 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:24:40.59 ID:TN2vwqPV0.net]
>>913
「答えない」
ワロタwww「答えられない」だろwww
「お前は詰んでる」って勝利宣言して逃げるパターン出たね

942 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 11:28:17.40 ID:shk5tFZP0.net]
>>917
お前が一人で勉強すればすむ話



943 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:32:43.43 ID:STy3ELMD0.net]
>>917
普通の人間なら一つ前のレスで十分理解できるだろうに
長々と必死に抗弁を試みようとする時点で、
外面を保つ事のみを目的としてる残念な人間なのだとしか評価できないね
まあその外面もお前の頭の中にしかないんだが

944 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 11:53:46.12 ID:ZQvJITQCd.net]
グローバル変数とシングルトンの違いを論点にしてる人々がいるようだが...
どっちも使いたくないから他の機構を考える、という流れで是非よろしく

945 名前:デフォルトの名無しさん (JP 0H31-1UMr) mailto:sage [2016/05/19(木) 12:08:41.77 ID:73EK6oIWH.net]
シングルトンが重宝されるのは初期化処理が複雑で
処理順解決が問題になる場合

そんなケースなら流石にグローバル丸出しなんてしない

946 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 12:43:08.90 ID:CdsyDRqW0.net]
使わなくてもいけるという発言を見る度に使えばいいじゃんとしか思えないわ
gotoもガンガンつかっていく

947 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 12:43:08.91 ID:TN2vwqPV0.net]
>>919
外面云々とかこんな匿名掲示板で何ってるんだよバーカ
鏡と睨み合って自分自身に向かって諭してろよ中身なしの超絶ゴミクズ君

948 名前:デフォルトの名無しさん (ワッチョイ e97b-MTTD) mailto:sage [2016/05/19(木) 12:58:35.08 ID:hRS9mr1R0.net]
まーたPostMessage君が出てきたのか
暑くなると頭のネジが5本くらい抜け落ちる奴が増えるから本当に迷惑だ

949 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:02:34.95 ID:Ibvbou6Qr.net]
>>886
なぜ解決にならないのかkwsk

950 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:26:11.48 ID:Ibvbou6Qr.net]
物事の概念・本質をとらえることのできない低能>>903には、グローバル変数とシングルトンの区別がつかなくても仕方ない

>>890
>>889は名前空間スコープの変数をグローバル変数と呼んでいるようだが
名前空間スコープとクラススコープの違いぐらいは理解した方がいい。
むあ「何にもついて」の「何の意味もない」なのか文脈を無視して単語レベルで反応する猿には難しいかったかも

951 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:27:31.80 ID:Ibvbou6Qr.net]
>>926に訂正
 誤 何にもついて
 正 何について

952 名前:デフォルトの名無しさん (ワッチョイ 7162-xKv1) mailto:sage [2016/05/19(木) 13:40:03.86 ID:+RT//Rk20.net]
昔MFCのアプリで CPen, CBrush, COLORREF あたりを singleton に入れて使ってた。
singleton じゃなくてもいいけど、singleton が適してると思う。



953 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 13:41:01.02 ID:TN2vwqPV0.net]
はいはいいつもの語り口きました
実務じゃ全く役に立たない無能さんw本は売れた?www

954 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 13:53:09.52 ID:ZQvJITQCd.net]
>>925
結局は特定の変数に状態を保持しておくという本質は変わらないから。
もちろんスコープやアクセス範囲の制御ができるとか監視ができるとかのメリットはわかるけど、それは付随的なもの。

955 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:07:52.18 ID:STy3ELMD0.net]
>>923
それで内容の理解はできたのか?
何年プログラムやってその体たらくなのかしらんが、少しは精進したほうがいいぞ

956 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 14:12:05.72 ID:BWP2yuCgM.net]
>>926
なぜ名前空間とクラススコープの違いを理解していないと思ったのか

957 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:21:47.31 ID:STy3ELMD0.net]
ステートレスにしろってのは同意するけど、
グローバル変数とステートレス/ステートフルの議論は別だと思うよ
スコープ関係ないし

958 名前:デフォルトの名無しさん (アウアウ Sab5-V4Zo) mailto:sage [2016/05/19(木) 16:44:31.58 ID:iQAxMb//a.net]
static constexpr double global_pi = 3.14;

959 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 16:55:51.62 ID:uMP5aDx/p.net]
#deine PI 3.14でよくね

960 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 17:48:13.21 ID:ZQvJITQCd.net]
状態の変化があって寿命の長いデータを、変数に入れることなく管理したい

961 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/19(木) 18:27:00.27 ID:ap9POzY/0.net]
そこでクロージャですよ

962 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/19(木) 19:42:52.90 ID:GUQu4Juu0.net]
644とかパーミッション設定できたらよかったのに。



963 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 20:11:59.41 ID:TN2vwqPV0.net]
>>934
普通にM_PI使えばいいと思うの
それに3.14じゃ精度悪すぎるよ

964 名前:デフォルトの名無しさん (フォンフォン FF7c-rvT4) [2016/05/19(木) 20:43:53.03 ID:e5/wWDviF.net]
日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」
と発言するのと同じレベルだ!!
「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
masaikaw@microsoft.com
090-2541-1718

965 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:46:59.31 ID:STy3ELMD0.net]
>>936
それ実装できたとして変数使わない意味ある?

966 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:49:04.86 ID:STy3ELMD0.net]
セッターゲッター的なのか?
それとも一意型みたいなのか?

967 名前:デフォルトの名無しさん (ワッチョイ 3ec0-xpBm) mailto:sage [2016/05/19(木) 22:05:29.27 ID:WYY/9sV80.net]
errno

968 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 22:22:12.59 ID:BWP2yuCgM.net]
とんちか何かかな?

969 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/19(木) 22:39:24.47 ID:TLDkaexbM.net]
>>943
それ真似るにはスレッド変数使わないといけないし、c++erは手本とすべきじゃないだろ

970 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:07:06.91 ID:A0YFV+4B0.net]
>>932
「変数を非グローバルの名前空間スコープに置けばいいというわけではない」という>>889の主張に対して突然クラススコープの話を持ち出したからだが

971 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:08:20.67 ID:A0YFV+4B0.net]
>>939
へー、ところでその普通のM_PIって何?

972 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:10:33.47 ID:MvX4mrmep.net]
へ?流石にネタかえ?
math.h使ったことあらず?



973 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:12:52.89 ID:A0YFV+4B0.net]
>>934
そのstaticには何か意味があるのか

974 名前:デフォルトの名無しさん (ワッチョイ 9030-xKv1) mailto:sage [2016/05/19(木) 23:18:50.48 ID:W0ctNLpa0.net]
>>948
その反応は、「printfを知らない」レベルじゃないと使えないと思うぞ

975 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 23:19:22.62 ID:CdsyDRqW0.net]
>>948
>>947は喧嘩腰でしか会話できない人だからほっといたほうがいいけど
要するにM_PIは標準化されていなくて環境によっては定義されているとは限らないからつつかれている

976 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 23:20:03.66 ID:shk5tFZP0.net]
>>946
だからそれをグローバルというならpublicなクラススコープに置いた 静的変数もグローバルだろって話だよ。
外から見たらusing namespace出来るかどうかの違いしかないぞ

977 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:31:32.11 ID:MvX4mrmep.net]
>>951
そうなんか
よく分からんけど、俺が今まで触ったPCではどれも使えたし
だいたいの環境なら使えるやろ
そんなマイナー環境使ってる奴のことなんてシラネw

978 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:50:33.37 ID:A0YFV+4B0.net]
Visual C++やICCがマイナーとは恐れ入る
gccですら規格に違反しないよう
-std=c11の時はM_PIが使えないようにしているというのに

979 名前:デフォルトの名無しさん (ワッチョイ a759-MTTD) mailto:sage [2016/05/20(金) 00:08:19.61 ID:B/K1dZEm0.net]
何かすごいカオスっぷりやなー。

980 名前:デフォルトの名無しさん (ワッチョイ 7b42-xKv1) mailto:sage [2016/05/20(金) 00:15:33.17 ID:DZyHkwIp0.net]
使えないなら自分で定義すれば良いだけなんでは?

981 名前:デフォルトの名無しさん (ワッチョイ e6cc-MTTD) mailto:sage [2016/05/20(金) 00:17:43.17 ID:Z0iObOq70.net]
計算機のPIボタンからおぼぼ

982 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 01:04:20.91 ID:iM9BKZPP0.net]
>>954
規格厨の心の闇は深いな
Visual C++(_USE_MATH_DEFINESが必要だが)やg++では普通に使えるけどな
ここはC++スレなんだぞ
ICCはシラネ



983 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/20(金) 07:21:21.24 ID:e1TBDqG+0.net]
>>958
ICCも_USE_MATH_DEFINESで使える筈。
Visual C++はC++規格1.4p2に反しないよう_USE_MATH_DEFINESが必要にしてあると記憶していたが
確かにgccの-std=c++14の時の挙動が気になるな。
C++の規格上許されるの?

984 名前:957 (オッペケ Srbd-MTTD) mailto:sage [2016/05/20(金) 08:08:40.81 ID:yY8TibFar.net]
ちょっと考えたがVisual C++の実装が残念なだけで
C++では規格に反しない実装が可能なんだな。なるほど勉強になった。
だが処理系によって_USE_MATH_DEFINESが必要なものを「普通」と言って他人にすすめているという発想には及ばなかった失礼

985 名前:デフォルトの名無しさん (ワンミングク MMd0-MTTD) mailto:sage [2016/05/20(金) 08:14:16.19 ID:FD2q0K+3M.net]
boost::math::costants::pi<double>();

986 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/20(金) 13:01:42.59 ID:GBvYzkJRM.net]
人を下に見ないと心の平穏保てない可哀想な人がいるね

987 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 13:09:57.94 ID:88qDJ/vwd.net]
なんか書こうと思ったがやめた

988 名前:デフォルトの名無しさん (オイコラミネオ MM14-MTTD) [2016/05/20(金) 13:41:58.30 ID:EAAu5NmTM.net]
>>961
なげーよ

989 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 13:45:22.04 ID:jCV1qcCq0.net]
>>964
#define PI boost::math::costants::pi<double>()

990 名前:デフォルトの名無しさん (アウアウ Sab5-MTTD) mailto:sage [2016/05/20(金) 15:24:20.36 ID:adOvMsP+a.net]
どうでもいいけどなんで#define使うの?

991 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 15:34:32.24 ID:jCV1qcCq0.net]
const auto PI =
と書くより5バイトくらい短いから

992 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 17:24:15.12 ID:91VA6wxC0.net]
tan(-1)



993 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/20(金) 19:26:27.89 ID:yqNTwCqH0.net]
acos(0)*2

994 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 19:36:46.02 ID:gU7EupTq0.net]
質問です。

内部クラスから外側クラスのインスタンスメンバを参照したいのですが、
ググッた感じでは参照を渡すしかないっぽいのですが、これってマジですか?
マジなら、面倒なので内部クラスのstaticに入れてしまおうかとも思っているのですが、これってありですか?
(外部クラスが生成される度に内部クラスが別々に生成されて大丈夫なのか、
それとも内部クラスとして書いても外にフラットに書いても同じで、クラスで唯一のstatic変数となってバグりますか?)
或いはこの場合に一般的に使われるような手法はありますか?

参考コード:動かしていないので雰囲気だけ確認してください。

class OuterClass {
class InnerClass {
static OuterClass* parent; // <- これあり?それとも OuterClassを複数作成しても唯一になって駄目?
void method_cpp0(int score){
parent->score += score; // <- こう使うつもり
}
void method_cpp1(int score, OuterClass* p) { // <- こうじゃないと駄目?
p->score += score;
}
void method_javascript(int s){
score += s; // JavaScriptはこれができる。これができればうれしい。
}
void method_java(int score){
OuterClass.this.score += score; // Java はこれができるらしい。これでもいい。
}
};
int score;
};

995 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 19:51:35.59 ID:iM9BKZPP0.net]
>>969
あ゛ー
いいから普通にM_PI使え
規格原理主義者のたわごとなど完全無視しろ
もしクソバカ環境でコンパイルエラーが起きたら
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
とかで如何なる問題も発生しない

996 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 19:54:05.85 ID:BayA8c/P0.net]
>>970
ようわからんけど
別にstaticにせんでも
const OuterClass&をinnerClassにもたせてコンストラクタで指定すれば良い気がする

997 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:29:11.61 ID:gU7EupTq0.net]
>>972
コンストラクタでやるという記述もググッた時に見つかったのですが、
今回はInnerClassを一つではなく配列として持つので、メモリをケチろうかと。
コンストラクタで渡した方が確かに記述は綺麗なのですが。

とはいえ、改めて「プログラミング言語C++」を確認しても、
クラス継承の話は多くてもクラス内包の話がほぼ無いので、
一般的にはコンストラクタで「メンバ変数」として渡すのでしょうか。確かにこれだと確実です。
記述的にはコンストラクタ内でstaticに対して上書きしまくってもいいのですが、
これができるのか?というのは若干不安ですし。

998 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 20:43:41.93 ID:BayA8c/P0.net]
OuterClassのインスタンスが一つならそれでもいいけど
それならそれで他に良い設計がありそうな気もする
それこそシングルトンだとか

999 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:56:18.27 ID:gU7EupTq0.net]
つまりstaticはどこに書いてあるクラスでも1つかもしれないと。
OuterClassは当面は1つで済みますが、今後複数化する可能性もあるので、シングルトンは駄目です。

余り真面目にC++やってなかったのですが、
内部クラスから外部クラスが階層アクセスできないのは、C++の仕様がちょっと古い気がします。
後発のJavaやJavaScriptは最初から出来るので。

ちなみに参考コード
class OuterClass {
class InnerClass { // 省略
};
int score;
vector<InnerClass> nodes;
};

1000 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 21:02:34.05 ID:88qDJ/vwd.net]
>>973
Inner - Outer の関係にする必要性はどこにあるの?

1001 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/20(金) 21:12:02.35 ID:icw8VvxgM.net]
>>970
・staticメンバは

1002 名前:プログラムを通して一つ
・メモリをケチりたくてmethod_cpp1が可能ならそれがよいだろう
・JavaやJavaScriptでも結局は暗黙的にOuterClassへの参照を持つことになるのでInnerClassインスタンスごとにメモリを使うことになる
・InnerClassとOuterClassとの間にメモリ配置上の制約があるなら、ほかの手も考えられるが、配列で持つとのことなので恐らくダメだろう
・古いというのはわからなくもないが、後発の言語が暗黙的にやるコストについて意識しない人がいるのならあながち悪くはないのかもしれない
[]
[ここ壊れてます]



1003 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:20:44.60 ID:Czf9pjzL0.net]
>>971
いんや規格は重要だ
まず動くことが至上命題ではあるがそこ履き違えると底辺コーダーになっちまうぞ

1004 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) [2016/05/20(金) 21:34:03.42 ID:Czf9pjzL0.net]
なんだP君だったのか…

>>970
メモリケチりたい状況で外の「インスタンス」にアクセスしたいってのは無理がある気がするな
俺ならOuterとInnerとは別に、もう一個クラス作ってそいつに両方に依存した処理やらせるかな

1005 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:38:07.10 ID:Czf9pjzL0.net]
>>977を良く見てなかったが、どうやら余計なレスだったようだ
自分もmethod_cpp1の適宜渡す方法に同意します

1006 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:56:53.90 ID:Dz9bHtQOM.net]
適宜渡すとして記述が煩雑になるのが問題のようだから、それを緩和する手は色々ありそうな気はする

1007 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:57:43.59 ID:Dz9bHtQOM.net]
あれID変わった

1008 名前:デフォルトの名無しさん (ワッチョイ fd10-MJjN) mailto:sage [2016/05/20(金) 22:09:45.76 ID:RCBW+7XV0.net]
>>934
M_PIが規格で定義されてるかとかいう議論も意味あるかもしれないけど、
そもそも、円周率はたとえが悪いだけなんじゃないの?
重力加速度とか万有引力定数とかならどうするのがベスト?(もちろん場合によるだろうが)

1009 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 22:23:37.08 ID:Czf9pjzL0.net]
>>981
ありそうな気はするが技巧的な方法しか思いつかないな

InnerInnerを作り、今のInnerの機能を移動し、Innerにはコンテナと親の参照を持たせる
そしてInnerInnerのmethod_cpp1のようなメソッドをInnerが委譲

これじゃ親から見た場合に多少はマシになるって程度で、コードも設計も汚いな

1010 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:43:44.89 ID:gU7EupTq0.net]
>>976
いや特にありません。そもそも非オブジェクト指向でも当然組めます。
ただ、色々試した結果、オブジェクト指向に慣れてくると、
Java的な「それ刻みすぎじゃねーの?」と思えるような所まで刻んだ方が
結果的に見やすかったり、後々融通が利くことが何となく分かってきました。
なので、今後はそうしようかと試しています。

>>977
詳細にありがとうございます。やはりstaticでは駄目ですか。
method_cpp1は今回は可能ですが、記述の抽象度が混ざるので出来ればクラス分けしたかったのです。
JavaやJavaScriptでもメモリ使用量が少ないわけではないのはその通りですが、
内部クラスからは外部クラスを参照するのはかなり普通のことなので、
これは言語として対応して欲しかったところです。今まで拡張されなかったのが不思議なくらいです。
これはコンパイラ側だけで完全に対応でき、実行時の追加コストはありません。
(不要ならコンパイル時点で外側クラスポインタの確保を止めることが出来る)
申し訳ありませんが、メモリ配置上の制約というのは何のことか分かりません。

1011 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:44:35.94 ID:gU7EupTq0.net]
ちなみに、やろうとしていることに近く、イメージ的に分かりやすいのは、「ライフゲームをオブジェクト指向で」です。

参考コード、非オブジェクト指向
bool map[64][64];
bool map_next[64][64];

for (int i=0

1012 名前:;i<64;i++)
for (int j=0;j<64;j++)
map_next[i][j] = life_exe(i,j);

参考コード、オブジェクト指向
class LifeGame {
class Dot {
int x,
int y;
void life_exe(){} // ここで外側の map, map_new に直接アクセスして更新させたい。
};
bool map[64][64];
bool map_next[64][64];
};

実際にやろうとしていることは、正規表現の探索に近いです。
ライフゲームのように外側変数が時系列で変化するものではないため、
探索途中経過(Dot)をオブジェクトとして持ち、
最初から各オブジェクトに終わりまで探索(life_exe)させる事が出来ます。
とはいえ、やはりメリットは大してありませんが。
[]
[ここ壊れてます]



1013 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 22:45:59.15 ID:91VA6wxC0.net]
>>983
ライブラリの数値を使うか自分で数値を定義しておくかな…
piとかeは数学関数で計算できるだけマシってことね
M_PI使わない理由として俺は十分納得できるかな

1014 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/20(金) 22:51:15.37 ID:RvnBIaae0.net]
>>985
オブジェクト指向であることとか「刻む」ことの意義と
インナークラスにすることがあまり結びつかないなあ。
内側のクラスの存在が外側から完全に隠れる以外の効果あったっけ?

1015 名前:デフォルトの名無しさん (ワッチョイ bd6c-dqc0) mailto:sage [2016/05/20(金) 22:53:44.87 ID:BayA8c/P0.net]
内側クラスは外側クラスのプライベートにアクセスできる

1016 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 22:56:32.97 ID:4DucW+JdM.net]
>>984
マクロやstaticメンバを使った汚い手から一時的な処理用のクラスを作るなどまで想像してましたが、どのみち一手間かかるので必要性次第でしょうね(Innerのメソッドが多くてそうでもしないと…とか)

結局それほどケチる必要がなくてコンストラクタで渡すので十分な予感

本当にポインタ1個分が問題になるような細かいInnerClassを多数作るようなケースなら、このアドレスの範囲にあるInnerのオブジェクトはどのOuterに対応する、という表が作れると検索時間と引き替えにメモリを節約できたり

1017 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 23:07:25.77 ID:4DucW+JdM.net]
>>985
最近追加されたラムダですらどのようにキャプチャするかを細かく指定しなければならない言語だということを理解した方がいいと思う
今後そういう機能が追加されるかどうかはしらないけど、されたらいいね

1018 名前:デフォルトの名無しさん (ワッチョイ bc42-MTTD) mailto:sage [2016/05/20(金) 23:17:26.67 ID:soKi6pqK0.net]
innerクラスなんて完全なアンチパターンだろ
馬鹿じゃねーの

1019 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:24:48.47 ID:gU7EupTq0.net]
>>988
インナーにするのは、DotはLifeGameでしか使わないからです。(他から見える必要がない)
オブジェクト指向にするのは、多分制御が簡単になりそうだからなのと、
その際に記述が抽象階層で分離でき、見やすくなると予想されるからです。


もっと良い例がありました。「文書内の不完全マッチによる最有力候補探索」です。
これはほぼやりたいことと同じです。

例えばテキスト文書があったとして、「あいうえおかきくけこ」を探索するとします。
ここで、そのまま「あいうえおかきくけこ」があれば100点、それを示して終わりです。
これがない場合、欠け方それぞれで得点付けし、とにかく一番得点が高い候補を一つ出します。
(例えば「あ」がないのなら-20点とか、「う」が抜けているのなら-10点とか)
実際は多分100〜200字同士のマッチングと等価で、完全一致は期待できないため、
Dotに分枝の作成まで含めてlife_exeさせます。
結果、LifeGameからは「やっとけ。」だけで済み、詳細な実行ルーチンはDot側に集約されます。
といってもこれは分離されるだけで、どちらに書くかの違いだけなのですが、
それでも後々効いてきます

1020 名前:フで、Dot側に集約できる部分は集約しておきたいのです。

Dotは分枝の作成時に自分自身からforkする感じで、たぶんかなり増えます。
ただし親は一つなので、ここの部分は勿体ないかな、という感じでした。
(問題になるほど増えないとは思います)
life_exe内には親のmapへのアクセスは大量に存在しますが、
life_exeはDot内で自走するので、引数として親ポインタを渡すことは出来ません。
従って、親ポインタはコンストラクタでメンバ変数として確保することになります。
コンストラクタで親ポインタを渡すのは、記述的には全く問題ないです。

(最初にもらった親ポインタを大事に抱えて再帰しまくることも出来ますが、、、)
[]
[ここ壊れてます]

1021 名前:デフォルトの名無しさん (ワッチョイ b0ab-/fHo) [2016/05/20(金) 23:24:55.51 ID:G62tMzQY0.net]
馬鹿じゃねーよ
おまえ以外は

1022 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:52:28.35 ID:gU7EupTq0.net]
>>991
> 最近追加されたラムダですら
見てみましたが、確かにこのラムダはちょっと見にくいですし、使いにくいですね。
元はといえばC++には関数内関数が無い為、レキシカルスコープ(※)を導入できず、
ラムダのうまみも少し欠けている気がします。
(※一つずつ上の階層を探して名前が一致したらそれと見なす)
g++では既に拡張が行われていると聞きましたが、先に関数内関数が欲しかったですね。

とはいえ、回答して頂いた皆様、ありがとうございました。



1023 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/21(土) 00:00:28.24 ID:z244ST7/M.net]
>>995
使いにくいのにはそれなりの理由があって、それを理解しましょうねという話
その上で適切な言語を選びましょう

1024 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/21(土) 00:01:00.93 ID:EJBeUkkD0.net]
動けば良いんだよ

1025 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 00:27:26.30 ID:jGVAnHGn0.net]
>>995
よくわかんないけど、名前が一致した「それ」は型が揃っているのかな?
一致してる度合いに微妙に差があるのでは?

1026 名前:デフォルトの名無しさん (ワッチョイ bc7b-xKv1) mailto:sage [2016/05/21(土) 00:56:40.25 ID:Uqmc4lbY0.net]
>>983
宇宙物理のシミュレーションだと万有引力定数が1になるような単位系で計算する

1027 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 01:08:07.17 ID:jGVAnHGn0.net]
外部からはOuter::Innerはautoでしか受けられない型か

1028 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:23:16.26 ID:HBQ7d37R0.net]
次スレ
C++相談室 part125
echo.2ch.net/test/read.cgi/tech/1463761261/

1029 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:29:43.83 ID:HBQ7d37R0.net]
>>998
自分がイメージしたのはJavaScriptで、あの言語はnamespaceがないので関数内関数がデフォ、
そして型がないので名前さえ一致すればそこで決まりですね。
ラムダで数階層上の変数を掴みに行くこともよくあります。

C++はnamespaceで細かく切れということなのでしょうが、
やはりユーザの意志で階層が切れないのは使いにくいですね。
C++のインナークラスはメリットがないといえばそうですが、JavaScriptだとインナークラスがデフォです。
(外に見せる必要がなければインナークラス)
これに関しては「余分な物は見せない」というJavaScriptの方がプログラミングとしては正しいと思われます。

ただ、ラムダはGCヒープならほぼ問題ありませんが、スタックが基本のC/C++だと実装も難しいはずで、
C++のラムダは分かりやすくはないけど妥当な仕様の気もしますね。
現実的にはヒープポインタを値キャプチャでラムダでしょうし、この仕様で実害はありません。
スタック変数をラムダで参照キャプチャは使い方として不自然ですし。
それでもやりたければ出来るところがC++っぽいですが。

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 48日 1時間 7分 19秒

1031 名前:1002 [Over 1000 Thread.net]
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
premium.2ch.net/
pink-chan-store.myshopify.com/


1032 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef