[表示 : 全て 最新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

65 名前:デフォルトの名無しさん (ワッチョイ e042-j/+h) mailto:sage [2016/04/11(月) 23:07:04.91 ID:4BrCfwua0.net]
覚えたばかりで使いたい年頃

66 名前:デフォルトの名無しさん (ワッチョイ a030-j/+h) mailto:sage [2016/04/11(月) 23:19:25.81 ID:x/V8tc7c0.net]
>>61
アスペ全然関係ねぇだろって状況でしか
使われるの見たことないなそういやw

67 名前:デフォルトの名無しさん (ワッチョイ 413c-SddS) mailto:sage [2016/04/12(火) 00:26:59.20 ID:0UTgzyp30.net]
>>63
アスペ

68 名前:デフォルトの名無しさん (ワッチョイ 7f7b-DytT) mailto:sage [2016/04/12(火) 01:17:31.61 ID:sQLQIwRw0.net]
>>58
定義してもらわなきゃわからない素人は引っ込んでようね

69 名前:デフォルトの名無しさん (ドコグロ MM1c-SddS) mailto:sage [2016/04/12(火) 08:30:13.78 ID:xYAotuK9M.net]
>>55
C脳の老害はそろそろ引退しろよ

70 名前:デフォルトの名無しさん (ワッチョイ 9da8-QzB1) [2016/04/12(火) 08:42:37.79 ID:xvAFE9Om0.net]
>>65
定義できないんだろ?
自分の主張をきちんと整理できないのは
素人以前に論客としての基本ができてないんだよ
恥を知ろうね

71 名前:デフォルトの名無しさん (オッペケ Sr29-SddS) mailto:sage [2016/04/12(火) 18:30:33.78 ID:Pt+c78dMr.net]
最終的なサイズは0以上でも、サイズを計算する過程で
intを使った演算をしたいことはある。
キャストしなきゃいけないのは流石に不便

72 名前:デフォルトの名無しさん (ガラプー KKbf-nXV3) mailto:sage [2016/04/12(火) 20:26:27.00 ID:EvPGf+vtK.net]
シフト演算や未定義動作の関係で、unsignedにすることはあるけど逆はないなぁ
具体的にどんな操作ですか?

73 名前:デフォルトの名無しさん (ワッチョイ 7f7b-DytT) [2016/04/13(水) 00:00:27.02 ID:z3tTaqtH0.net]
>>67
そんなに教えて欲しいのか?
添削してやるから定義してみな。



74 名前:デフォルトの名無しさん (ワッチョイ 9da8-QzB1) [2016/04/13(水) 00:28:53.46 ID:CqRnSqIY0.net]
>>70
定義するのはおまえだよ
小学生以下のすり替えしてんじゃねえ

つーか誰が何を主張してるのか整理できない
掛け値なし小学生以下の論客くずれじゃしゃーねーかw

75 名前:デフォルトの名無しさん (ワッチョイ d37b-pOi2) [2016/04/14(木) 03:08:20.77 ID:PjjDqAVF0.net]
>>71
教えをこう時は「お願いいたします」と頭を下げるのが、小学生でも知ってる常識だ
バカめ

76 名前:デフォルトの名無しさん (アウアウ Sa67-rJyw) mailto:sage [2016/04/14(木) 03:47:34.18 ID:/Il1GiFba.net]
パンパカパ〜ン

77 名前:デフォルトの名無しさん (ワッチョイ 7bb4-w4ft) mailto:sage [2016/04/14(木) 13:08:33.42 ID:bhJKkgbs0.net]
もし一週間後にこの世から C++ が消滅するとして、
お前らはどの言語にいくの?
D? Rust?

78 名前:デフォルトの名無しさん (ワッチョイ db38-TaqW) mailto:sage [2016/04/14(木) 13:11:50.21 ID:rJmmubWG0.net]
>>74
JavaScriptに逃げます

79 名前:デフォルトの名無しさん (ワッチョイ 27a8-q6hj) [2016/04/14(木) 13:18:07.01 ID:/lkdV6bx0.net]
>>72
おまえに教えを請うバカは全宇宙に1人もいねーよど低脳

おまえの主張が俺に伝わらなくて困るのはおまえだろ
俺にとって顔も知らん池沼のあうあうあーが意味わかんなくても当たり前だし

80 名前:デフォルトの名無しさん (ブーイモ MM2f-Gtsw) mailto:sage [2016/04/14(木) 13:30:04.13 ID:RrIZ4ynPM.net]
関数にexternを付ける意味って何ですか?
普通、外部リンケージの関数を使うときはプロトタイプ宣言をすればすむ話ですよね

81 名前:デフォルトの名無しさん (ブーイモ MM2f-Gtsw) mailto:sage [2016/04/14(木) 13:38:38.96 ID:EGbMBKF8M.net]
extern cを付けるなら意味あるよ

82 名前:デフォルトの名無しさん (ワッチョイ 7bb4-w4ft) mailto:sage [2016/04/14(木) 14:18:48.75 ID:OJhwzOCe0.net]
俗語として、"A" は接吻、"B"はペッティング、"C" は性器同士の接触を伴う性行為、すなわちセックスである
一方で C++ において extern 修飾子はそれを外部に公開することを示す

したがって extern "C" とは

83 名前:デフォルトの名無しさん (スプー Sd2f-Gtsw) mailto:sage [2016/04/14(木) 14:48:57.71 ID:r/b7CawPd.net]
エクスタシー



84 名前:デフォルトの名無しさん (ブーイモ MM2f-Gtsw) mailto:sage [2016/04/14(木) 15:46:36.79 ID:RrIZ4ynPM.net]
>>78
それはそうですが、externだけの場合の話です

>>79
感心しました。C#もお願いします

85 名前:デフォルトの名無しさん (ワッチョイ 6fcc-Gtsw) mailto:sage [2016/04/14(木) 16:05:37.53 ID:Bx+gDZ8M0.net]
extern+関数は関数内部で未定義の外部参照関数を一時的に宣言したりする場合に使う

86 名前:デフォルトの名無しさん (ワッチョイ 6ba8-Jz3o) mailto:sage [2016/04/14(木) 16:21:43.87 ID:LtT4shjO0.net]
>>74
Rust で C++ コンパイラの開発を試みます。

87 名前:デフォルトの名無しさん (ブーイモ MM2f-Gtsw) mailto:sage [2016/04/14(木) 16:51:00.65 ID:RrIZ4ynPM.net]
>>82
プロトタイプ宣言との違いが分かりません
すみませんが例を示していただけないでしょうか?

88 名前:デフォルトの名無しさん (ワッチョイ 6fcc-Gtsw) mailto:sage [2016/04/14(木) 17:34:52.06 ID:Bx+gDZ8M0.net]
関数内部でプロトタイプと同じ書き方してみろよ
extern記述しないとできないから

89 名前:デフォルトの名無しさん (スプー Sdaf-VZXL) [2016/04/14(木) 17:41:13.29 ID:tV4LbGhWd.net]
デキタァ…

90 名前:デフォルトの名無しさん (ワッチョイ 4bdc-WXps) mailto:sage [2016/04/14(木) 17:51:08.75 ID:Y6Qtie590.net]
C++では外部関数を宣言する時のexternは省略可能じゃなかったっけ?
付けても害はないし、つけなくても意味は同じ。

古いCとの互換性とかで残ってるんだと思ったが、
Cにおいても「externなしだと曖昧になる場面」てのが思い浮かばない。


g++ では関数内での外部関数宣言もexternなしで通ったよ。

91 名前:デフォルトの名無しさん (ワッチョイ 6fcc-Gtsw) mailto:sage [2016/04/14(木) 17:55:10.24 ID:Bx+gDZ8M0.net]
ま、今は色々仕様が確定してきてそこら辺ユルユルになってきているけどな

92 名前:デフォルトの名無しさん (ワッチョイ 6fcc-Gtsw) mailto:sage [2016/04/14(木) 17:56:53.73 ID:Bx+gDZ8M0.net]
昔は関数の内部に構造体書いたり関数の宣言とか出来なかったんだぜ

93 名前:デフォルトの名無しさん (ワッチョイ 4bdc-WXps) mailto:sage [2016/04/14(木) 20:24:15.71 ID:Y6Qtie590.net]
そういえば下のような感じで、外部関数のプロトタイプ宣言と
引数型の簡単な変換のインライン定義とを並べて書くときに…

namespace SomeSpace {
 extern bool some_condition_check(const char* str);
 inline bool some_condition_check(const std::string& str) {return str.c_str();}

 bool another_condition_check(const char* str);
 inline bool another_condition_check(const std::string& str) {return str.c_str();}
}

externを書いておくと関数名がきれいに縦に並んでちょっと見やすくなる
という効用があるね。"extern" と "inline" の字数が同じだから。



94 名前:デフォルトの名無しさん (ワッチョイ 5f13-mNwz) mailto:sage [2016/04/14(木) 20:43:24.46 ID:f1hhftJp0.net]
>>89
へえ‥今は関数の内部に構造体の定義が書けるんだ‥新鮮だね

95 名前:デフォルトの名無しさん (JP 0H07-DByn) mailto:sage [2016/04/14(木) 21:23:16.59 ID:BY7gxQ6DH.net]
関数内関数は return 有無の見間違えとか面倒くさいから嫌い

96 名前:デフォルトの名無しさん (ワッチョイ a742-VZXL) mailto:sage [2016/04/14(木) 21:30:57.47 ID:4DxPT4rq0.net]
>>92
lambdaもだめか

97 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/14(木) 21:43:18.93 ID:sprOrblAr.net]
>>85>>86の流れにワロタ

98 名前:デフォルトの名無しさん (ワッチョイ 27a8-q6hj) [2016/04/14(木) 22:38:49.39 ID:/lkdV6bx0.net]
staticな関数原型と衝突したことを検出するために
自分の関数原型と関数定義をexternにするとか?
今となってはD組の話、とタカをくくると思わぬところで足をすくわれる

# 死刑執行がおせーんだよ >WG21

99 名前:デフォルトの名無しさん (ワンミングク MMef-8wQM) [2016/04/15(金) 00:42:56.90 ID:MuKGbCphM.net]
asioはいつ標準に入るんだ

100 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/15(金) 08:37:52.62 ID:wcmNmqit0.net]
static void f();
extern void f();

一体何を検知したいのか

101 名前:デフォルトの名無しさん (ブーイモ MM2f-Gtsw) mailto:sage [2016/04/15(金) 15:29:12.25 ID:wsA6y7yQM.net]
>>87
自分もそう理解してました

実はコードはC++でなくCなのですが、まぁそこは同じですよね
NASA、エアバス、ボーイングなどが参画してる某OSSなんですが、
あまり洗練されたコードじゃないので深く意味を考えないほうがいいかも

102 名前:デフォルトの名無しさん (スプー Sdaf-VZXL) [2016/04/15(金) 15:37:21.93 ID:rmsnL02Wd.net]
struct hoge{ std::string s; };
std::array< char, sizeof( hoge ) > buf;
hoge* a = new( buf.data() ) hoge;
a->s = "aaaaaaaaaaa";
std::array< char, sizeof( hoge ) > buf2;
buf2 = buf;
hoge* b = reinterpret_cast< hoge* >( buf2.data() );
b->s = "bbbbbbbbbb";
std::printf( "%s %s\n", a->s.c_str(), b->s.c_str() );
aとbはオブジェクトとして使っても大丈夫ですか

103 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/15(金) 15:53:10.39 ID:CjDQhw6r0.net]
ダメ



104 名前:デフォルトの名無しさん (スプー Sdaf-VZXL) [2016/04/15(金) 16:08:36.54 ID:rmsnL02Wd.net]
なにゆえですか

105 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/15(金) 16:14:01.72 ID:wcmNmqit0.net]
> new( buf.data() ) hoge

これが許されない

106 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/15(金) 16:18:15.70 ID:wcmNmqit0.net]
ハゲ「デストラクタを持つようなクラスがメモリレベルでコピーできるわけないだろハゲ」

107 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/15(金) 16:22:54.24 ID:CjDQhw6r0.net]
>>101
これ
buf2 = buf;
これではstd::stringをメンバとして含む非PODオブジェクトをバイナリコピーしちゃってる
2つを別々にplacement new/deleteすれば問題ないと思うけど

108 名前:デフォルトの名無しさん (ワンミングク MMef-8wQM) [2016/04/16(土) 00:18:14.54 ID:/5mBf/vNM.net]
aはいいでしょ。
デストラクタ呼んでないからリークするけど。
bは駄目

109 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 00:28:56.13 ID:Wk1F8zu40.net]
二つ前のレスでわざわざplacement newに問題があると教えてやってるのに
問題無いと盲信するのは労害に違いない。
まあオツムの進化がPODで止まっているようでは仕方ない

110 名前:デフォルトの名無しさん (ワンミングク MMef-8wQM) [2016/04/16(土) 00:33:12.94 ID:/5mBf/vNM.net]
>>106
え?何で?

111 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 06:08:39.46 ID:4BDbPdkp0.net]
>>106
自分こそ老害であるとは思わないのかw
老人用オムツつけてるんじゃないのかおい

112 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 11:08:08.36 ID:Wk1F8zu40.net]
placement newの戻り値をdeleteしちゃう低能には難しかったようだ
alignas(aho) char buf1[sizeof(aho)];

113 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 12:14:16.20 ID:Wk1F8zu40.net]
ついでにPODでなければバイナリーレベルでコピーできないという訳ではない
struct a() { // 非PODだがメモリコピー可能
 public: double v;
 private: double w;
};



114 名前:デフォルトの名無しさん (ワッチョイ 27a8-q6hj) [2016/04/16(土) 12:23:56.26 ID:KhM6yuxr0.net]
privateにあるデータ表現に依存するのは隠蔽の観点からはNGだけどね

115 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 13:45:45.95 ID:4BDbPdkp0.net]
>>109
やけに自信満々で勿体ぶってると思ったらそれだったかwオムツ着用じいちゃん
std::array<char, N>で得られる領域は1バイトアライメントになるとでも思い込んでいそうだな

116 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK77-vtUn) mailto:sage [2016/04/16(土) 14:01:09.62 ID:ri69Z7UDK.net]
カスタムアロケータのちょっとした練習です。
ideone.com/ZmTMFB

117 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 14:05:28.67 ID:4BDbPdkp0.net]
>>110
そんなこと言い出したらis_pod<T>::valueがfalseになるのに実はメモリコピーして問題ないなんて例はいくらでも出せるわ
>>99のhogeはメモリコピー不可なのは明らかなのによくそんな難癖つけられるもんだな
ナウでいけてるヤングはメモリコピー可能なオブジェクトかどうかはis_pod<T>::valueで判断する

118 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 14:42:33.12 ID:4BDbPdkp0.net]
てか
>struct a() {
なんなんだよ()って?そんな文法知らないし、コンパイルできないんですけどw

俺が書いた
>placement new/deleteすれば問題ない
のdeleteを「placement newの戻り値をdeleteしちゃう」と解釈しちゃうくらいのアスペなら
こういうところは間違わないほうがいいよ

119 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 14:43:42.03 ID:Wk1F8zu40.net]
規格にはコピー可能かどうかの判断基準としてstd::is_trivially_copyable_vが用意されていると言うのに
trivially copyableの概念が確立されていなかった時代のJIS規格票()で見かけたPODを信じちゃったんだろうな低能は

120 名前:デフォルトの名無しさん (スプー Sd2f-Gtsw) mailto:sage [2016/04/16(土) 14:48:58.78 ID:i8qYlRuXd.net]
>>110
よくわかんないけどそれPODと呼べないんだっけ?

121 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 14:54:31.09 ID:Wk1F8zu40.net]
>>117
★の条件が満たせない

PODの条件
 standard-layout
  すべてが非vritual
  アクセス制御が一通り★
  :
 トリビアルなクラス
  トリビアルなデフォルトコンストラクター
  trivially copyable
   トリビアルなコピー/ムーブコンストラクター
   トリビアルな代入/ムーブ演算子
   トリビアルなデストラクター

122 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 15:01:12.47 ID:Wk1F8zu40.net]
>アスペならこういうところは間違わないほうがいいよ

ちょっとワロタ
その理屈は正しいw

123 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 15:07:51.48 ID:4BDbPdkp0.net]
>>116
>std::is_trivially_copyable_v
またやっちゃたようだな。is_trivially_copyable_vなんてあるか?
is_trivially_copyableならあるが
せっかく知識はあるのにしょうもないところで墓穴を掘るタイプだな



124 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 15:13:47.13 ID:4BDbPdkp0.net]
アハ!誰か分かっちゃったwww

125 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/16(土) 15:16:16.66 ID:Wk1F8zu40.net]
>>120
悪ぃ悪ぃ、規格じゃなくてN4567見てたわ

で、
>std::array<char, N>で得られる領域は1バイトアライメントになるとでも思い込んでいそうだな
思ってたけど、違うの?
ideone.com/OEAth2

126 名前:デフォルトの名無しさん (アウアウ Sa67-33s9) mailto:sage [2016/04/16(土) 18:10:30.85 ID:Xvqhm3pva.net]
誰だ!

127 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/16(土) 19:32:32.34 ID:4BDbPdkp0.net]
>>122
std::arrayのアライメントの件についてはあなたが正しかったことを

128 名前:S面的に認めます
new char[N]なら規格の5.3.4/10で
"an integral multiple of the strictest fundamental alignment requirement"
になることが保証されているのと混同してた
よって、std::arrayで確保した領域でalignof(T)が1以外のオブジェクトをplacement newするのはあなたの指摘通り許されません
std::arrayの代わりにstd::aligned_storageを使うべきですね
[]
[ここ壊れてます]

129 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/17(日) 01:00:29.55 ID:xPbVippa0.net]
>>113
ここはお前の日記帳じゃない
ゴミを垂れるな
誰かがそのウンコードを真似したらどうすんだ

130 名前:デフォルトの名無しさん (ワッチョイ d37b-pOi2) [2016/04/17(日) 08:26:09.36 ID:b+eVByZe0.net]
>>76
整数型の正しい使い方を定義できないゴブリン脳が一匹いる
>>58

131 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/17(日) 11:50:26.61 ID:xPbVippa0.net]
long longとint_least64_tの使い分けがややこしい

132 名前:デフォルトの名無しさん (ワッチョイ 27a8-q6hj) [2016/04/17(日) 13:17:00.83 ID:xNZ/zNBq0.net]
ビット数の保証がいらんときといるときで使い分けることの何がややこしいんだよ

133 名前:デフォルトの名無しさん (ワッチョイ 7b54-bJ9H) mailto:sage [2016/04/17(日) 14:09:07.52 ID:oaifAOu80.net]
実装上ではほぼ同義だからだろ
まあ規格にある int_least64_tだけ使えば良いと思うけど



134 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/17(日) 14:23:59.21 ID:xPbVippa0.net]
>>128
long longとint_least64_tの違いは
それより小さくて64ビット以上の他の型が存在するかどうかなのだが
何を言っているんだお前は

135 名前:デフォルトの名無しさん (ワッチョイ 6fcc-Gtsw) mailto:sage [2016/04/17(日) 14:51:46.39 ID:efZowWH00.net]
128ビットになたら long long long になるん??

136 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/17(日) 15:06:35.52 ID:l5b4C1Fn0.net]
そこはint128_tで良くね?

137 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/17(日) 15:09:31.34 ID:l5b4C1Fn0.net]
まあ、いろいろ考えるとleastとfast系しか使えなくなっちゃうんだけど。

138 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/17(日) 15:24:52.93 ID:xPbVippa0.net]
最低の保証ならchar/short/long/long longでも一応事足りるし
何より2の補数表現が保証されたint??_tは捨てがたい

139 名前:デフォルトの名無しさん (ワッチョイ b7cf-cFRK) mailto:sage [2016/04/17(日) 15:30:50.77 ID:JUdcx65W0.net]
誰か >>130 が何を言ってるか分かる人、解説を。

140 名前:デフォルトの名無しさん (ブーイモ MM47-Gtsw) mailto:sage [2016/04/17(日) 15:48:10.23 ID:nxW4nqqmM.net]
>>135
お前日本人?
64bitより小さくて、かつ、64bit以上の型が存在するかってことだろ?
つまり、

えっ?

141 名前:デフォルトの名無しさん (ワッチョイ 0b91-Gtsw) [2016/04/17(日) 15:52:23.49 ID:CNQH8xMB0.net]
安くて購入段階でLinuxぶち込んである申し分ないノートPCない?
一台増やそうと思うんだが

142 名前:デフォルトの名無しさん (ワッチョイ 7b54-Gtsw) mailto:sage [2016/04/17(日) 16:02:37.24 ID:oaifAOu80.net]
long long(128bitかもしれない)以下で64bit型以上(intが64bitかもしれない)の型が存在してるような環境
かつlong longとも異なら無ければ使う意味はないよ
だって大きさの定義はlong longと同じだから

143 名前:デフォルトの名無しさん (ワッチョイ 7b54-Gtsw) mailto:sage [2016/04/17(日) 16:03:57.71 ID:oaifAOu80.net]
間違い
使う意味が無いではなく、使い分ける意味がない



144 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/17(日) 16:30:44.23 ID:l5b4C1Fn0.net]
int??_tって、存在自体が処理系依存なんだよねー。
低レベル用途には必須だけど、アプリ用途だとleast/fastの方が使いやすいと思った。

145 名前:片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ d38f-2SUX) mailto:sage [2016/04/17(日) 16:40:45.16 ID:EFtPKpBL0.net]
よお、お兄ちゃん。新しい武器が入ったぞ。装備していけよ。
https://github.com/katahiromz/unboost

146 名前:デフォルトの名無しさん (ワッチョイ eb7b-Jz3o) mailto:sage [2016/04/17(日) 18:32:32.08 ID:ZM27BkVH0.net]
>>140
C99, C++11は規格になってるだろ

147 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/17(日) 20:04:12.55 ID:l5b4C1Fn0.net]
>>142
規格で処理系依存ってなってたと思うけど、違った?

148 名前:デフォルトの名無しさん (ワッチョイ 0b7b-8wQM) [2016/04/17(日) 20:33:26.12 ID:BVEBxeTg0.net]
たしか必須じゃないよね
とは言っても対応してない環境は余程特殊なものだろうから無いことを心配するより他の心配した方がいいんじゃないかと思う

149 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/17(日) 22:04:32.45 ID:l5b4C1Fn0.net]
>>144
どう判断するかは個々人の問題なので。

150 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/17(日) 22:52:17.63 ID:xPbVippa0.net]
まあ規格はstd::stringすら処理系定義だったりするけど
Cのint64_tはかなりネガティブな書き方がしてあるから仕方ない
sprintf_sに至っては虫の息

151 名前:デフォルトの名無しさん (ワッチョイ 7bb4-w4ft) mailto:sage [2016/04/18(月) 00:56:20.08 ID:5Ir4szOL0.net]
int??_t じゃなく int や long を使うべきときってある?

152 名前:デフォルトの名無しさん (ワッチョイ cf53-q6hj) [2016/04/18(月) 06:24:07.28 ID:0gSzJGDh0.net]
>>137
kakaku.com/pc/note-pc/itemlist.aspx?pdf_Spec105=24

153 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/18(月) 18:05:37.23 ID:geM4ik0Wr.net]
>>147
ループ変数にintじゃなくstd::int64_tとか使ってたら
変人だと思うわ



154 名前:デフォルトの名無しさん (ドコグロ MM0f-Gtsw) mailto:sage [2016/04/18(月) 19:50:05.92 ID:C+iDXaNwM.net]
>>149
必要なら普通に使うけど?

155 名前:デフォルトの名無しさん (ワンミングク MMef-Gtsw) mailto:sage [2016/04/18(月) 20:19:07.03 ID:y+UdHKG3M.net]
特になんもなければstd::size_t使ってるわ
といってもrange-baseしか最近使ってないけどね

156 名前:デフォルトの名無しさん (ワッチョイ 3fa6-Jz3o) mailto:sage [2016/04/18(月) 21:08:16.98 ID:Qvk/GJ/v0.net]
auto?

157 名前:デフォルトの名無しさん (アウアウ Sa67-pOi2) mailto:sage [2016/04/19(火) 03:50:29.85 ID:sEKB8saBa.net]
auto i = 0ull;

158 名前:デフォルトの名無しさん (ワッチョイ 27d9-Gtsw) mailto:sage [2016/04/19(火) 08:38:50.82 ID:SvHoNoSF0.net]
>>151
よう!俺。

159 名前:デフォルトの名無しさん (ワッチョイ cf20-q6hj) [2016/04/19(火) 09:17:49.99 ID:Mp5r7P9F0.net]
hashの出力がsize_tとかやめて欲しい
uint_least160_tつーか、uint_least<160>がねえのもおかしいし

160 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/19(火) 09:55:09.78 ID:nL6Ii7Gq0.net]
>>155
バーカ

161 名前:デフォルトの名無しさん (ワッチョイ db38-TaqW) mailto:sage [2016/04/19(火) 10:08:58.32 ID:FK9rMfbT0.net]
>>156
喧嘩したけりゃ他行きな小僧

162 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/19(火) 10:30:19.44 ID:nL6Ii7Gq0.net]
>>157
俺はこのバカに少なくとも「バーカ」って言ってあげた
それでお前はこのバカになにが出来るの?
なにも出来ないならお前が消えな

163 名前:デフォルトの名無しさん (ワッチョイ db38-TaqW) mailto:sage [2016/04/19(火) 10:58:38.53 ID:FK9rMfbT0.net]
>>158
喧嘩したけりゃ他行きな小僧



164 名前:デフォルトの名無しさん (ワッチョイ 3742-Jz3o) mailto:sage [2016/04/19(火) 11:04:51.69 ID:pETlWi8B0.net]
ID:nL6Ii7Gq0 は いらない子!

165 名前:デフォルトの名無しさん (ワッチョイ 277b-GRux) mailto:sage [2016/04/19(火) 11:13:16.48 ID:nL6Ii7Gq0.net]
俺は喧嘩売ってるつもりはないし、>>155という度し難いバカに親切にも「バーカ」って言ってあげただけだよ
俺に喧嘩売ってるのがFK9rMfbT0、pETlWi8B0
本当に役に立たないゴミだな

166 名前:デフォルトの名無しさん (ワッチョイ db38-TaqW) mailto:sage [2016/04/19(火) 11:15:39.94 ID:FK9rMfbT0.net]
>>161
喧嘩したけりゃ他行きな小僧

167 名前:デフォルトの名無しさん (ワッチョイ 0b7b-8wQM) [2016/04/19(火) 11:22:46.44 ID:qXd1Jas40.net]
荒らしに構うなって前世紀から言われてるだろ

168 名前:tasuketekesuta (ワッチョイ d3d5-j49k) [2016/04/19(火) 21:50:00.65 ID:spYNmTFF0.net]
DataSet/DataAdapterの仕様についてご教授下さい。


■DataSet/DataAdapterの仕様
DataAdapter には、SELECT、UPDATE、INSERT、DELETEのSQL文が設定できます。
Fillメソッドを実行するとSELECTのSQL文の基づいてDataSetにデータを読み込みます。このときDataSetの各行には「編集なし」のマークがついています。
値を更新するとそのマークが「更新済」、削除すると「削除済」、データを追加すると「追加済」のマークに変わります。
Updateメソッドを実行すると、DataSetの各行のマークに応じて、設定してあるUPDATE、INSERT、DELETEのSQL文を実行します。

169 名前:tasuketekesuta (ワッチョイ d3d5-j49k) [2016/04/19(火) 21:51:02.12 ID:spYNmTFF0.net]
>>164 の続き

■実施したい事【概要】
DataAdapterのFillメソッドで取得したDataSet内のDataTableに対して、
挿入/更新操作をかけていき、全ての処理が終わったら、UPDATEを行う。

その際、DataTableに挿入した順番でDBへの挿入SQLが流れてほしい。

170 名前:tasuketekesuta (ワッチョイ d3d5-j49k) [2016/04/19(火) 21:51:29.36 ID:spYNmTFF0.net]
■実施したい事【詳細】

DataTable^ tbl;//←DataAdapterのFillメソッドで取得したDataSet内のDataTableだとします

while(10000行程度ループ){

DataRow^ tg_row = tbl->Rows->Find(ループ毎に変わる値);

if( static_cast<DataRow^>(tg_row)==nullptr){
DataRow^ row = tbl->NewRow();
row["hogehoge"] = ループ毎に変わる値;
tbl->Rows->Add(row);//←★★★★★★初期挿入★★★★★★★
}
else{
row["hogehoge"] = ループ毎に変わる値;
}

}

上記のソースで5000行のレコードが出来たと仮定します。
※つまり"ループ毎に変わる値"の重複が半分あったということ

この状態でUPDATEを行うと、
なぜか、初期挿入した順番通りにinsert文が発行されません。
※DB上で見ると順番がごちゃまぜです

171 名前:デフォルトの名無しさん (ワッチョイ d3d5-j49k) [2016/04/19(火) 21:52:10.39 ID:spYNmTFF0.net]
>>164 の続き

■質問@
なぜ、初期挿入した順番通りにinsert文が発行されないのでしょうか?
tbl->Rows->Findで取得したレコードの値を変更すると順番が変更になってしまうのでしょうか?

■質問A
初期挿入した順番にinsert文が発行されようにするには、
どの様にしたら良いでしょうか?
解決策をご教授下さい。

172 名前:デフォルトの名無しさん (ワッチョイ b763-Gtsw) mailto:sage [2016/04/19(火) 21:59:51.04 ID:4s2SrkGy0.net]
ID:spYNmTFF0
荒らしは去れ

173 名前:デフォルトの名無しさん (アークセー Sx27-bDYe) [2016/04/20(水) 03:23:29.57 ID:y2Y1qnWRx.net]
>>167
データベースに依存した問題
てか、SQLのほうの話題だろ



174 名前:デフォルトの名無しさん (ワッチョイ cf13-kHia) mailto:sage [2016/04/20(水) 05:58:33.09 ID:Ysvgw+BH0.net]
>>167
そもそも、挿入順とDB上での順番が一致することは保証されていない。
q.hatena.ne.jp/1153407134

175 名前:デフォルトの名無しさん (アウアウ Sa67-33s9) mailto:sage [2016/04/20(水) 07:18:51.45 ID:dTPS4iPYa.net]
そもそも格納順番とかそっちに任せるから、とにかく最新情報科学技術の粋を結集して高速にデータを参照させてくれってのがデータベースでしょ

176 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/20(水) 07:58:13.83 ID:thevk6F2r.net]
いいえ違います

177 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/20(水) 08:01:43.93 ID:thevk6F2r.net]
クエリーでなくリーレション(アトリビュートのドメインの直積)にはそもそも概念モデルとして順序の概念が無いし

178 名前:デフォルトの名無しさん (ワンミングク MMef-Gtsw) mailto:sage [2016/04/20(水) 09:22:54.95 ID:8iJwmy9eM.net]
まぁデータベースは表ではなくて集合を表現したものだからな

179 名前:デフォルトの名無しさん (ワッチョイ 4b40-u1fT) mailto:sage [2016/04/20(水) 23:06:05.59 ID:sW5MEHFW0.net]
不慣れなプログラマが作る全ソースが全ヘッダを読み込むので困る。ちょっと弄ると全ビルド

180 名前:デフォルトの名無しさん (ワッチョイ 0b7b-y51b) mailto:sage [2016/04/20(水) 23:42:45.99 ID:ZQBKVnsi0.net]
すぐテンプレ使いたがる馬鹿のコードなんてそんなもんよ。

181 名前:デフォルトの名無しさん (ワッチョイ 19e3-zfCm) [2016/04/21(木) 22:25:29.05 ID:3sH/HRos0.net]
翻訳環境にとんでもない化け物がお手頃で使えるようになった今、
理想的には、実行イメージ全体が1つの翻訳単位に収まっていることだね
翻訳単位の境界をまたげない最適化が結構もったいないことになってるから

182 名前:デフォルトの名無しさん (ワッチョイ 4db4-z8Ax) mailto:sage [2016/04/22(金) 16:20:21.52 ID:VK3N1B+b0.net]
つまり cc と ld を一つのコンパイル単位にまとめてコンパイルすれば Linux カーネルが3秒でビルドできる爆速コンパイラに

183 名前:デフォルトの名無しさん (ワッチョイ 3e16-zfCm) [2016/04/22(金) 16:27:16.85 ID:trDHzPiw0.net]
いやコンパイラが爆速かどうかではなくバイナリを爆速にするって話
最適化をがっつりやるならその分の時間はかかるだろうし



184 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/22(金) 17:55:39.19 ID:bwUeH041M.net]
テンプレート書くよりその都度コピペした方が色々はやいよねコンパイル時間とか

185 名前:デフォルトの名無しさん (JP 0H41-SZE8) mailto:sage [2016/04/22(金) 19:18:24.79 ID:cAq2nbH2H.net]
そして地震がきた時にクソコードの山に押し潰されるのを待つのだ

186 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/22(金) 19:35:18.98 ID:LlaEs4+z0.net]
テンプレートはコンテナ以外で明確に使った方が良いケースはどんなのがある?

187 名前:デフォルトの名無しさん (ワッチョイ 4b3c-FmnC) mailto:sage [2016/04/22(金) 19:47:23.35 ID:x1AcDznE0.net]
アルゴリズムとか

188 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/22(金) 21:06:06.11 ID:7+eL8tO2a.net]
保守性のために標準ライブラリを使うんだろ
コーディング速度や実行速度の為ではない

189 名前:デフォルトの名無しさん (ワンミングク MMd0-3Kaz) [2016/04/22(金) 21:27:17.03 ID:+uE+J+gQM.net]
標準ライブラリを使う使わないの話はお前以外してない

190 名前:デフォルトの名無しさん (ワッチョイ 217b-xSxp) mailto:sage [2016/04/23(土) 02:40:57.38 ID:m/KBeaUS0.net]
>>182
信号処理とかだとテンプレートなしではもう無理
論理的に同じ処理をするのに、整数、float、doubleで別々のコードを書かなきゃいけないなんて
やってられない

191 名前:デフォルトの名無しさん (ワッチョイ f1e1-gALo) mailto:sage [2016/04/23(土) 08:43:35.78 ID:F/8DDl4q0.net]
>>182
テンプレート引数にテンプレートを指定する手法が必要な時。

192 名前:デフォルトの名無しさん (ワッチョイ 6be7-FmnC) mailto:sage [2016/04/23(土) 08:46:03.16 ID:bKfgUY2x0.net]
ファクトリーメソッドとかかなぁ。

193 名前:デフォルトの名無しさん (ワッチョイ 4db4-z8Ax) mailto:sage [2016/04/23(土) 14:18:29.26 ID:nvSaEwLX0.net]
>>186 はまさに >>183 の例だな
型の振る舞いだけに着目して抽象的な操作を記述できるようにする
だから静的型付けの言語でテンプレートやらジェネリクスやらをまともに使うには型制約が必須なんだけど、
未だに型制約を記述するための支援がない言語があるらしい



194 名前:デフォルトの名無しさん (ワッチョイ 57e6-zfCm) [2016/04/23(土) 19:16:14.77 ID:tcao+QTV0.net]
>>186でFA

195 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/23(土) 20:18:32.35 ID:hfDo0ds00.net]
例をあげようって話の流れで、なんで一例に対してファイナルになるんだよ

196 名前:デフォルトの名無しさん (ワッチョイ 57e6-zfCm) [2016/04/23(土) 21:02:12.70 ID:tcao+QTV0.net]
> 整数、float、doubleで別々のコードを書かなきゃいけないなんて
やってられない

じゃあ、これ以上の答えがあるってのか?

197 名前:デフォルトの名無しさん (ワッチョイ 1ec0-v6Xr) mailto:sage [2016/04/23(土) 21:36:34.80 ID:zzpDuGYL0.net]
1st アンサーかも

198 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/23(土) 23:38:40.69 ID:hfDo0ds00.net]
>>192
それはテンプレートの基本機能じゃね?

199 名前:デフォルトの名無しさん (ワッチョイ 5cec-zfCm) [2016/04/24(日) 06:26:37.85 ID:936uZ4pr0.net]
あとは重箱の隅みたいな細かいことばかりだと思うが?

200 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/24(日) 09:20:15.79 ID:bi4aOyNo0.net]
いやだから、例をあげろっていう話の流れだったんじゃ

201 名前:デフォルトの名無しさん (ワッチョイ 6be7-FmnC) mailto:sage [2016/04/24(日) 09:37:21.56 ID:qrH7Oshx0.net]
唯一解が出ちゃってぽしゃったんだよ。

202 名前:デフォルトの名無しさん (スプー Sdf8-DbIH) mailto:sage [2016/04/24(日) 09:53:33.85 ID:PJXOgY3Xd.net]
>>195
非型は?

203 名前:デフォルトの名無しさん (アウアウ Sa05-L+iy) mailto:sage [2016/04/24(日) 14:18:35.81 ID:nyww5Nv/a.net]
コンパイル時に計算したい場合か



204 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/24(日) 22:23:36.21 ID:tmf17AXnr.net]
オナニー以外に使い道は無い

205 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/24(日) 22:35:15.43 ID:C4if0ujR0.net]
オーバーロードで事足りる程度でもテンプレートなら行数を圧縮することはできる

206 名前:デフォルトの名無しさん (ワッチョイ f140-FmnC) mailto:sage [2016/04/25(月) 02:07:03.74 ID:4nVWf6Tg0.net]
行数を圧縮すると成果物が少ないと評価される…

207 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/25(月) 08:14:09.84 ID:4toUZyy7a.net]
糞査定なんとかしないと

208 名前:デフォルトの名無しさん (スプー Sdf8-DbIH) mailto:sage [2016/04/25(月) 08:48:18.03 ID:RM4kY/BSd.net]
C++11になってVariadicと右辺値/左辺値が登場したので、型のバリエーションだけじゃなくてもっといろんな
パターンについてのバリエーションをtemplateで表現できるようになった。
俺はヘタレなのでかなり難しくなったと感じている。

209 名前:デフォルトの名無しさん (ワッチョイ 5c42-zfCm) [2016/04/25(月) 13:43:44.73 ID:d+bG+pO00.net]
>>201
無数にあっちゃいけない関数はオーバーロード一択でそ

210 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 14:15:42.28 ID:FkG7uZgrH.net]
質問失礼します。

'abc.exe': 'C:\Visual Studio 2008\Projects\xyz.dll' を読み込みました。Cannot find or open the PDB file
'abc.exe': 'C:\Visual Studio 2008\Projects\xyz.dll' をアンロード

このアンロードはどうやって止めるのでしょうか?

実行した際に、dll内のメソッドを参照できないようで、以下のエラーとなります。
ハンドルされていない例外: System.IO.FileNotFoundException: ファイルまたはアセン
ブリ 'hoge.dll'、またはその依存関係の 1 つが読み込めませんでした。
指定されたモジュールが見つかりません。
場所 hoge.hogeclass..ctor()
場所 main(Int32 argc, SByte** argv)
場所 _mainCRTStartup()
コンパイルはできています。

よろしくお願いします。

(なんか急にできなくなった気がします。前は、問題無だったはずなのになぁ)

211 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9b-0LZu) mailto:sage [2016/04/25(月) 14:21:48.07 ID:9Ydy9LbhK.net]
>>206
ファイル'hoge.dll'が見付からないからエラーになってる。'hoge.dll'はどこにある?

212 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 16:01:11.85 ID:FkG7uZgrH.net]
回答ありがとうございます。

exeと、同じフォルダにあります。
読み込みました」って、出てるから、いったん読み込みはできてると思うのですが。

Cannot find or open the PDB file
(このPDBについてのメッセージは、関係ないと思います)

よろしくおねがいします。

213 名前:デフォルトの名無しさん (ワッチョイ 98ff-nTsV) mailto:sage [2016/04/25(月) 16:14:18.30 ID:Y5eHwd9i0.net]
C++/CLIのほうで聞いたほうがいいかも
そのパスはほんとにそのまま?日本語混ざってたりしないよね



214 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/25(月) 16:17:09.73 ID:nodCWmX5M.net]
pdbも同じとこにおきゃいいじゃん

215 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 16:33:35.80 ID:FkG7uZgrH.net]
回答ありがとうございます。

>209
日本語は、入っていません。

>210
拾ってきたdllでして、pdbがありません。

他にも、以下のような、謎のメッセージも出ています。

'abc.exe': 'ImageAtBase0x10000000' を読み込みました。含める/除外する設定により、読み込みは無効になっています。
'abc.exe': 'ImageAtBase0x10000000' をアンロード

よろしくおねがいします。

216 名前:デフォルトの名無しさん (ワッチョイ 397b-DbIH) mailto:sage [2016/04/25(月) 17:20:39.11 ID:Vz/PfYjH0.net]
拾い物のdll名を出せない理由は?
盗品だから?

217 名前:デフォルトの名無しさん (ワッチョイ 66a6-zfCm) [2016/04/25(月) 18:20:21.95 ID:zMzD7cFX0.net]
どーでもいいわ、んなこと

218 名前:デフォルトの名無しさん (ワッチョイ 3e4e-DbIH) mailto:sage [2016/04/25(月) 21:18:39.53 ID:nQ9xWXS00.net]
>>211
まさかデバッガでステップインしようとしてる?

219 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/25(月) 22:09:57.56 ID:p2RYg3GI0.net]
右辺値なんて無くてもいいよね

220 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/25(月) 22:22:09.27 ID:nodCWmX5M.net]
>>211
ビルドの設定が違うとかじゃないの
ランタイムをマルチスレッドにするかマルチスレッドDLLにするかとか
depedency walkerかなんかで必要なdll探してみて足りなきゃ置く、ランタイムのバージョンそろえる、そもそもランタイムの要否を調べてみたら

221 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/25(月) 22:25:01.35 ID:gNn0n/ow0.net]
>>215
なんでどさくさに紛れて変なこと言うの?www

222 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/25(月) 22:35:01.48 ID:yNWSO4Dk0.net]
>>206
.NET Frameworkの質問をC++スレでするな低能
知らない奴がdepedency walkerとか言い出しちゃうだろ

223 名前:デフォルトの名無しさん (ワッチョイ 3951-DxlG) mailto:sage [2016/04/25(月) 23:23:42.73 ID:yWovrPca0.net]
>>206
xyz.dllが使ってる他のdllが見つからなかったからxyz.dllのロードも失敗したってことだろ。



224 名前:デフォルトの名無しさん (ドコグロ MM5c-DbIH) mailto:sage [2016/04/26(火) 07:05:42.42 ID:9Pm0YF2lM.net]
>>215
理解できないものはないものとして使わない
って言うのは正しい姿勢
なので
> 右辺値なんて無くてもいいよね
と君が考えるのは正しい

225 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 08:03:25.27 ID:uoCWhHDE0.net]
他人に同意を求めるつもりで書いたなら正しくないけどな

226 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 08:08:11.99 ID:X2oLSlFmd.net]
右辺値がない?

227 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/26(火) 08:30:56.28 ID:15Xmlz4WM.net]
俺も右辺値参照いまいちよくわかってないんだけど、

doubleとかを返す関数で、return前に

double calc() {
  double&& res = ...
  return std::move(res);
}
は意味ないよね?

std::vector<double> calc() {
  std::vector<double>&& res = {};
  //ごにょごにょ
  return std::move(res);
};
も意味ないよね?

const std::vector<double>& calc() {
  std::vector<double>&& res = {};
  //ごにょごにょ
  return std::move(res);
};
は意味ある

でも、
std::vector<double> v = calc();
だと結局コピーが起きてもったいない?
const std::vector<double>& v = calc();
だと意味ある

こんな認識なんだけど正しいのだろうか

228 名前:デフォルトの名無しさん (ワッチョイ 8dec-zfCm) [2016/04/26(火) 08:46:32.55 ID:rGhmFmB70.net]
なんでresを右辺値参照にしてるんだ? そこは関係ないぞ。

C++98ではテンポラリを束縛する参照にconstが必須だったが、
それではムーブ動作させるのにconst_castが必要というアフォなことになっていて、
じゃあconst任意の参照を新設しましょうって出てきたのが右辺値参照で、
使うときの考え方は参照先がテンポラリの場合に使うものだ。

229 名前:デフォルトの名無しさん (アウアウ Sa05-L+iy) mailto:sage [2016/04/26(火) 09:47:41.48 ID:A4vuhbbUa.net]
const T&で大体十分

230 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 10:46:34.53 ID:X2oLSlFmd.net]
どんな場合もローカル変数を参照で返してはいかんよ

231 名前:デフォルトの名無しさん (スプー Sda8-DbIH) [2016/04/26(火) 10:48:10.37 ID:IHpx3UMhd.net]
んなこたない

232 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/26(火) 11:06:37.75 ID:GLJzO2KH0.net]
そもそも右辺値参照みたいな変な事をしなくても良いコードを書けば良い。

233 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 11:34:25.19 ID:X2oLSlFmd.net]
>>227
いかんでしょ



234 名前:デフォルトの名無しさん (スプー Sda8-DbIH) [2016/04/26(火) 11:35:38.49 ID:IHpx3UMhd.net]
んなこたない

235 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 11:52:48.14 ID:X2oLSlFmd.net]
>>230
いやいかんでしょ

236 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/26(火) 11:57:22.86 ID:GLJzO2KH0.net]
右辺値参照を使わざるを得ない状況なんて無いよね。

237 名前:デフォルトの名無しさん (ワッチョイ 4306-gALo) mailto:sage [2016/04/26(火) 17:12:26.21 ID:sp7HDy2O0.net]
お前がそう思うんならそうなんだろう お前ん中ではな
っつぅか
チューリング完全ならなんでも書けるんだからC++自体いらないよね、K&Rで充分
っつぅか

238 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 17:55:22.27 ID:X2oLSlFmd.net]
>>232
それってRVOでなんとかなるの意?

239 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 19a8-gALo) mailto:sage [2016/04/26(火) 18:01:58.79 ID:1VUmXePL0.net]
言語機能の多くは抽象化の道具なんだよ。
一旦書いたら中身は忘れてしまいたいから壁を作ってその向こうに押しやる道具が必要なんだ。

240 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 18:03:13.30 ID:X2oLSlFmd.net]
まーた

241 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/26(火) 18:17:56.12 ID:jVopD7Dvr.net]
>>223
2番目はコピーが発生しないようムーブしているから意味はある
ただ安易なmoveや参照の使用は最適化を阻害するため推奨はされない

推奨される書き方はこう
std::vector<double> calc() {
  std::vector<double> res = {};
  return res;
}
std::vector<double> v = calc();

242 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/26(火) 18:57:35.91 ID:tQCMt5AL0.net]
>>232
アセンブラを使わずにギリギリまでチューニングしたいときに使えるんじゃないの
知らないけど

243 名前:デフォルトの名無しさん (ワッチョイ 4db4-gALo) mailto:sage [2016/04/26(火) 19:07:46.09 ID:1BXtyTOd0.net]
戻り値最適化って「本当に最適化されてんのか」っていっつも不安になる



244 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 19:31:52.57 ID:uoCWhHDE0.net]
意味があるのはこういう時
std::vector<double> v = {};
o.assign(std::move(v));//これ以降vは使わない

でもこれも出来るのであればstd::vector<double>を返す関数作って関数の返り値を直接引数に渡せば不要

あと、std::vectorに入れるクラスの場合(nothrowな)move operator書いた方がパフォーマンスあがる事が多い

245 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 19:38:27.71 ID:uoCWhHDE0.net]
ちょっと補足
この場合のassignの定義は
void assign(std::vector<double> v){
member.swap(v);
}
こんな感じのものね

246 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 20:22:16.94 ID:gEJwYSMG0.net]
↑糞コード

247 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 22:14:51.75 ID:gEJwYSMG0.net]
糞コードを発明する前にstring::assignとかの標準ライブラリが
どうなってるか調べようとしないんだろか
因みにスコットメイヤーの本には値渡しはhigher costとあるな

248 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 22:30:23.02 ID:X2oLSlFmd.net]
まあいいじゃないか。実行時性能なんか、どうだって。

249 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 22:53:39.31 ID:gEJwYSMG0.net]
>>239
もし最適化されてなかったら困るのか?
別にコピーが走る訳じゃない

250 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/26(火) 23:32:52.19 ID:JB7K2U7Pa.net]
最適化はC++erの大好物だ

251 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/27(水) 01:49:55.63 ID:GuBYWkr/0.net]
こういうのは値渡しでswapした方がいいって事知らねえの?

252 名前:デフォルトの名無しさん (ワッチョイ 19a8-gALo) mailto:sage [2016/04/27(水) 01:53:22.01 ID:0mhH1Qow0.net]
実際に遅いことがわかってからチューニングにとりかかっても遅くはない。
まあライブラリはどういう状況で使われるかわからんから積極的に性能も意識して欲しくはあるが。

253 名前:デフォルトの名無しさん (ワッチョイ 617b-7Ba6) [2016/04/27(水) 02:12:47.40 ID:GuBYWkr/0.net]
>>243

例えば
void assign(const std::vector<double>& v){
member = v;
}
こうだと必ず1度コピーが動く。

void assign(std::vector<double> v){
member.swap(v);
}
こうだと引数がrvalueの場合最適化でコピーが動かない場合があるし、
C++11ならmoveになる。
swapのコストが低いのは言わなくてもわかるよね。
lvalueの場合でもコピーは1度

C++11以降で
void assign(const std::vector<double>& v);
void assign(std::vector<double>&& v);
二つ書いたときとのコスト差はswapのみ



254 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/27(水) 19:30:14.55 ID:2yCvnT+mr.net]
>>249
>コスト差はswapのみ
ムブコンのコストはどこ行ったのよ

255 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 19:52:26.36 ID:turQDkKlM.net]
>>250
rvalue渡したらどっちもmoveになる

256 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/27(水) 20:04:17.37 ID:2yCvnT+mr.net]
>>251
いやならないし
参照ならassign呼び出し時のmoveは起こらない

257 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 20:09:13.21 ID:turQDkKlM.net]
値渡しの方がmoveコンストラクタ自体動かない場合もあるからswapコストより差は小さくなる可能性があるという話であれば、否定はしない。

値渡し=高コスト=糞コード
と考えもせずに言う奴の反論したかっただけだからそこまで細かい説明するのであればご自由に

258 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 20:16:31.83 ID:turQDkKlM.net]
>>252
想像より下だったか…

void assign(std::vector<double> v);
これにrvalue渡したらmove一回swap一回
lvalue渡したらコピー1回swap一回

void assign(const std::vector<double>& v);
void assign(std::vector<double>&& v);
これにrvalue渡したら下のが呼ばれて中でmove一回
lvalue渡したら中でコピー1回

259 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/27(水) 20:33:00.00 ID:56VYowtZ0.net]
void assign(std::vector<double> v);
これ定義しちゃうとオーバーロードきかないんだっけ?

260 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/27(水) 23:4 ]
[ここ壊れてます]

261 名前:1:06.04 ID:2JVtUYOe0.net mailto: >>254
どこをどう数えたらswapの違いになるのか

右辺値を渡した時
 f(X p);
  関数呼び出しのムーブ生成(メモリ確保+ムーブ)
  swap内の
[]
[ここ壊れてます]

262 名前:一時オブジェクトのムーブ生成(メモリ確保+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
 f(X && p);
  ムーブ代入(破棄+ムーブ)

左辺値を渡した時
 f(X p);
  関数呼び出しのコピー生成(メモリ確保+コピー)
  swap内の一時オブジェクトのムーブ生成(メモリ確保+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
 f(X const & p);
  コピー代入(破棄+コピー)
[]
[ここ壊れてます]

263 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/27(水) 23:48:41.61 ID:56VYowtZ0.net]
>>256
メモリ確保って一口に言ってるけど



264 名前:デフォルトの名無しさん (ワッチョイ 753c-C5As) [2016/04/27(水) 23:54:55.96 ID:XwQarpQA0.net]
std::cout << 0["2ch"];

これは合法ですか?

265 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/27(水) 23:57:03.40 ID:2JVtUYOe0.net]
むしろ、何か違法だとでも?

266 名前:デフォルトの名無しさん (ワッチョイ 753c-C5As) [2016/04/27(水) 23:58:40.17 ID:XwQarpQA0.net]
2chは違法だと聞きました。

267 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:08:31.03 ID:2BwMw+ri0.net]
>>256
std::vector::swapでmoveが呼ばれるとは初耳ですわ

268 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:14:58.53 ID:2BwMw+ri0.net]
>>256
聞いて解らなくてもちょっと試してみればすぐ分かる話なのに…

269 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 00:22:32.02 ID:iQ2WswSv0.net]
ああ、vectorか
確かにswapは内部のポインターの交換だけで済むな。
だが値渡しがswap以外に一時オブジェクトのメモリ確保が一回多いことに変わりはない

270 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:27:19.07 ID:2BwMw+ri0.net]
>>263
それをメモリ確保と呼ぶなら参照渡しのアドレスわスタックに積むのもメモリ確保になっちゃうけど?

271 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 00:39:59.18 ID:iQ2WswSv0.net]
>>264
お前の脳内ではなるのかも知れないが規格ではそう呼ばれていないし
特に関数テンプレートのようなインライン展開を期待する文脈ではスタックを消費しないだろう
std::move(obj)とか

272 名前:デフォルトの名無しさん (ワッチョイ cb7b-RA4N) [2016/04/28(木) 00:50:17.80 ID:2BwMw+ri0.net]
理解力の乏しいやつのために書いてやったぞ
ideone.com/rl80RP

273 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 01:06:21.52 ID:iQ2WswSv0.net]
中身みてないけど、言い出すと思った
そりゃ規格で省略が許容されてるから環境依存でそうなることもあるだろう

だが「標準ライブラリは>>247方式のassignを採用していない」という事実は変わらないぞ



274 名前:デフォルトの名無しさん (ワッチョイ 37cf-JnPK) mailto:sage [2016/04/28(木) 01:09:47.90 ID:0YjJiZ000.net]
>>267
主張変わった? >>263 の「値渡しがswap以外に一時オブジェクトのメモリ確保が一回多い」は
取り下げってことでいいんだよね?

275 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 01:23:16.15 ID:2BwMw+ri0.net]
>>267
環境依存て規格にある程度準拠してて最適化有効にしてこうならないコンパイラあるの?

標準ライブラリ云々は誰もそんな主張してないしそんな当たり前の事言われてもだから何としか

276 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 07:09:49.88 ID:iQ2WswSv0.net]
>>268のような日本も読めない低能は
もう生きているのもつらいだろうな

277 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 07:37:37.05 ID:2BwMw+ri0.net]
>>270
俺はお前が可哀想だと思うけどね

278 名前:デフォルトの名無しさん (スプー Sdaf-hBSK) mailto:sage [2016/04/28(木) 08:34:17.99 ID:qBtwGihyd.net]
>>257で既に指摘されてるけどメモリ確保って何なのさ?

279 名前:片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ f38f-Ecb7) [2016/04/28(木) 12:08:14.63 ID:22WGF77t0.net]
よぉ、C++erの兄ちゃん。すごい武器を入手したぞ。装備していけよ。
こいつは、デバッガが使えないような環境でもトレースや呼び出し
履歴を取れる代物だ。重宝するぜ。

footmark for C++ debugging
https://github.com/katahiromz/footmark

280 名前:デフォルトの名無しさん (ワンミングク MM6f-HcEB) [2016/04/28(木) 19:31:48.39 ID:f4tKx6/8M.net]
逃げちゃったかな?

281 名前:デフォルトの名無しさん (ワッチョイ 57cb-OoOA) [2016/04/28(木) 20:41:41.67 ID:Fdy34kc40.net]
C++11でもswapイディオムって使うんですか

282 名前:デフォルトの名無しさん (オッペケ Sre7-hBSK) mailto:sage [2016/04/28(木) 21:03:01.76 ID:DqjglUBWr.net]
>>272
途中で途切れた文章が指摘だったとは知らなかったぞ
オブジェクトの領域をストレージに確保することのつもりで書いた。
ここでのオブジェクトは規格の1.8のオブジェクトのことだが
フリーストアでの確保ではなく自動ストレージ期間のオブジェクトになる

283 名前:デフォルトの名無しさん (ワッチョイ 5b3c-89Kw) [2016/04/28(木) 22:24:39.75 ID:vUtl/OeK0.net]
日本では、秋葉原に走ってメモリー確保することもありますからね。



284 名前:デフォルトの名無しさん (ワッチョイ 4b66-nlgT) [2016/04/28(木) 22:46:39.38 ID:wGgKuj3r0.net]
MB8164-12か。何もかも皆懐かしい。

285 名前:デフォルトの名無しさん (ワンミングク MM6f-HcEB) [2016/04/28(木) 23:19:45.20 ID:f4tKx6/8M.net]
>>276
値渡しの場合にお前の言うメモリ確保が余計に実行される例そろそろ書いたら?

286 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 23:54:08.87 ID:iQ2WswSv0.net]
規格であり得るとされる挙動を立証するなど時間の無駄
低能にはちょっと難しかったかもしれないが、
コンストラクターが最大何回呼ばれうるかは意識した方がいいと思う

287 名前:デフォルトの名無しさん (ワンミングク MM6f-HcEB) [2016/04/29(金) 00:13:53.74 ID:Wehf76ZnM.net]
ダメだこいつ…
書くのも無駄な例を意識しろってもう何言ってんのかわかんねぇわ

288 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/29(金) 00:49:18.09 ID:QcOA+a6j0.net]
まあ、そもそも日本語がわからないようなオツムでは致し方ないな

ideone.com/Hrz7ia

289 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 02:37:05.42 ID:GPvE7zg30.net]
>>282
どこのマヌケがコピーコンストラクタとコピー演算子で差のでるような実装すんの?

290 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:40:06.76 ID:+q+2SQ0C0.net]
扱ってるオブジェクトがstd::vectorでswapするとき一時オブジェクト作るときにメモリ確保するよ。
という話のように思うのだが。
C++は常にANY扱ってるわけじゃねーんだから、中身のことまでケアしてください。

291 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 02:43:54.15 ID:GPvE7zg30.net]
>>284
一種遅れやな

292 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:45:03.22 ID:+q+2SQ0C0.net]
ちなみに俺はあんまり経験ないけど、
moveするときは、メンバ変数はスワップしてmove元をクリアして終わりだな。
確かmove元が使えなくなってもOKだったと思うし。

293 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:45:57.22 ID:+q+2SQ0C0.net]
>>285
あ、マジで。



294 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 02:46:41.31 ID:GPvE7zg30.net]
>>284
std::vector::swapの一時オブジェクトのコストどれだけか解って言ってる?

295 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:48:27.73 ID:+q+2SQ0C0.net]
>>288
オーダーは知らないが、推測では全コピーするから相当重い。

296 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:50:08.54 ID:+q+2SQ0C0.net]
もしくはカスタムロジックで魔法でもあるのか。

297 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 02:51:25.67 ID:GPvE7zg30.net]
>>289
一周遅れ所じゃないぞ、そんなのでよく
>中身のことまでケアしてください
なんて言えたな…

298 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/29(金) 02:53:25.35 ID:+q+2SQ0C0.net]
>>291
それは悪かった。
じゃあ、何の話をしてるか整理しないと、認識度が段々でかみ合ってないぞ。

299 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 03:15:26.74 ID:GPvE7zg30.net]
コピー&swap一つ実装したときと、
const参照と右辺値参照2つ実装したときのコスト差はswap分か最適化によってはそれ以下って言ったら >>256 これ
まさか一時オブジェクトの為にスタックの場所取るのにコストかかるとでもおもってるような

300 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/29(金) 08:14:20.77 ID:QcOA+a6j0.net]
>>284
スワップの話ではないぞ。スワップ以外でオブジェクト生成がされうるかどうかだ
>>249 「コスト差はswapのみ」
 ↓
>>250「ムブコンのコストはどこ行った」
>>263で「値渡しがswap以外に一時オブジェクトのメモリ確保が一回多いことに変わりはない」
 ↓
>>279「値渡しの場合にお前の言うメモリ確保が余計に実行される例そろそろ書いたら?」
 ↓
>>282

>>293
オブジェクトが余分に生成されその分デストラクターが呼び出されているんだからコストは発生しているぞ
swapの処理以外に1バイトも無駄な実行コードが生成されない確証でも出してみたらどうだ?
ちなみにスワップ以外の話をしているんだからスワップの過程で行うムーブの話はするなよ

301 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/29(金) 08:49:49.69 ID:QcOA+a6j0.net]
なるほどわかった。
最初に>>250でムーブ関連の小さなコストの見逃しを指摘してやったのだが
糖質はvectorの中身のコピーが行われるという指摘を受けた幻覚を見てしまってんだな。
途中で自動ストレージとかの単語が出た時点で気づきそうなものだが

〜最初の指摘(>>250)〜
> >>249
> >コスト差はswapのみ
> ムブコンのコストはどこ行ったのよ

302 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/29(金) 10:12:54.25 ID:GPvE7zg30.net]
最初からデストラクタ(の中の条件文)一個分のコストの事言ってたとは思えないけど、それのこと言ってたならそうですね。

くっそどうでもいいけど。

303 名前:デフォルトの名無しさん (ワッチョイ 5b3c-89Kw) [2016/04/29(金) 10:19:20.00 ID:+JsGJ08I0.net]
バトルプログラマー葉子(G パスカル ザカリー著 闘うプログラマーに出てくる女性)も
こうして議論したのかなあ。



304 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/04/29(金) 10:22:08.43 ID:5uxjIDtf0.net]
ハードウェアがもっと進歩して時間と空間のコストが厳密にゼロになるときが早く来ればいいのに...

305 名前:デフォルトの名無しさん (ワッチョイ cf02-nlgT) [2016/04/29(金) 11:27:56.89 ID:GKcYz8vk0.net]
物理現象の伝搬は最速でも光速度までで
何をするにもプランク時間はどうしてもかかる

306 名前:デフォルトの名無しさん (ワッチョイ 9302-OoOA) mailto:sage [2016/04/29(金) 11:45:21.07 ID:uF4QxRQl0.net]
人間の認識時間を遅らせればいいんだ
体感で1秒が0.1秒に感じるように

307 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/04/29(金) 11:51:40.12 ID:5uxjIDtf0.net]
大きさが厳密にゼロの領域の中でコトを済ませる方向で。。。
可算ステップの任意のアルゴリズムが時間ゼロで終了すればハッピーだ。

308 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/04/29(金) 12:53:39.12 ID:w38rMPYqa.net]
>>300
宇宙人に侵略される

309 名前:デフォルトの名無しさん (ワッチョイ 9302-OoOA) mailto:sage [2016/04/29(金) 13:01:53.27 ID:uF4QxRQl0.net]
そうだ宇宙全体の物質の素粒子レベルの運動をコンパイル時に計算すればいいんだ
そうすれば今後起こる事象全てを定数化できてあらゆる実行時の処理のオーダーは1になる
C++は宇宙を制する

310 名前:デフォルトの名無しさん (ワッチョイ 4fc0-6p9G) mailto:sage [2016/04/29(金) 20:45:07.19 ID:JN7XYE/q0.net]
そろそろよそでやれ

311 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/04/29(金) 21:21:37.28 ID:SAOt+riJa.net]
それでは本題に戻りましょう

312 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/04/30(土) 01:32:01.04 ID:2zZXg3Qa0.net]
PURE関数が汝を救う一端になろうぞ。

313 名前:デフォルトの名無しさん (ワッチョイ cb7b-iSeV) mailto:sage [2016/04/30(土) 11:10:13.98 ID:/qrbaLqo0.net]
swap だとかコピーだとかこんな下らん事で言い争いするくらいなら黙って
C 言語でポインタ使ってりゃいいのにと思う。



314 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/30(土) 11:37:07.49 ID:olAQ2y8z0.net]
言い争いは問題でなく、言語仕様が他の言語に比べて複雑なことに起因してると思うが。
基本は「嫌なら使うな」の言語

315 名前:デフォルトの名無しさん (ワッチョイ cb7b-iSeV) mailto:sage [2016/04/30(土) 11:45:40.10 ID:/qrbaLqo0.net]
嫌だからおれは使わんけど、馬鹿が使って迷惑かけて、
あげく言語仕様ではこうなのにその通りに動かないコンパイラが悪いだの言い出すのが
一番の問題。

316 名前:デフォルトの名無しさん mailto:sage [2016/04/30(土) 11:58:56.90 ID:jPcGH/bCm]
もうRustでよくね?

317 名前:デフォルトの名無しさん (ワッチョイ a77b-uqHn) mailto:sage [2016/04/30(土) 11:56:01.21 ID:Nr00vcAW0.net]
どうでもいいけどc++11とか14に対応したクックブックが凄く欲しい。
あとg++のwcoutのロケール対応は最新版だとどうなっているか誰か教えて。

318 名前:デフォルトの名無しさん (ワッチョイ 6f3c-1woS) [2016/04/30(土) 14:00:29.09 ID:uVz81x780.net]
GitHubで匿名通信(Tor、i2p等)ができるBitComet(トラッカーサイト不要でDHTだけで日本語検索可能)
みたいな、BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenant(純粋P2Pのファイル共有ソフト)の完成が待ち遠しいプログラミングできないアスペルガーw
  

319 名前:デフォルトの名無しさん (ワッチョイ b730-OoOA) mailto:sage [2016/04/30(土) 14:12:28.07 ID:kBEc2ffr0.net]
アスペ関係あるのかそれ

320 名前:デフォルトの名無しさん (オッペケ Sre7-hBSK) mailto:sage [2016/04/30(土) 14:15:22.52 ID:FztpmG49r.net]
>>312
マルチの荒らしは去れ

321 名前:デフォルトの名無しさん (ワッチョイ 6f3c-1woS) [2016/04/30(土) 14:23:05.68 ID:uVz81x780.net]
アスぺは関係ないw

322 名前:デフォルトの名無しさん (ワッチョイ 27bf-ZWIR) mailto:sage [2016/04/30(土) 15:24:25.97 ID:EkpjLvdA0.net]
じゃあ荒らしは去れになっちゃうなww

323 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/04/30(土) 16:32:02.70 ID:dTOuLsNga.net]
暗号通信は犯罪に使われるので政府用バックドアが必要になる。
しかしそうすると職権乱用が懸念される。
そこで、次善の策として、国際的に承認が必要にするというのはどうか?
復号には常任理事国全ての政府の承認が必要不可欠とするというものだ
アメリカがYesと言っても中国(或いはロシア)がNoというかもしれないので安易に覗き見はできなくなるだろう



324 名前:デフォルトの名無しさん (スプー Sd2f-hBSK) mailto:sage [2016/04/30(土) 18:16:59.09 ID:OJjCBDMXd.net]
なるほどC++らしい

325 名前:デフォルトの名無しさん (ワッチョイ cb7b-olYR) [2016/04/30(土) 20:20:59.06 ID:mxQluw9J0.net]
>>307
C言語でポインタ使うのが同じくらい書くのが楽なら使うよ
それにC言語でも環境やコンパイラによってこう書いた方が効率いいとか、冗長な記述減らせるけど実行コストそれほど変わらないという議論あるよね?

326 名前:デフォルトの名無しさん (ワッチョイ 6f3c-1woS) [2016/04/30(土) 20:35:53.60 ID:uVz81x780.net]
>>317
Covenantの目的はインターネットにおける権力による抑圧を排除することが最終的な目標です。
そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

327 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/04/30(土) 23:13:30.56 ID:+bg/IZ99H.net]
- stdafx.h -
#pragma once
#include <iostream>
#include <random>
-------------------------------
#include "stdafx.h"
using namespace std;

int main()
{
random_device rnd;
// メルセンヌ・ツイスター法による乱数発生
// mt19937 engine; // 32bitパソコン用

uniform_int_distribution<int> distribution( 0, 9 ) ; // 整数
// uniform_real_distribution<double> distribution (0.0, 9.9); // 実数

for(int i = 0 ; i!= 10 ; ++i) cout<<distribution(engine)<<endl ;

cout << endl<< "Press Enter!";
cin.get();
return 0;
}

VC++2015では毎回違う乱数が出るのに,TDM GCC(gcc5.1.0)では
同じ乱数しか出ない. gccのオプションSWの問題?

328 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/04/30(土) 23:15:38.21 ID:+bg/IZ99H.net]
// mt19937 engine; // 32bitパソコン用

mt19937_64 engine(rnd());

329 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/30(土) 23:22:10.38 ID:olAQ2y8z0.net]
何か以前、同じ悩みのレスを見たような

330 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/05/01(日) 00:54:26.52 ID:pgSGezQj0.net]
>random_device rnd;
これを何にも使っていないからだな

>>322のように使え

331 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/01(日) 00:58:35.24 ID:fsqM/cei0.net]
疑似乱数なんて、とある初期値を元に決まった数列を生成するだけだからな。
初期値が変わらないと数列も変わらん。

332 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/05/01(日) 01:08:56.51 ID:JjM58K48H.net]
>>324

だから訂正した上で乱数が同じ値になってしまうと言ってる。
頭悪いな

333 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/01(日) 01:15:39.33 ID:fsqM/cei0.net]
うんじゃー、ランダムデバイスは環境定義だから、ランダムデバイスもMTなんじゃね?
普通はCPUのランダム取ってくるんだけど。



334 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/01(日) 01:27:29.62 ID:fsqM/cei0.net]
ideone.com/fEKyXv
ideone.com/VbkxpO
イデオンってGCCだよな。たしか。

335 名前:デフォルトの名無しさん (アウアウ Sa27-ohpd) mailto:sage [2016/05/01(日) 08:19:16.64 ID:4ccqRarua.net]
random_deviceの実装見ろ

336 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/05/01(日) 09:02:25.15 ID:JjM58K48H.net]
>>329 あほか。

ひょっとしたらgccをbuildする時のTDM-GCC(MinGW)の問題かもしれん。
https://github.com/bitcoin/bitcoin/issues/2290

しかし、英文が微妙なニュアンスでわからん。
-frandom-seedのオプションを指定しないといけないとあるようだが。

obj/%.o: %.cpp $(HEADERS)
$(CXX) -c -frandom-seed=$@ $(CFLAGS) -o $@ $<

しかし、後の方には

We don't use frandom-seed at all anymore after #4724, closing this.

とある.うーん、わからん。

337 名前:デフォルトの名無しさん (ワッチョイ 3fa6-OoOA) mailto:sage [2016/05/01(日) 09:11:05.64 ID:pgSGezQj0.net]
>>326

ああ >>321==>>322 だったかごめんごめん

338 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/05/01(日) 09:11:57.94 ID:JjM58K48H.net]
qiita.com/nanashi/items/f94b78398a6c79d939e1
もあるな。しかし、もうこの話題はやめた

339 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/01(日) 09:48:18.92 ID:p2YCnIW80.net]
>>330
『It is used to generate certain symbol names that have to be different in every compiled file. It is also used to place unique stamps in coverage data files and the object files that produce them.』

「アホか。」はお前のことだろう

340 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/05/01(日) 09:53:17.94 ID:JjM58K48H.net]
いいからお前はひっこんでろ

341 名前:デフォルトの名無しさん (ワッチョイ cb7b-1+8h) mailto:sage [2016/05/01(日) 10:40:34.11 ID:8qUfiok/0.net]
random_deviceは規格通りに実装されてないケースがあるから
 std::mt19937 engine(std::chrono::system_clock::now().time_since_epoch().count());
とかにしておいたほうが無難だよ以下参照
peace.2ch.net/test/read.cgi/tech/1433514467/782

342 名前:デフォルトの名無しさん (ワッチョイ 37d9-0GMy) mailto:sage [2016/05/01(日) 10:50:50.22 ID:tY30d3V60.net]
random_deviceが毎回異なる擬似乱数を返すかどうかは
random_device::entropy()の値をチェックする

これが 0 なら毎回同じ数列を返すので>>335みたいにするといい

343 名前:デフォルトの名無しさん (ワッチョイ cb7b-1+8h) mailto:sage [2016/05/01(日) 11:01:18.00 ID:8qUfiok/0.net]
entropy()==0じゃチェックできないよ
規格通りならentropy()==0でもoperator()は「非決定性」の値を返さなきゃいけない
何度起動しても同じ数列が返るならそれは実装のバグ



344 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/01(日) 11:02:50.07 ID:p2YCnIW80.net]
>>336
それだと
>>335の先の>>828に書いてある規格の要求を満たしていないだろう

ちなみに>>335の先のID:theP84i7は俺のようだ思い出した

345 名前:デフォルトの名無しさん (JP 0H07-89Kw) [2016/05/01(日) 11:04:15.55 ID:JjM58K48H.net]
>>335

ありがとうございます。助かります。

346 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/01(日) 23:34:15.98 ID:p2YCnIW80.net]
>>227
具体的にはどのような場合?
静的変数の参照を返すとか?

347 名前:デフォルトの名無しさん (ワッチョイ 3b64-nlgT) [2016/05/02(月) 00:24:24.91 ID:rK2U+l6Y0.net]
グローバルでない変数って色々あるからなあ

348 名前:デフォルトの名無しさん (ワッチョイ 2f94-Huko) mailto:sage [2016/05/02(月) 01:15:48.64 ID:lijKCiQb0.net]
入門者です。初心者用スレがない様なのでこちらで質問します
min()の戻り値が「マイナス」max......という風になっているのですがこれはどういった意味があるのでしょうか
n1 = 2,n2 = 3,n3 = 4で、max()の戻り値は4、minの戻り値は2となっています。大小逆の数を返すのですが
マイナスに具体的にどういった役割があるのか、何と検索すればいいのか教えていただきたいです

#include "minmax.h"

// 最大値を返す
int MinMax::max(int n1, int n2, int n3) {
if (n1 > n2 && n1 > n3) {
return n1;
}
else if (n2 > n3 && n2 > n1){
return n2;
}
else if (n1 > n3 && n1 > n2){
return n1;
}
return n3;
}
// 最小値を返す
int MinMax::min(int n1, int n2, int n3) {
return -max(-n1, -n2, -n3);
}

初めて見るのでうまく説明できませんが、必要な情報は随時追加しますのでエスパーできる人
教えてください

349 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 01:22:22.63 ID:GdZkeqisK.net]
>>342
正の数は絶対値が大きいなら大きい数になる。
逆に負の数は絶対値が小さいなら大きい数になる。
絶対値だけを見るなら正の数の大小関係は負の数の大小関係の逆になる。

350 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 01:27:04.99 ID:LofVFQLs0.net]
検索手法だと思うが、
普通MinMaxって最小値と最大値をウエイトにするもんだと思うので、カスタムロジックなんじゃないか?
実装したやつに聞いてみろー。
発展としてアルファベータカットっていうものもあるよ。

MINMAX検索の一番のキモは、
最大値が最適解とは限らない。かつ、最小値が最適解とは限らない。という条件で最適な解を探す。
というもの。

それと、C++11で可変引数版、std::minとmax入ったからそっち使ったほうが読みやすい。

351 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 01:30:07.03 ID:LofVFQLs0.net]
あれ?俺勘違いしてるか?

352 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 01:33:46.98 ID:GdZkeqisK.net]
数学で考えよう。簡単のためにまずは二項について
-min(-x,-y)=max(x,y)
を証明したい。左辺は
-(-x<-y?-x:-y)=-(x>y?-x:-y) …(1)
=(x>y?x:y) …(2)
=右辺
となる。
※(1):不等号にマイナス1を掛ける。
※(2):マイナスをカッコの中に作用させる。
証明終わり。三項についても同様。

353 名前:デフォルトの名無しさん (ワッチョイ ef9f-qtmS) mailto:sage [2016/05/02(月) 01:37:24.80 ID:dUwljW2j0.net]
>>342
本題と関係ないかもしれないが
そのMinMax::max関数の実装オカシイだろ



354 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 01:38:07.25 ID:LofVFQLs0.net]
解説サンクス。

あら。元に戻っちゃった。
MINの条件はあってるのか。
そーりー。

355 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/05/02(月) 01:49:33.84 ID:87lwCP4Ca.net]
>>342
数直線書いてみれば一発だろ

   n3
n1
  n2
──────
  -n2
-n1
   -n3


上方向が正、──が0ラインな。
負にして最大を取れば、最小を負にした値(-n2)が返る。あとはこれを負にすれば元の値に戻る。確かにn2は最小だ。

工学の理念、一つ!『車輪の再発明はするな』
工学の理念、一つ!『使える車輪は使い倒せ』
maxができたのにminも同じように構築するのでは理念に反する
maxを使ってminを表現できるならそうするべき。別々に作れば、もしかするとmaxにバグがあるかも知れない、minにバグがあるかも知れない。
しかしminをmaxで実装すれば、minは事実上書いていないのでバグは存在しない。maxにバグがあるかどうかだけ心配だけすればいい。
バグを防ぐコツはコードを書かないことだ。

356 名前:デフォルトの名無しさん (アウアウ Sa27-7WOp) mailto:sage [2016/05/02(月) 01:51:28.06 ID:87lwCP4Ca.net]
『使える車輪は(使い)回せ』に訂正するぅっ!

357 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 01:59:45.92 ID:LofVFQLs0.net]
解説ありがと。
数学ダメなんだよね〜。Orz

バグを防ぐコツは同意だ。
まぁ、車輪は使い方はマスターするべき。
そのためにも泥臭いことを否定してはいけない。(戒め)

358 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 02:12:35.32 ID:GdZkeqisK.net]
次のような等式が成り立つことが知られている。
max(x,y,z)=max(max(x,y),z)=max(x,max(y,z)).
min(x,y,z)=min(min(x,y),z)=min(x,min(y,z)).

359 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 02:15:13.64 ID:GdZkeqisK.net]
なお、>>342のmin,max関数は最適化されておらず、無駄な比較を
行っているので、教育上あまり好ましくない。

360 名前:デフォルトの名無しさん (ワッチョイ 0b75-lQqR) mailto:sage [2016/05/02(月) 02:43:59.63 ID:5VxisSG80.net]
>>349
>maxを使ってminを表現できるならそうするべき。別々に作れば、もしかするとmaxにバグがあるかも知れない、minにバグがあるかも知れない。
>しかしminをmaxで実装すれば、minは事実上書いていないのでバグは存在しない。maxにバグがあるかどうかだけ心配だけすればいい。
いやいや 341のminはバグってるし。minにINT_MINを渡したらどうなるか考えてみ。

361 名前:デフォルトの名無しさん (ワッチョイ ef9f-qtmS) mailto:sage [2016/05/02(月) 02:45:04.65 ID:dUwljW2j0.net]
maxも思いっきりバグってるが

362 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 02:48:14.57 ID:LofVFQLs0.net]
std::max<int>({1,2,3}); を使おう。(キリッ

363 名前:デフォルトの名無しさん (ワッチョイ 0bdc-VEo+) mailto:sage [2016/05/02(月) 05:44:22.58 ID:8/8nC51l0.net]
>>342 の MinMax:: に乗せてくれ(車輪の話だけに)。

>>347 >>355
max()は、引数に同じ値が2つ与えられるとダメなのね。
n1 = 2, n2 = 2, n3 = 1 といった場合。
比較演算子を > でなく >= にすればいいのかな。
(小手先で修正してまで使うとも思えないけど一応)

>>354 の INT_MIN の符号反転の問題はいつも見逃すなぁ。
intが32bitもあると「億なんてデカい値は使わないし…」で
境界条件を考慮し忘れる。
おかげで俺の部屋は悪魔ハーレム状態。



364 名前:デフォルトの名無しさん (ワッチョイ ab51-JnPK) mailto:sage [2016/05/02(月) 06:18:00.27 ID:zu7MqjLX0.net]
仕様で「入力がINT_MINの場合は正しい値を返さない」とするだけでプログラムがすっきり。

365 名前:デフォルトの名無しさん (ワッチョイ 2f94-Huko) mailto:sage [2016/05/02(月) 10:03:31.77 ID:lijKCiQb0.net]
342です
皆さんありがとうございます.一応参考サイトは以下です(若干プログラムが違いますが)
ttp://cpp-lang.sevendays-study.com/problem2.html

366 名前:デフォルトの名無しさん (ワッチョイ 13e7-11Ad) mailto:sage [2016/05/02(月) 10:30:56.03 ID:LofVFQLs0.net]
ぶー。検索関係なかった。Orz

367 名前:デフォルトの名無しさん (ワッチョイ 3bb4-OoOA) mailto:sage [2016/05/02(月) 16:31:01.42 ID:1reykZlZ0.net]
std::unordered_set の要素をイテレータで取ろうとしたら自動で const 修飾されます
多分オブジェクトの内部状態が変わることでハッシュ値が変わることを考えてのことだと思うんですが、
いまの場合ハッシュ関数を自分で定義していて、操作の前後でハッシュ値が変化しないことは
(自分には)わかっています。

これをコンパイラに教えてあげるにはどうすればいいんでしょうか?

368 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/05/02(月) 16:56:44.90 ID:IsbB/noh0.net]
諦める
そしてconst_castを使う

369 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 17:29:08.43 ID:V/Rz0lGL6.net]
カレントディレクトリの設定が上手くいかないです。
test1の下にtest.exeとディレクトリtest2

370 名前:があるとして、
test1.exeで

SetCurrentDirectly(”test2”)
ofstream fout1(”test.dat”)
fout1 << ”test” << endl;

としても、test.datがtest2の下ではなく、test1の下に出来てしまいます。どうすればtest2の下に出来ますか?
[]
[ここ壊れてます]

371 名前:360 (ワッチョイ 3bb4-OoOA) mailto:sage [2016/05/02(月) 17:48:25.88 ID:1reykZlZ0.net]
>>362
ありがとうございます
結局 mutable にして切り抜けました

372 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 17:50:59.68 ID:GdZkeqisK.net]
>>363
"test2"は相対パスだから、現在のディレクトリを確認しろ。
また、戻り値とエラーコードもチェックしろ。

373 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 18:04:07.30 ID:V/Rz0lGL6.net]
>>365
ありがとうございます。
確認してみたところ、falseが帰ってきていました。
そして、getcurrentdirectlyして表示してみたところ
C
とだけ表示されました。
Cドライブの直下ということですか?
それだと、C:\と出そうなものですが…



374 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 18:18:14.94 ID:GdZkeqisK.net]
>>366
おそらくUnicode文字列とANSI文字列の指定が間違っている。
型に関する警告が出ていないか確認せよ。

375 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 18:29:59.21 ID:GdZkeqisK.net]
Unicode文字列(いわゆるワイド文字列)のリテラルは先頭にLを付ける。WCHAR型の配列またはポインタになる。
例) L"Unicode"
Unicode APIは関数名の最後にWが付く。ANSI APIはAが付く。
例) GetCurrentDirectoryW
Unicode文字列とANSI文字列を自動的に切り替えるにはリテラルを
TEXT( )で囲む。TCHAR型の配列またはポインタになる。

376 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 18:40:56.68 ID:GdZkeqisK.net]
ANSI文字列を指定すべきところにUnicode文字列を指定することはできない。逆も同様。
例えば、printfの%sにワイド文字列を指定することはできない。
警告が出るか、分かりにくい論理エラーの原因になる。

377 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 18:44:54.84 ID:V/Rz0lGL6.net]
>>367
ありがとうございます。
確認してみると、確かに警告が出ていました。
なので、
SetCurrentDirectly(”test2”)
の部分を
SetCurrentDirectly((LPCWSTR)”test2”)
としてみると警告が消えましたが、結果は変わりませんでした。

378 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKb7-09nV) mailto:sage [2016/05/02(月) 18:47:42.10 ID:GdZkeqisK.net]
SetCurrentDirectoryA("test2");
SetCurrentDirectoryW(L"test2");
SetCurrentDirectory(TEXT("test2"));

379 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KKc7-09nV) mailto:sage [2016/05/02(月) 18:57:39.76 ID:GdZkeqisK.net]
配列や文字列リテラルを型キャストしても、型が変わるだけで、
中身のデータレイアウトが変わる訳ではない。
文字列を柔軟に扱いたいならATLとかMFCなどの外部ライブラリを使うことになる。

380 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:04:58.94 ID:V/Rz0lGL6.net]
>>372
ご指摘の通りで、無事に解決しました。
何度もありがとうこざいました。大変参考になりました。

381 名前:デフォルトの名無しさん (ワッチョイ a77b-1+8h) mailto:sage [2016/05/02(月) 19:07:51.78 ID:btgv3pKW0.net]
>>363
test2ディレクトリをどこに作りたいのか知らないけど
絶対パスで指定しなきゃダメ
起動時のカレントディレクトリがどこになってるかについて仮定しちゃいけない

382 名前:デフォルトの名無しさん (ササクッテロ Spe7-ZWIR) mailto:sage [2016/05/02(月) 19:19:38.69 ID:eom7L+e5p.net]
.dllの配置場所ですが、
通常だと.exeと同じ階層に置いておかないと呼んでくれませんよね?
しかし、.exeのショートカットを作成してプロパティから作業フォルダーを指定すればそこから読んでくれるようです。
この作業フォルダーの指定をプログラム中で行う方法はありませんか?
vc14で、デバックモードで作業ディレクトリを指定の設定ならあるのですが、リリースした時の設定方法が分かりませんでした。

383 名前:デフォルトの名無しさん (ガックシ 068f-ZWIR) mailto:sage [2016/05/02(月) 19:21:00.96 ID:V/Rz0lGL6.net]
ちなみにdllは環境変数Pathに入っていないものを指定する場合です。(配布するときなど)



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