◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part142 ->画像>5枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1554124625/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん
2019/04/01(月) 22:17:05.84ID:wmfpIKt/
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part137 (正しくはpart138)
http://2chb.net/r/tech/1535353320/
C++相談室 part139
http://2chb.net/r/tech/1538755188/
C++相談室 part140
http://2chb.net/r/tech/1547326582/
C++相談室 part141
http://2chb.net/r/tech/1550772463/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
http://2chb.net/r/tech/1530384293/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2デフォルトの名無しさん
2019/04/01(月) 22:24:49.84ID:2cPHsZN4
すっぱい葡萄
https://ja.wikipedia.org/wiki/%E3%81%99%E3%81%A3%E3%81%B1%E3%81%84%E8%91%A1%E8%90%84
 自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
 人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
 それをあきらめの理由として納得し、心の平安を得ようとするものである。
 フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
 英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。
3デフォルトの名無しさん
2019/04/02(火) 01:05:02.56ID:/U03ydJ3
前スレの
やりたいことはこうかな
メンバ関数をバインドするときは&クラス名::関数名と変数を放り込むこと
https://wandbox.org/permlink/gDWEXupOcEbbhBzs
4デフォルトの名無しさん
2019/04/02(火) 01:47:19.91ID:rKGqH4gv
c言語でclassって使えるの?
5さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/02(火) 01:50:46.47ID:wSWhi9Oz
>>4
変数名として使える。
6デフォルトの名無しさん
2019/04/02(火) 07:55:15.08ID:iDbW+eLG
柴山昌彦
https://twitter.com/shiba_masa/status/1112661447366967296
 なるほど、新しい年数に「れいわ(018)」を足すと西暦か…

[GCC] error: invalid digit "8" in octal constant
[Visual C] Compiler Error C2041: 8 is not a base 8 digit
[Python] SyntaxError: invalid token
https://twitter.com/5chan_nel (5ch newer account)
7デフォルトの名無しさん
2019/04/02(火) 18:51:10.44ID:m0eX+8Q8
>>4
オブジェクト指向の何たるかをきちんと理解していれば、概念として使えなくはない。
もっとも、C 言語に限った話ではないけど。
8デフォルトの名無しさん
2019/04/02(火) 19:17:21.52ID:LpV8NoZ4
>>4
原則、C言語ではclassは使えない。
そもそも、CをOOPの概念に対応させようとして、
classの概念(classというキーワードも)を追加したところから
始まったのがC++。
9デフォルトの名無しさん
2019/04/02(火) 23:46:57.28ID:rKGqH4gv
vcでCString使えるよ
10デフォルトの名無しさん
2019/04/03(水) 00:40:39.45ID:94cMasUZ
>>4
Win32API?
C++以前から(純粋OOPLな)smalltalk的な価値観をC言語に押し付けた結果。
11デフォルトの名無しさん
2019/04/03(水) 12:59:01.63ID:cnGXlgmF
はあ?
12デフォルトの名無しさん
2019/04/03(水) 18:43:28.55ID:9GPCcesD
テンプレートをテンプレートクラスで特殊化したい場合ってどうするの?
13デフォルトの名無しさん
2019/04/03(水) 18:44:12.24ID:uuRoUePR
>>12
普通にテンプレートにすればいい
14デフォルトの名無しさん
2019/04/03(水) 21:15:34.88ID:2lV8d+D6
次スレから>>2に登場人物を列挙してはどうでしょうか?
15デフォルトの名無しさん
2019/04/04(木) 01:13:57.58ID:tIFeeQbc
VS2019来てるじゃん
まともなメモリ使用量になってる奇跡だ
16デフォルトの名無しさん
2019/04/04(木) 01:26:19.69ID:NSLfK+j2
C++erはVS毛嫌いする人も多いけどVS2017あたりからC++対応もマジでかなり良くなってる
17デフォルトの名無しさん
2019/04/04(木) 01:29:18.48ID:MCx08DTu
一番使えるIDEなのに毛嫌いする人はいないと思います。
18デフォルトの名無しさん
2019/04/04(木) 01:33:25.98ID:kff2Ii9e
標準ライブラリの実装がいい加減だから使いたくない
19デフォルトの名無しさん
2019/04/04(木) 01:33:38.34ID:MCx08DTu
4/2を選んだのはエイプリルフールを避けたからかな。
20デフォルトの名無しさん
2019/04/04(木) 01:40:18.27ID:l5IgkZnr
>>16
そう言う輩はプログラマーではなく言語オタか、最新規格対応の入門書売って糧を得てる様な奴だけ。
21デフォルトの名無しさん
2019/04/04(木) 01:46:00.78ID:tIFeeQbc
最近はCMakeに優しいけど標準的なビルドシステムに優しくない
clのオプションが独特すぎる
Linuxで動かない
Windows上でのライブラリの取り回しが悪すぎる

wslやらvcpkgでだいぶましになったとはいえまだ若干抵抗がある
22デフォルトの名無しさん
2019/04/04(木) 01:48:02.16ID:c6BVWPCA
VS2017以前よりもコンパイルが速くなっている気がする。
色々細かい不満は出てくるかもしれないが、完全に乗り換える価値は十分ある。
私はVS2017をアンインストールして退路を断った。
2322
2019/04/04(木) 01:55:45.14ID:c6BVWPCA
わかりにくかったので訂正。
VS2019はVS2017よりもコンパイルが速くなっている気がする。
デフォルトでスタックメモリ消費の静的解析をしてくれるので、
10KB以上のバッファをスタックからとるクセのある人は、
C++のstd::vectorなどへの置き換えを考える良い手助けになるなのでは。
24デフォルトの名無しさん
2019/04/04(木) 18:08:19.41ID:USs/shwk
Qt VS toolsの対応待ち
25デフォルトの名無しさん
2019/04/04(木) 18:37:00.98ID:tIFeeQbc
QtはCMakeでよくない?
26デフォルトの名無しさん
2019/04/04(木) 20:38:54.64ID:O7o9gYjG
つか、プラットホームに依存しないような
プログラミングをかける奴なんてほとんどいないだろ

素人が書いたようなおもちゃをなんで他に移植しなきゃいけないんだよ
27デフォルトの名無しさん
2019/04/05(金) 00:33:23.07ID:Zwa/Lf0S
hppファイルに実装を書いてることがたまにあって、すごく違和感があるんですけどどういうメリットがあるんですかね?
28デフォルトの名無しさん
2019/04/05(金) 00:43:12.95ID:fDyBpfV8
配布が容易
宣言と定義が分かれないから読みやすい(人による
宣言と定義が分かれないからリンケージとかの罠にはまりづらい(場合によってはむしろODRの罠にはまる
翻訳単位が大量にある状況ではヘッダに実装したうえで少数のcppからインクルードした方がコンパイル速い
テンプレートの場合はほぼそうせざるを得ない

などなど・・・
29デフォルトの名無しさん
2019/04/05(金) 00:49:55.23ID:1W3Y/f1q
そもそもhppファイルは実装書くためのファイルじゃないの?
templateとかで、分割コンパイルできない場合の
30デフォルトの名無しさん
2019/04/05(金) 00:54:41.98ID:yOtZbpQl
もしかしてhppをhとcppの間の子みたいに思ってる?
Cのヘッダと区別するためにhppにしてる人がいるだけでただのヘッダ拡張子だぞ
VCだとヘッダはhになるけど
31デフォルトの名無しさん
2019/04/05(金) 01:19:03.58ID:1W3Y/f1q
いや、そう言う流儀もあるよ
32デフォルトの名無しさん
2019/04/05(金) 02:32:36.17ID:5WucuzOp
流儀なんか10年もしたらガラっとかわるから拡張子なんか好きにやれ
c++ではじめの頃の昔はたまにソースを .c++ で書いてるやつもいた
33デフォルトの名無しさん
2019/04/05(金) 02:42:38.39ID:qwUluuCg
ファイルパスにプラス記号使うのは、文字コード自動判定でUTF-7と誤認されやすくなるからさけたほうがいいね。
34デフォルトの名無しさん
2019/04/05(金) 06:43:01.93ID:Z6l9czOn
前スレのenumから文字列についてこんなのあったよ
https://qiita.com/ta_dragon/items/1828ceb16bc8733526e1
35デフォルトの名無しさん
2019/04/05(金) 07:27:13.05ID:Lymez0qU
>>28
無理やりテンプレート使ってビルドを腐らせる典型的アンチパターンじゃねーか。
36デフォルトの名無しさん
2019/04/05(金) 08:06:44.62ID:a4VQ1u2O
>>28
配布出来るようなコードかけるの?
誰もお前さんのなんて欲しがらないだろ
37デフォルトの名無しさん
2019/04/05(金) 09:33:27.78ID:XIaLs/Gd
.C ならC++ なんてのも黎明期にはあったのう
38デフォルトの名無しさん
2019/04/05(金) 14:59:43.19ID:8pIebtc7
>>34
ほう、すごいね、そんな方法があったんだ。
これなら、enumの定義から自動的にunorderd_mapに登録して逆変換テーブルを作るとかもできるかもね。
39デフォルトの名無しさん
2019/04/05(金) 16:37:26.15ID:Axh2Vo9Q
なんで何でもライブラリでできるんだよ
40デフォルトの名無しさん
2019/04/05(金) 20:58:14.82ID:Qo5/2ixY
.hは宣言だけ、.hppは実装ありって使い分けてたこともあったけどやめた
includeする方はそんなの知ったこっちゃないし、いちいちhかhppか判断させられるのが無駄だとわかった
41 ◆QZaw55cn4c
2019/04/05(金) 21:25:06.14ID:sL+JrEGq
>>40
>hppは実装あり
それは悪手なのでは?
42デフォルトの名無しさん
2019/04/05(金) 21:28:37.12ID:Qo5/2ixY
別に全部入りって意味じゃないよ
テンプレートとかinlineとか、処理の実装も書いてますよーっていうこと
43デフォルトの名無しさん
2019/04/05(金) 21:42:34.57ID:Axh2Vo9Q
暗黙の了解でもそんなのないだろ
hppなら少なくともC言語ではないというくらいしかない
44デフォルトの名無しさん
2019/04/05(金) 22:05:43.09ID:YxBlyJP7
そもそもユーザーがincludeする部分は拡張子書いてないライブラリもある
45デフォルトの名無しさん
2019/04/05(金) 22:12:58.31ID:Qo5/2ixY
だから意味ないからやめたって言ってるじゃん
意味ないし有害だよやめた方がいいよ
46デフォルトの名無しさん
2019/04/05(金) 23:31:31.45ID:yvFnJ+4h
そもそも素人が書いたテンプレートを用いたものなんて使い物にならん
47デフォルトの名無しさん
2019/04/05(金) 23:51:13.69ID:zbJZTl/M
じゃあ玄人が書いたモンは形式だけで分かるのか?
48デフォルトの名無しさん
2019/04/06(土) 00:02:05.00ID:zp0ZZwhH
実装隠しても公開しても同じだぞ
49デフォルトの名無しさん
2019/04/06(土) 00:09:06.17ID:tDMvjH1l
むしろプロの方がゴミみたいなコード書いてる人多いよね
50デフォルトの名無しさん
2019/04/06(土) 00:22:46.49ID:K6S/+wtb
>>47
boostみたいなのをかけるのか?
51デフォルトの名無しさん
2019/04/06(土) 00:35:20.36ID:zp0ZZwhH
小規模なライブラリに6ヶ月かけていいなら書けるよ
52デフォルトの名無しさん
2019/04/06(土) 00:55:05.26ID:/WRt9p3o
boostで開発効率上がるとか信じてるバカが世の中にはまだいるのな。
53デフォルトの名無しさん
2019/04/06(土) 00:58:36.65ID:zp0ZZwhH
boostのどれだよ
54デフォルトの名無しさん
2019/04/06(土) 01:19:45.64ID:XiUalYkv
実際上がるだろ
ライブラリ使えばコーディング量減るのは当然
55デフォルトの名無しさん
2019/04/06(土) 01:22:34.24ID:d3+s3AWp
コーディング量を減らしたいならC++使うのやめるべき
56デフォルトの名無しさん
2019/04/06(土) 01:27:27.25ID:XiUalYkv
速くてコンパクトなソフト作るのに最適だろ。
慣れてりゃ開発速度も同じようなのLLで作るのと大差ないし
57デフォルトの名無しさん
2019/04/06(土) 01:41:14.78ID:zp0ZZwhH
言語によって作業量が増えるとか無いから
目的に合ったフレームワークがあるかどうかが重要
58デフォルトの名無しさん
2019/04/06(土) 01:53:28.65ID:d3+s3AWp
>>57
残念ながらあるんだよね
59デフォルトの名無しさん
2019/04/06(土) 01:54:41.01ID:zp0ZZwhH
そっか
60デフォルトの名無しさん
2019/04/06(土) 02:02:09.95ID:K6S/+wtb
どうせお前らなんて、数十行程度の小さなもばっか書いて、あーでもないこーでもない言ってるだけだろ

会社にもいるわ、細かいことばっか、正論言って
実際の仕事では何にもできない、言語規格ヲタ
61デフォルトの名無しさん
2019/04/06(土) 02:06:54.68ID:zp0ZZwhH
そっかそっか
62デフォルトの名無しさん
2019/04/06(土) 02:59:01.41ID:totkvsPq
仕事してるより細かいとこ突き詰めてる方が楽しいんだ、ごめんね
63デフォルトの名無しさん
2019/04/06(土) 03:15:48.33ID:d3+s3AWp
>>60
ドワンゴで働いてるのか?
64デフォルトの名無しさん
2019/04/06(土) 06:57:44.30ID:grJD5FiV
ドワンゴ今やばいしあの人も首が涼しくなってそう
65デフォルトの名無しさん
2019/04/06(土) 07:57:21.33ID:/WRt9p3o
ドワンゴでコード書いてて江添みたいなバカに
しょうもないアドバイスされたらそらキレるだろうな。
66デフォルトの名無しさん
2019/04/06(土) 08:47:14.06ID:dOsEQJqb
あの手の連中って小さなサンプルしか書いたことないんだろ
実際の数百万行あるようなプロジェクトなんかには
参加したことないんだろうな
67デフォルトの名無しさん
2019/04/06(土) 09:02:21.08ID:jpD7ojAE
弁理士みたいなもんだろ。
自分じゃモノ作らないけど複雑なルールに精通してて「それじゃ通らないよ」とアドバイスする。
68デフォルトの名無しさん
2019/04/06(土) 10:37:53.59ID:DWbJNRMu
数百万ってOSとかミドルウエアでも作ってるのか?
69デフォルトの名無しさん
2019/04/06(土) 10:40:30.76ID:lEFKAYHm
>>68
c++なんかでosなんか作れるかよ
遅すぎる
70デフォルトの名無しさん
2019/04/06(土) 10:52:37.36ID:DWbJNRMu
>>69
じゃあ何作ってるの?
71デフォルトの名無しさん
2019/04/06(土) 11:08:56.61ID:oXBRKV1B
>>70
ia32
72デフォルトの名無しさん
2019/04/06(土) 11:11:25.61ID:dOsEQJqb
>>67
作らないじゃなくて、作れないんだろ
標準ライブラリの使い方を示す小さなものは作れるけど、現実的に使用するアプリケーションはかけないんだろう
73デフォルトの名無しさん
2019/04/06(土) 11:26:29.61ID:DWbJNRMu
>>71
Intelの奴隷
74デフォルトの名無しさん
2019/04/06(土) 11:27:31.68ID:DWbJNRMu
>>72
で数百万行で何を参加して、そのうち何行書いたの?
75デフォルトの名無しさん
2019/04/06(土) 11:30:01.81ID:g9dCbj7p
>>74
自動機が約1000台あるCAMで40%は書いてるよ
76デフォルトの名無しさん
2019/04/06(土) 11:33:57.74ID:DWbJNRMu
>>75
じゃあこのスレで一番C++に詳しい人は君ね
77デフォルトの名無しさん
2019/04/06(土) 11:47:11.69ID:XiUalYkv
どうせその数百万行のコードで意味があるのは数万行から十数万行とかだろ

後は無駄なコピペやら、標準ライブラリにある機能を知らずに毎度一から書いて水増しされた無意味どころか保守考えたら害悪にしかならんくその塊
78デフォルトの名無しさん
2019/04/06(土) 11:52:36.82ID:jpD7ojAE
>>72
弁理士の喩えで言えば、弁理士自身が発明できなくても別によくね?って話なんだが。
79デフォルトの名無しさん
2019/04/06(土) 12:45:48.78ID:zp0ZZwhH
どうせ納期に追われて妥協に妥協を加えたやっつけのコードを○行書きましたwとか言われても自慢にもならん
80デフォルトの名無しさん
2019/04/06(土) 12:59:26.47ID:zp0ZZwhH
>>78
ダメだぞ
弁護士は立法の経験が無いとダメだしスポーツの評論家は一流アスリートじゃないとダメだし調理器具を作る人は繁盛してるレストランで勤務したことがないとダメw
ライブラリ開発や教材の執筆には数百万行のシステム開発と組み込みの経験が無いとダメw
ちなみに数百万行のシステム開発や組み込みの経験があると自動的にライブラリ開発者や教材の執筆者より現実を知ってる格上()だし現場のニーズを満たした理想のライブラリを作れるようになるぞ
81デフォルトの名無しさん
2019/04/06(土) 13:01:20.04ID:dOsEQJqb
ビャーネなんて、ロクなの作ってないよなw
数十行程度のものをあーでもないこーでもない言ってるだけだろ
82デフォルトの名無しさん
2019/04/06(土) 13:04:46.19ID:zp0ZZwhH
せやなw
建築物の工法の研究者なんかろくに家も建てたこともない雑魚w
ネイルガンの一つも使えないくせに机上でああでもないこうでもないって言ってるだけw
83デフォルトの名無しさん
2019/04/06(土) 14:13:10.98ID:BcLgwe4j
>>80
>立法の経験が無いとダメ
つまり議員の経験が無いとだめってことか
84デフォルトの名無しさん
2019/04/06(土) 14:25:22.19ID:HZH6vgE1
STLの美しさは時代を超越してるし、オーパーツに認定してもいいのではないか。
85デフォルトの名無しさん
2019/04/06(土) 15:08:23.30ID:FeLBMWFl
直交性とか説明しても誰にも通じなかった
86デフォルトの名無しさん
2019/04/06(土) 15:56:35.00ID:DWbJNRMu
ラムダ式使えない馬鹿「今まで書いたソースの行数は?」
そんなの気にしねえwwws
87デフォルトの名無しさん
2019/04/06(土) 16:00:55.76ID:grJD5FiV
なるほどラムダ式が嫌いな奴は書く行数が減ってコードの生産量()が減るのが嫌なんだな
ボイラープレートコードを書き殴ってれば仕事したフリができる人たちは気楽っすなあ
88デフォルトの名無しさん
2019/04/06(土) 16:07:07.88ID:/WRt9p3o
まあ実際クヌースなんかもtexプログラム作ってプログラムの大変さに気づいた
的なことは言っているしな。
偉い人でもその辺実際に作ってみると感覚が違うってのはあるんだろう
89デフォルトの名無しさん
2019/04/06(土) 16:49:06.59ID:HZH6vgE1
コンセプト来い。
コンセプトはよう来い。
90デフォルトの名無しさん
2019/04/06(土) 16:52:05.91ID:TQhcrP/j
>>68, >>77
こいつらみたいな世間知らずの根拠のない自信はどっから来てるんだろう
91デフォルトの名無しさん
2019/04/06(土) 17:41:57.80ID:zQgZMa/6
>>90
そもそも世間知らずほど自信にあふれがちではある
初心者ほど偉そうだったりもする
92デフォルトの名無しさん
2019/04/06(土) 19:26:54.62ID:/WRt9p3o
クソライブラリやクソ開発メソッドを持ち込む怪しいコンサルと一緒なんだよな。
それが押し通ることが結構あるから怖い世の中なんだが。
93デフォルトの名無しさん
2019/04/07(日) 00:51:26.62ID:MFkC9rxe
>>90
元号もろくに変えられない癖に何が自信だあほ
94デフォルトの名無しさん
2019/04/07(日) 01:23:19.03ID:27fxqR4U
自分より劣る存在を想定してホルホルしててもお前の実力は上がらんよ
95デフォルトの名無しさん
2019/04/07(日) 02:59:31.42ID:KMX3xd+u
コードを書くしか能が無いというのでは
業界に名が通った有名人クラスにならない限り
コンサルに勝つのは難しい
96デフォルトの名無しさん
2019/04/07(日) 09:59:23.22ID:AvqFg232
>>88
それソースある?
TeXの前にも色々プログラム書いてるみたいだし、そもそも大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心したらしいからTeXでどうのこうの言うのはちょっと考えづらい
あとTeX自体は今の基準だとそんなにでかく無い
ソースは24ks程度で半分以上はweave出処理される解説だし
97デフォルトの名無しさん
2019/04/07(日) 15:25:28.13ID:GYBhj6UR
>>96
買って読め。
こんな普通に出てるものもチェックせずにクソイチャモンつけられると腹たつな。
https://www.amazon.co.jp/Coders-Work-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E6%8A%80%E3%82%92%E3%82%81%E3%81%90%E3%82%8B%E6%8E%A2%E6%B1%82-Peter-Seibel/dp/4274068471
98デフォルトの名無しさん
2019/04/07(日) 15:38:44.91ID:7JuoUDJS
そんなインタビュー集までチェックするのか普通とか言われてもなぁ
99デフォルトの名無しさん
2019/04/07(日) 16:36:39.64ID:Uqhse/UH
>>98
自分は知らないからソースくれとだけ言えばいいところを、想像で要らんことをいうから反論されるのでは?
100デフォルトの名無しさん
2019/04/07(日) 16:41:57.11ID:7JuoUDJS
>>99
根拠書いてあるんだから反論したいなら根拠に反論したら?
101デフォルトの名無しさん
2019/04/07(日) 17:48:00.72ID:OFkYw0l7
なるべく高級な言語でちっさいOS作ろうと思うんだがよい言語ないかな?
102デフォルトの名無しさん
2019/04/07(日) 17:59:05.12ID:dyW8i1kK
ハードウェアによるのでは
103デフォルトの名無しさん
2019/04/07(日) 18:12:26.51ID:OFkYw0l7
armかrisc vの64bit
32bitでもいいです
比較対象のためにc/c++でも作る予定
104デフォルトの名無しさん
2019/04/07(日) 18:19:23.23ID:wdVE5f+b
そもそも高級言語で小さいOS作れる言語ってC言語一択じゃね?
105デフォルトの名無しさん
2019/04/07(日) 18:20:11.20ID:lGwZZxlu
>>103
rust
106デフォルトの名無しさん
2019/04/07(日) 19:17:40.54ID:rrYyxHxh
rustでqemuでhelloworldして満足した(´・ω・`)
107デフォルトの名無しさん
2019/04/07(日) 19:51:30.08ID:VbL09+YA
haskell
108デフォルトの名無しさん
2019/04/07(日) 20:29:30.34ID:OFkYw0l7
>>105
rustぐらいですかね?
全然違うパラダイムの言語で作れないもんかと
アセンブラとの相性考えたら結局cっぽい言語しか選択肢ないのかな
109デフォルトの名無しさん
2019/04/07(日) 21:29:30.01ID:NOCaxMAw
OSつったって、どのレベルのこと言ってるかによってかわるしな
電源ONから自分でブートして起動できるレベルのものいってるならC+アセンブラ一択だし
ブラウザで仮想環境動けばいいぐらいなら、まあいろいろ変な言語系の実験できるけど
それ実際的な意味あるの?っていう話になってくるし・・
というわけでブラウザで C++ の実行環境を動かしてみるっていうのはどうだろう?
emscripten のオルタネートみたいな・・
110デフォルトの名無しさん
2019/04/07(日) 21:58:15.58ID:GYBhj6UR
>>100
事実でもなんでもない勝手な想像を根拠とか言われても反論できんわ。
111デフォルトの名無しさん
2019/04/07(日) 22:14:49.77ID:AvqFg232
>>110
> TeXの前にも色々プログラム書いてる
> 大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心した
> あとTeX自体は今の基準だとそんなにでかく無い
> ソースは24ks程度で半分以上はweave出処理される解説だし
の中に事実でない箇所あるの?
112デフォルトの名無しさん
2019/04/07(日) 22:51:26.81ID:KMX3xd+u
ソースがわからん…
113デフォルトの名無しさん
2019/04/07(日) 23:51:05.57ID:WwvhmWfk
ソース出せと言った人が、ソースが出てきたら、ソース出すのは反則と言い出したって流れかな。
114デフォルトの名無しさん
2019/04/08(月) 07:00:51.66ID:lSCOP8uB
どうやったらそんな頓珍漢な解釈ができるのか…
115デフォルトの名無しさん
2019/04/08(月) 09:33:48.87ID:gQiHeALa
>>113
ソース出せと言った人が(>>96)、ソースが出てきたら(>>97)、ソースじゃなくて根拠(?)に反論しろと言い出した(>>98,>>100,>>111)って流れかな。
116デフォルトの名無しさん
2019/04/08(月) 10:03:38.99ID:xZraFIBG
クソどうでもいい話にこだわるな
117デフォルトの名無しさん
2019/04/08(月) 12:15:44.74ID:lSCOP8uB
引っ込みつかなくなってるんだろww
話の内容変わってるし
118デフォルトの名無しさん
2019/04/08(月) 13:16:50.24ID:/rKIWzXZ
>>109
ブラウザの仮想環境とは何?
osなのでcpuが見えてて欲しいのだけど
ひとまずqemuで始めるつもりです
119デフォルトの名無しさん
2019/04/08(月) 14:17:17.10ID:B03nMGGM
ビャーネストロヴストルップ先生のプログラミング入門買ったんだけど、読破した人っている?
120デフォルトの名無しさん
2019/04/08(月) 14:40:49.88ID:yFytPSzO
いないんじゃあないの
本当に読破したと言える人間は日本人で20人しかいないと聞いた
121デフォルトの名無しさん
2019/04/08(月) 16:02:36.28ID:B03nMGGM
>>120
毎日30分読むことにした
C++は仕事で使ったことない
122デフォルトの名無しさん
2019/04/08(月) 17:17:23.27ID:nF+E8GMD
>>108
まずベアメタルに対応してる必要があることを考えると、選択肢はそうないのでは?
123デフォルトの名無しさん
2019/04/08(月) 18:57:24.65ID:j9hUx87z
>>119
もはやそれは「国語辞典」読破した奴おる?ってのに近い。
124デフォルトの名無しさん
2019/04/08(月) 19:33:22.28ID:RJuwHc+q
ストラウストラップの『プログラミング入門』って
日本語版で1100ページもあるんか。

このとっつぁん、厚い本を書きまくっとるなぁ。
そもそもプログラミング入門のお題でそんなに語るネタあるんか。
125デフォルトの名無しさん
2019/04/08(月) 20:02:21.26ID:lSCOP8uB
実は愛読書が辞書という人はそれなりに居たりするw
https://togetter.com/li/1119810
126124
2019/04/09(火) 17:49:07.46ID:ZAJK3xJP
>>119
なんか『C++によるプログラミングの原則と実践』て本が
同じ原書の新版の和訳みたいだけど。
おまけに『ストラウストラップのプログラミング入門』よりお安い。
127デフォルトの名無しさん
2019/04/10(水) 00:37:04.74ID:weZfZZPq
この界隈では「入門」といいながらどうみてもマニア向けの本が多いよね
128デフォルトの名無しさん
2019/04/10(水) 00:51:58.60ID:uYzixBoY
自分が読んだ本は全て入門書扱いする人多いよね
129デフォルトの名無しさん
2019/04/10(水) 01:02:13.57ID:On8YhqHc
上級者の評価が高い入門書ってのは本質や精神を理解し免許皆伝まで至るような道の第一歩であるものだもの
素人が何も理解しないままこうすればこうなるでおいしいとこだけいきなり得ようとするようなハウツー本とは違う
130デフォルトの名無しさん
2019/04/10(水) 09:04:52.41ID:ryP68qDF
「本質」を語るやつは大抵アホ
131デフォルトの名無しさん
2019/04/10(水) 10:05:45.31ID:cwT5VSoK
結論のでないどうてもいい話題に食い付くやつはアホ
132デフォルトの名無しさん
2019/04/10(水) 11:09:30.74ID:dQX53bJY
同価格帯のXeonとThreadripperではどっちの方がコンパイル速いか知ってる人いますか?
133デフォルトの名無しさん
2019/04/10(水) 11:21:44.56ID:vfHnS1kx
C++はF35にも使われている戦争の兵器
C++erを見たら悪魔の手先と思え!
134デフォルトの名無しさん
2019/04/10(水) 11:25:06.35ID:dQX53bJY
それかCかC++のソースコードのコンパイルのベンチマークをCPU別で取っているサイトがあれば教えてほしいです
135デフォルトの名無しさん
2019/04/10(水) 19:23:50.56ID:xcPdAU38
effective c++読めるくらいになればまあその先に薦める本や文献なんかは結構あるが、
そこまでにどういう本勧めればいいかは相当難しい。
とりあえずcからとか言いたいとこだがそれからeffective c++までの間に読む本としては何が良いのだろうか。
136デフォルトの名無しさん
2019/04/10(水) 19:50:32.44ID:CKpW95z6
https://www.anandtech.com/bench/CPU/1858
こんなページがあるけど。
https://www.reddit.com/r/cpp/comments/6kncnu/compile_speed_or_recent_cpusryzen_surprisingly_bad/
マイクロソフトが悪い、すべてマイクロソフトのせいだという意見も出てるね。
137デフォルトの名無しさん
2019/04/10(水) 20:42:17.28ID:P0TERnuJ
タイムマシンって何言語で、書かれてるの?
やっぱりc++
138デフォルトの名無しさん
2019/04/10(水) 21:08:53.18ID:EODMjdpe
Objective-Cだろjk
139デフォルトの名無しさん
2019/04/10(水) 23:10:10.82ID:dQX53bJY
>>136
ありがとう最新のはこれだった
https://www.anandtech.com/bench/CPU-2019/2223

i9が価格の割に速かったコンパイルはシングルコアの周波数が正義なのか
XeonはマルチCPUするためのものだな
140 ◆QZaw55cn4c
2019/04/10(水) 23:38:55.47ID:57hoitEO
>>135
独習→acceleratedとプレC++11STL(ハーバードシルト)→テンプレート本、くらいを私は歩いてきました…
141デフォルトの名無しさん
2019/04/11(木) 00:09:23.85ID:SMdbPkuM
>>135
どの言語でも、言語を学ぶ順番は、
1. 入門書
2. Effective 何々
3. 逆引き・レシピ本
4. (必要なら) メタプログラミング

Ruby なら、
1. たのしいRuby 第6版
2. Effective Ruby
3. 改訂2版 Ruby逆引きハンドブック
4. メタプログラミング Ruby 第2版

先にRuby で、1〜3 を読んだ方が早いかも

もちろん他の言語でも良いけど、
プログラミング全般は、Rubyで学ぶのが、正確で紛れがないし、詳しい本が揃っている
142デフォルトの名無しさん
2019/04/11(木) 00:18:20.98ID:+5scCOHz
このご時世に本読んでプログラミング勉強するってあほだろ
143デフォルトの名無しさん
2019/04/11(木) 00:27:14.17ID:m6dr6a58
1周回ってきて本になるんだよなあ
144デフォルトの名無しさん
2019/04/11(木) 00:36:20.66ID:MrjztWsK
Effective系以上は本でもいいと思う
145デフォルトの名無しさん
2019/04/11(木) 00:47:54.22ID:XplD4nHz
少なくともeffective系統読んでもわけわからんレベルの人はまずはしっかりした本を読むべきと思う。
しかしc++は勧めたい本がない。。「独習c++」かな。。いいとは言いずらいがしかしほかに勧めたい本もない。
146デフォルトの名無しさん
2019/04/11(木) 01:24:17.64ID:GbgLM3aJ
ネットさえありゃ本なんかいらんだろアホ、と思っていた時期が俺にもありました
実際ちょっと前まではそんな感じだったんだけど、最近は Google のアルゴリズムがポンコツなのか
それの裏をかく技がものすごく洗練されたからなのかしらんが、とにかく検索上位にアホみたいな
ページがひっかかる事が多い上に、ほんとうに必要な情報が見つからないことが多い
特に最近では Python 関係のネット情報はほんとどうしょうもなくぐらい腐ってるな
C++ 関係はまだかなりましな感じだが
147141
2019/04/11(木) 02:06:27.08ID:SMdbPkuM
外人が書いた「Effective 何々」には、良い本が多い

「Rubyのしくみ」も良い。
RubyVM(仮想マシン)の内部の仕組みがどうなっているのか、など

コンパイラ・インタープリタを作る人は、読んでおいた方がよい

C++ の場合「1. 入門書、2. Effective 何々」の間隔が大きい

つまり、仕様が複雑すぎるから、入門書の範囲が大きすぎる!
独習1冊で、Rubyの1〜3 まで軽く読める

常識的には、C++ の本を読めるレベルは、Rubyなど数言語をやった後の話。
とてもじゃないが、素人がやるような言語じゃない!

素人は、細かい仕様の話よりも、
まず、Ruby on Rails などのフレームワークなどで、アプリが動くまでの全体の構造・工程を学ぶのが先

各部分の細かい仕様・バグは、後でよい。
そうしないと、バグってばかりで何も作れない
148デフォルトの名無しさん
2019/04/11(木) 03:36:50.02ID:Fl8qN29n
ネットで学ぶのがアホってドワンゴ社員のあいつの主張繰り返すのかよ
誰が仕様書読むんだあほ
149デフォルトの名無しさん
2019/04/11(木) 03:41:11.24ID:m6dr6a58
日本語でおk
150デフォルトの名無しさん
2019/04/11(木) 06:24:23.60ID:wX/7fvyH
>>141,147
消えろ
151デフォルトの名無しさん
2019/04/11(木) 06:54:46.28ID:QTZ5s2CM
>>146
例の医療関係のページビュー稼ぎ対策の影響で個人が細々とやってる良質なサイトが引っ掛かりにくくなってる
って新聞に書いてあったな
152デフォルトの名無しさん
2019/04/11(木) 09:44:13.72ID:vYC2bkpl
具体的にC++でいいサイトはどこ
153デフォルトの名無しさん
2019/04/11(木) 10:06:20.10ID:m6dr6a58
cpprefjp
154デフォルトの名無しさん
2019/04/11(木) 11:14:37.00ID:Kj8z6I1B
>>146
お前のいうネットってqiitaとかだろ?
だからダメなんだよお前はw
155デフォルトの名無しさん
2019/04/11(木) 18:46:33.30ID:Ukf06xgg
cpprefjp一択。
156デフォルトの名無しさん
2019/04/11(木) 19:07:44.03ID:XplD4nHz
リファレンスだけ並べたクソサイトじゃねーかw
157デフォルトの名無しさん
2019/04/11(木) 19:27:25.55ID:yce5TkL4
この手のランキングは本当に十人十色だな。
人気言語ランキングC++3位
https://www.tiobe.com/tiobe-index/
158デフォルトの名無しさん
2019/04/11(木) 19:30:26.87ID:m6dr6a58
リファレンスがあれば十分だわ
応用は頭使え
159デフォルトの名無しさん
2019/04/11(木) 19:38:13.25ID:XplD4nHz
話にならん。。

とりあえずここら辺から始めるのが良いか。
https://www.tutorialspoint.com/cplusplus/cpp_quick_guide.htm
160デフォルトの名無しさん
2019/04/11(木) 19:48:35.94ID:TKLgRtKS
cpprefjpは仕様の成り立ちから使用例まで載ってる
161デフォルトの名無しさん
2019/04/11(木) 19:54:53.54ID:a2+oAAfA
cppreference.comの方が好き
162デフォルトの名無しさん
2019/04/11(木) 19:58:11.07ID:m6dr6a58
cpprefjpは左の文字が小さすぎるのをなんとかしてほしい
163さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/11(木) 20:14:39.34ID:4WryY6sc
Ctrl+ホイールで画面拡大縮小
164デフォルトの名無しさん
2019/04/11(木) 20:36:15.86ID:m6dr6a58
それはおかしい
165 ◆QZaw55cn4c
2019/04/11(木) 20:40:05.89ID:mnND5pqz
>>145
独習の後は同じくハーバートシルトの stl 本(ただしC++11じゃない) でしょうけれども…
166デフォルトの名無しさん
2019/04/11(木) 21:41:21.15ID:Ukf06xgg
【小説】ストリームの悪魔
167デフォルトの名無しさん
2019/04/11(木) 21:42:54.19ID:Ukf06xgg
>>157
でも、C++17だと圏外かも。
168デフォルトの名無しさん
2019/04/11(木) 21:49:17.62ID:Ukf06xgg
C++の人気はだいたいWindowsと同期してて、XPで盛り上がり、その後下降して、Windows10発売後ちょっと盛り上がり、その後下降し始め、WSLでまたちょっと盛り上がり、みたいな感じで上下する。
169デフォルトの名無しさん
2019/04/11(木) 23:00:30.59ID:Fl8qN29n
>>165
ビャーネストロヴストルップのプログラミング入門はどうですか?
170デフォルトの名無しさん
2019/04/11(木) 23:10:49.56ID:Fl8qN29n
>>165
◆QZaw55cn4c さんはプログラマーですか?
171デフォルトの名無しさん
2019/04/11(木) 23:16:43.21ID:4rTUFtuy
STLを解説した本として最も優れてるのどれ?
172デフォルトの名無しさん
2019/04/11(木) 23:26:14.78ID:m6dr6a58
解説するほどのものか?
173デフォルトの名無しさん
2019/04/11(木) 23:29:16.82ID:MrjztWsK
cpprefjpかcppreference.com眺めるのが一番いいのでは
174デフォルトの名無しさん
2019/04/11(木) 23:35:00.33ID:Fl8qN29n
>>171
C++標準テンプレートライブラリがおすすめ
175デフォルトの名無しさん
2019/04/11(木) 23:36:01.51ID:Fl8qN29n
https://cppmap.github.io/
個人的にはこっちもおすすめ
176デフォルトの名無しさん
2019/04/12(金) 00:33:29.09ID:Oce6Eotz
C++ coding standards が、入門書と effective C++の間という感じで良かったのですが、今新品で買いやすい和書の中で同じくらい良い本ありますか
177デフォルトの名無しさん
2019/04/12(金) 07:49:20.68ID:iSiavc0f
>>173
それでコードを書けるようになるとは全く思わん。
178デフォルトの名無しさん
2019/04/12(金) 08:33:36.67ID:iSiavc0f
「ロベールのC++入門講座」を勧める
179デフォルトの名無しさん
2019/04/12(金) 09:37:34.83ID:uO4ZqrOg
コード書くために勉強したことが無い人間とコード書くために勉強した人間に分かれるな
180デフォルトの名無しさん
2019/04/12(金) 10:54:15.24ID:+AQGVq0O
RPGのバトルシステムがいつまでたっても出来ない
どうなってんだコレ
181さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/12(金) 12:39:56.53ID:O/TRJpno
>>180
ドラクエの技術を解説した本を買えば
182デフォルトの名無しさん
2019/04/12(金) 13:56:50.34ID:phN3RSne
そこでレポート プログラム ジェネレータを思い出さないと
文句はユニシスに言っとくれ
183デフォルトの名無しさん
2019/04/12(金) 16:07:32.84ID:JVT+o1/N
RPGなつかしいなw
知人でそれの専門で仕事やってるやついたが
今ごろどうしているだろうか・・
184デフォルトの名無しさん
2019/04/12(金) 16:19:27.39ID:lUKpExyl
>>180
自分が具体的に何を作るのか見えていないとか、自分が何が分からないかがわかっていないとか。
185デフォルトの名無しさん
2019/04/12(金) 18:44:05.94ID:+CDO09PL
std::rpgの登場が待たれる
186デフォルトの名無しさん
2019/04/12(金) 21:59:51.74ID:9AU6i9F6
>>179
どういう分類か興味がありますね…
187デフォルトの名無しさん
2019/04/12(金) 22:35:09.99ID:20VLO3ye
これもSFINAE???

int plus(int a,int b){return a + b;}
double plus(double a,double b){return a + b;}

int main( int argc, char *argv[] )
{
double c = plus(1.0,2.0);
return 0;
}
188デフォルトの名無しさん
2019/04/12(金) 23:46:54.37ID:w8o2kbz2
SFINAEを理解してないな?
templateでわざと失敗させるんだぞ
189デフォルトの名無しさん
2019/04/12(金) 23:50:14.00ID:WMCXK/Zp
それは関数のオーバーロード(オーバーロード関数)
SFINAEはテンプレートに関わる話
190デフォルトの名無しさん
2019/04/12(金) 23:55:37.58ID:yQNXRLnI
SFINAE ていう単語みるたびになぜか
ソフバンの白犬が低い声で「スフィ姉ーーー」て言ってる映像が頭にうかぶ
191デフォルトの名無しさん
2019/04/13(土) 00:08:44.65ID:pAXxDbKI
>>188
最初のplusで失敗して、次のオーバーロードを探しに行ってんじゃん。
もし最初でコンパイルエラーなら、このプログラムはコンパイルされないが、SFINAEのおかげでコンパイルエラーが出ない
192デフォルトの名無しさん
2019/04/13(土) 00:43:18.21ID:2fZ9oexv
>>186
自分の興味のあることをやっていたら気づいたらコードが書けるようになっていた人と
コードを書けるようになることを目標に勉強をした人
前者は入門の仕方を聞かれると上手く答えられない傾向にある
とりあえず好きなもの作ってみて困ったらリファレンスとかみれば良いんじゃないの?とかは割とガチで言ってる
193デフォルトの名無しさん
2019/04/13(土) 01:17:48.59ID:Gm2Aztfm
せやな
なぜそこでロベール!?とか思ったけど、なんか納得した
194デフォルトの名無しさん
2019/04/13(土) 02:30:55.25ID:ExcsBrHj
rvalue・lvalueの見分け方について、=の左に書けないならrvalueって考えで良いですかね?
195デフォルトの名無しさん
2019/04/13(土) 07:01:49.87ID:bq5Y4VLb
>>194 確かダメじゃないかな。
C の例でアレだけど、配列名 int a[5]; の a は
左辺値だけど代入の左辺に置けない、
「代入不可能な左辺値」というカテゴリになる。

『プログラミング言語C++』第4版 §6.4.1 (p. 175)の図によると
左辺値 lvalue は「アイデンティティを持ち、ムーブ不可能」
右辺値 rvalue は「(アイデンティティの有無によらず)ムーブ可能」

…ムーブできるか出来ないかの判断を、左辺値か右辺値か見分けることで
やろうとしてるなら、この説明は循環論法でしかないけどね。
196デフォルトの名無しさん
2019/04/13(土) 08:07:08.65ID:odoOG67D
その場で(1つの文の中で)ムーブされ得るやつが右辺値、ぐらいで良いのでは、
と言いたいところだが
 SomeType a = b = 1;
でbあ右辺値なのかと言われるとうーん…
実際bがその場で所有権を失うこともできる(SomeTypeにムーブコンストラが定義されていた場合
のだから当たらずしも遠からずだとは思うが知らん
197デフォルトの名無しさん
2019/04/13(土) 09:00:05.96ID:TufrjDxL
てかリファレンスだけ必要な奴はここにそういうことを聞きには来ないだろ。
なんかその辺の感覚がすでにずれてるように思うが。
198デフォルトの名無しさん
2019/04/13(土) 09:09:41.91ID:TufrjDxL
>>195
「代入できない」って視点で言えば194で合ってるんでは?
確かに a[0] =5 なんかはできるけど、 a = b みたいにポインタそのものは代入できないわけだし。
199デフォルトの名無しさん
2019/04/13(土) 09:48:36.03ID:ubPOLJQD
>>196
右結合なんだから b は左辺値、 b = 1 が右辺値でいいんでは?
200L
2019/04/13(土) 11:50:51.08ID:U0TmzhoK
全く関係ない話になるけど、JNI = Java Native Interface(?) なるものを使えば、
C++で OS 非依存のアプリが作れるんだね。多分。
C++からJavaの任意のメソッドを呼び出せるし、逆も可能なので、
グラフィックをJavaに描かせて、キーやマウスのイベントをJavaからC++に
伝達すればよさそう。すると、LinuxやAndroidで共通に動くC++アプリ(?)
が出来てしまう。wasmも必要ない。
201デフォルトの名無しさん
2019/04/13(土) 15:06:42.85ID:nqhK1mlk
>>200
C++の部分はネイティブなのでOSに依存する
202デフォルトの名無しさん
2019/04/13(土) 15:20:25.21ID:U0TmzhoK
スマン。CPU毎にバイナリは必要で、
clangに -macrh=xxx-xxx-xxx オプションを指定して CPUやOSを
指定してコンパイルしておくことを想定していた。
ただし、複数のCPU/OS向けのバイナリを1つのAPKにパッケージして、
使用時に自動選択する事が出来るらしい。
203デフォルトの名無しさん
2019/04/13(土) 15:31:06.15ID:pwnjfljv
わざわざjavaを使わなきゃいけないのが気にくわない
その場合、javaだけで書くこと以上のメリットある?
204デフォルトの名無しさん
2019/04/13(土) 15:32:58.01ID:U0TmzhoK
速度が速い。
205デフォルトの名無しさん
2019/04/13(土) 15:33:33.54ID:MSTjQ8pp
てかそれってjavaのアプリ作っているだけじゃ
206デフォルトの名無しさん
2019/04/13(土) 15:36:48.83ID:U0TmzhoK
Androidアプリは、Javaで書くのが基本とされてるけど、
Chromeブラウザなんかはきっと、C++で書いたものを ARMなどの
CPU向けのnative binaryに直し、それをAPKにパッケージ化して
配布してるのではなかろうか? AmazonのFire7 や Fire HD 8 などの
タブレットのCPUはどちらもARMらしい。スマホもARMが多いのかな。
207デフォルトの名無しさん
2019/04/13(土) 15:38:37.67ID:U0TmzhoK
>>205
基本的な描画系と入力系をライブラリ化しておけば、メインロジック部分は
C++で書けると思うよ。
208デフォルトの名無しさん
2019/04/13(土) 15:42:52.17ID:U0TmzhoK
さっき、AdoptOpenJDK なるものをインストールしてみたら、
java と javac コマンドが起動することを確認した。
多分このJDKは、Oracle フリーで無料でクローズド商用利用できると思う。
209デフォルトの名無しさん
2019/04/13(土) 15:46:26.77ID:MSTjQ8pp
jniはjavaのプラットフォームにc++での開発成果物を持ち込むためのもので、そうでないならわざわざそんなもの使う意味は薄い

マルチプラットフォームなアプリを作りたいならQtなりwxなりを使った方が速いし楽
210デフォルトの名無しさん
2019/04/13(土) 15:47:10.35ID:Uq+8Y9kK
>>208
でもいつ訴えられるかわからないから怖いですう。
211デフォルトの名無しさん
2019/04/13(土) 15:58:39.59ID:U0TmzhoK
そもそも、Androidアプリにとってのシステムコール(API)とは、Javaの関数だと
思うので、この構造自体は Android における「最も高速なアプリ」になっている
と思う。
212デフォルトの名無しさん
2019/04/13(土) 15:59:50.41ID:U0TmzhoK
>>210
一般アプリ作者は大丈夫だと思うな。一番危ないのは、オイラみたいに、
ToolKit作って儲けようなんて思ってる人なのさ。(^_^;)
213デフォルトの名無しさん
2019/04/13(土) 16:11:49.69ID:U0TmzhoK
>>209
それらはサイズが大きい。
214デフォルトの名無しさん
2019/04/13(土) 16:14:38.06ID:MSTjQ8pp
糞デカイ上に更新面倒なjavaのruntime入れさせるほうが害悪だろ

flashより糞度が高い
215デフォルトの名無しさん
2019/04/13(土) 16:22:55.04ID:U0TmzhoK
AndroidはJREはプリインストール済みなんじゃないの?
オイラは実機持ってないので全く分からないんだな。
216デフォルトの名無しさん
2019/04/13(土) 16:32:58.01ID:MSTjQ8pp
androidで実質c++でのアプリ開発する仕組みなら既にある
jniそのまま使うよりは大分マシ
217デフォルトの名無しさん
2019/04/13(土) 16:36:12.19ID:jD4Gkzzm
>>216
どうやるの?
218デフォルトの名無しさん
2019/04/13(土) 16:39:07.74ID:2fZ9oexv
何でグラフィックをわざわざJavaに?


>>217
QtならほぼC++で書ける
219デフォルトの名無しさん
2019/04/13(土) 16:42:39.35ID:U0TmzhoK
Qt は、内部的に Backend で Java を使ってるのかな。
220デフォルトの名無しさん
2019/04/13(土) 17:18:44.33ID:ubPOLJQD
なんかJavaを間違って理解してるっぽい。
221デフォルトの名無しさん
2019/04/13(土) 17:21:04.26ID:YpOFfnix
>>219
もういい加減スレ違いだから消えてくれ
222デフォルトの名無しさん
2019/04/13(土) 19:21:24.16ID:mZFqlfzi
vector に格納されてる値から添え字の番号を取得するための最も手軽な方法はなんでしょうか

イテレータから添え字番号を取得することはできますが、あくまで値からやりたいです
223デフォルトの名無しさん
2019/04/13(土) 19:26:24.27ID:ujTcdvrD
格納してる値にインデックスの手がかりがないんだったら
findで探して結果のイテレータから取得するしかないな
224デフォルトの名無しさん
2019/04/13(土) 19:26:44.48ID:2fZ9oexv
>>222
findしてdistance
225デフォルトの名無しさん
2019/04/13(土) 19:31:01.29ID:mZFqlfzi
>>223-224
ありがとうございます
格納する値の範囲もサイズも小さいvectorなので、今回は辞書を作って対応しようと思います
226デフォルトの名無しさん
2019/04/13(土) 19:42:14.61ID:2fZ9oexv
>>225
そんな単純な検索なら3行くらいなんだから作ればいいのに
227デフォルトの名無しさん
2019/04/13(土) 20:12:30.52ID:mZFqlfzi
奇遇なことに辞書も三行くらいです
228デフォルトの名無しさん
2019/04/14(日) 01:05:39.34ID:dZAE6IVm
そら奇遇ですな。
229 ◆QZaw55cn4c
2019/04/14(日) 06:41:11.16ID:AVvjfIV7
>>200
とても興味を覚えました
私は、そろそろ言語間でライブラリも共用されるべきだと考えています
一つの記述体で各言語共通というのはさすがに難しいにせよ、
Java のライブラリと同等なもの(名前と機能が共通のもの)が C++ にもあってもいいんじゃないか?と数年前から妄想しています…
230デフォルトの名無しさん
2019/04/14(日) 07:17:55.90ID:/tPpXRHC
もうJavaのことは忘れて生きろ
231デフォルトの名無しさん
2019/04/14(日) 07:42:20.38ID:YohaqxbG
JavaとC++に共通インターフェースを作るのは反対。
車輪の再発明にしかならない。自由を奪うだけの愚策。
232 ◆QZaw55cn4c
2019/04/14(日) 07:51:31.17ID:AVvjfIV7
>>231
強要するのではなく、オプション(選択肢)として提供するのはどうでしょうか?
233デフォルトの名無しさん
2019/04/14(日) 08:04:00.89ID:YohaqxbG
>>232
共通ライブラリを使う側にとってはオプションであることは当然。
共通ライブラリを作る側の話をすべき。共通ライブラリの規格決定権者が増えすぎること自体が好ましくない。
これはEU諸国がトルコがEU参加することを拒否する感覚に近い。
234 ◆QZaw55cn4c
2019/04/14(日) 08:50:47.24ID:AVvjfIV7
>>233
私は EU には否定的(グローバリストの巣窟であり、普通選挙/自由選挙による合意形成をスキップするポジションを作って人を操作するからくり、トルコもたぶん目が覚めているのでは?)ですが、それはさておき、
すでにある java/classpath スケルトンを真似してしまおう、という低姿勢・低いプライドを貫くのであれば、規格策定者は基本要らなくなりませんか?だって真似するだけだし…
235デフォルトの名無しさん
2019/04/14(日) 08:59:21.33ID:k2b6YaL9
まだC++98しか知らないと、取り残されますか。
236デフォルトの名無しさん
2019/04/14(日) 09:09:36.38ID:YohaqxbG
まずは、Javaと瓜二つな C#、.NET、C++/CLIが今どうなっているか考えてみては。
237L
2019/04/14(日) 09:28:45.12ID:Y1IcINvd
>>229
ちょっと話しはズレるけど、あなたの賛同で嬉しくなったので、入手した耳寄りな
情報を書いておこうと思う。既に知ってる人も当然いると思うけど、
WebAssemblyで作ったようなWebAppliは、ブラウザのURL欄やタイトルバーなどが
表示されてしまうのが難点として残っていた。ところがなぜかElectronでは消せて
いたのでChromeではなくChromiumを使っているからかと思っていた。
ところが、manifest.json なるものを書いて、HTMLにそのファイルを使うように
書いておいて、display プロパティーを standalone やfullscreen にすると、
URL欄が消せるらしい。
238 ◆QZaw55cn4c
2019/04/14(日) 09:41:42.35ID:AVvjfIV7
>>237
もう時代はすっかり html/css/js ですね…
VSCode も Electron ですし…
239デフォルトの名無しさん
2019/04/14(日) 10:28:52.88ID:k2b6YaL9
質問を変えてみよう。
C++11やC++14のコードは、職場で取り入れられてますか。
240デフォルトの名無しさん
2019/04/14(日) 11:49:20.77ID:q+cUY/8y
>>239
ガンガン取りいれてるよ。

なにげにでかいのが日本語識別子の保証。適切に使うと可読性が笑っちゃうくらい上がるw
ヘッダーのプロトタイプ宣言とかが特におすすめかな。

あとchar16_t/char32_tも結構ありがたい。WindowsとUNIX系のOS間で同じ文字コードとして共通で使える型が以前はなかったからね。
20でようやく入るみたいだが、なぜchar8_tを入れかったのか(´・ω・`)

std::initializer_listもかなり便利。型安全で個数も分かる上に、引数の一番後ろじゃなくてもいいので、cの...と違って気軽に使える。

あとよく使うのは範囲for文と、イテレータの簡略化かな。いくつかの演算子をオーバーロードすれば良いだけだから、
結構気軽に範囲for文対応のイテレータを書ける。

ラムダ式も関数の引数に直接関数を埋め込んだりできて便利。
241 ◆QZaw55cn4c
2019/04/14(日) 12:36:24.13ID:AVvjfIV7
>>240
>char16_t/char32_tも結構ありがたい

確かに
char16_t と u"" がなければ win32api W 系とか途方に暮れていたとおもいます… http://2chb.net/r/tech/1434079972/53
242はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 12:43:45.83ID:+qOUcSLR
ガンガン最新を追うべきとまでは思わないけど、
C++11 は最低限度じゃないかなぁ。
243デフォルトの名無しさん
2019/04/14(日) 14:27:39.08ID:6Gooiv09
17便利すぎ
variant,visit,lambda,if constexpr
のコンボで捗る
244デフォルトの名無しさん
2019/04/14(日) 14:34:56.13ID:GSX89KOm
つーか今はもうC++11の機能は使わずにC++で書け!といわれても
やりきる自信がなくなった・・
245デフォルトの名無しさん
2019/04/14(日) 14:39:38.95ID:krJLkXqZ
古い環境だと最近のサンプルがビルドできなくて困る
246デフォルトの名無しさん
2019/04/14(日) 16:02:33.26ID:YQLb8Tsj
c++11とか名乗るから誤解されるんだよ。
c++++とかのがイメージ的に正しい。
247デフォルトの名無しさん
2019/04/14(日) 16:06:36.29ID:dZAE6IVm
C#ってことか。
248デフォルトの名無しさん
2019/04/14(日) 16:12:40.18ID:YQJCzKEv
repeat文って入らないの?
249はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 16:16:59.50ID:+qOUcSLR
>>248
どんな機能?
250デフォルトの名無しさん
2019/04/14(日) 16:20:53.89ID:YQJCzKEv
>>249
repeat(int i; n) で for(int i; i<n; i++) と同じ意味な機能
251デフォルトの名無しさん
2019/04/14(日) 16:22:55.01ID:6Gooiv09
>>250
そんなどうでも良いもののために予約語追加する意味って
その文法じゃ初期値すら変えられない
252デフォルトの名無しさん
2019/04/14(日) 16:24:45.44ID:6Gooiv09
初期値はi=0とかすればいいのか
でもそうなるとi=1にした場合何回ループするのか混乱しそう
253デフォルトの名無しさん
2019/04/14(日) 16:32:41.09ID:IovzG98E
>>229
QtとかGtk、wxとか色々有るじゃん。。。
入れるの面倒くさいなら、Power Builder(だっけ?)とかの有料開発環境はVSを除いてマルチプラットフォームなライブラリが売りだぞ。
254 ◆QZaw55cn4c
2019/04/14(日) 16:36:01.32ID:AVvjfIV7
>>253
Java の人も C# の人も c++ の人も python も ruby も一緒の名前で一緒の機能が使えたら,コストの中でも一番高くつく勉強コストを減らせるのではないでしょうか
255デフォルトの名無しさん
2019/04/14(日) 16:44:39.61ID:YQJCzKEv
>>251
Linuxのカーネルにrepeatマクロ大量にあるもん
256はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 16:52:53.22ID:+qOUcSLR
>>255
ならマクロでいいじゃねぇか。
257デフォルトの名無しさん
2019/04/14(日) 16:53:20.02ID:6Gooiv09
こんなので十分だろ
https://ideone.com/I6e8NZ
258デフォルトの名無しさん
2019/04/14(日) 16:59:12.33ID:6Gooiv09
>>254
wxでもQtでもメジャー言語のbinding位あるだろ
259デフォルトの名無しさん
2019/04/14(日) 17:09:53.36ID:IovzG98E
>>254
うん。
それはまさにそうで、だからQt,Gtk,wxあたりのメジャー所は色んな言語にラッパーがある。
260デフォルトの名無しさん
2019/04/14(日) 17:10:32.89ID:h7KNzBMl
webプログラマーなんですが、右辺値、fowardっていつ使うのか気になります
というかなんでそこまで、厳密に分ける必要があるのか 
業務で使ってる方、使用例を教えてください
261デフォルトの名無しさん
2019/04/14(日) 17:20:10.51ID:sCsh6GnA
右辺値というかムーブ関数の定義といらなくなるオブジェクトにstd::move付けとくのは絶対損にはならないからとりあえずやっとく
forwardはテンプレートライブラリ作るなら必須だけど自分では使ったことないなあ
262さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 17:25:45.47ID:86P3zzV7
コピーにコストがかかる場合は、std::swapやstd::moveのが早い場合があるからね。ムーヴはコピーじゃなくて引っ越しだから。
263デフォルトの名無しさん
2019/04/14(日) 17:27:07.70ID:YQLb8Tsj
まあ理論上はね。。そういう実装になってるかどうかはコード見ないとわからんけどね。
264デフォルトの名無しさん
2019/04/14(日) 17:29:38.84ID:6Gooiv09
基本的には高速化が目的でmove使わなくてもなんとかなるが、
所有権絡むとmoveは必須になる

forwardはtemplateで引数渡すときにmoveやら参照やらの完全転送する場合必須
265さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:16:04.21ID:86P3zzV7
ちょっと実際にやってみようか。コピーコンストラクタで十秒待つコードを書く。ムーヴコンストラクタとムーヴ代入でなにもしない。
この状態でstd::moveを使わないで代入すると十秒かかる。
266さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:17:20.92ID:86P3zzV7
訂正。「コピー代入で十秒待つコードを追加」
267デフォルトの名無しさん
2019/04/14(日) 18:47:05.84ID:xCvd3oj/
>>264
>所有権絡むとmoveは必須
必須とまでは言えない
 T::T(const T& obj)
という通常のコピコンを定義して、コピコンの中でconst剥がししたら
とりあえず所有権の移動もmove無しで逝ける
268はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 18:50:44.06ID:+qOUcSLR
>>260
高速化のために出来るのは、アルゴリズムのレベルでの工夫を別にすれば、出来ることはショートカットだ。
高速化とは近道なんだよ。

場合分けが出来るなら、どうしてもやらなければならないこと、やらなくてもいいことを「区別」できる。
区別できるなら、やらなくてもいいことは省略できる。

言語での区別が無くても、たとえば C でも区別を陽に書けばムーブみたいなことだって、そりゃあ出来るけども、
そんなクソ面倒くさいことはしたくないので言語でのサポートがあるとありがたい。

まあ速度的にそこまで必要ないってのなら、区別を積極的に利用しなくてもかまわないよ。
でも、必要なときに出来る方法が用意されているとうれしいし、
C++ を使うときというのはそれなりに実行速度が必要なときだろうし。
269デフォルトの名無しさん
2019/04/14(日) 18:52:09.33ID:xCvd3oj/
とわいえmoveコンストラクタの方が意図が明確なコードが書けるから良い。
moveコンストラクタがふさわしい例っていやーつぎごケース。
class BarWithBigData {
  Foo* m_pBigData;
  BarWithBigData() : m_pBigData(new Foo[1000000000000] { }
  ~BarWithBigData() { delete[] m_pBigData; }
  BarWithBigData(BarWithBigData&& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
  Foo* refBigData() { return m_pBigData; }
};

ちなstd::arrayは使った無いから知らん
270デフォルトの名無しさん
2019/04/14(日) 18:53:54.12ID:xCvd3oj/
訂正orz、

誤:
  Foo* m_pBigData;
  BarWithBigData() : m_pBigData(new Foo[1000000000000] { }

正:
  Foo* m_pBigData;
public:
  BarWithBigData() : m_pBigData(new Foo[1000000000000]) { }
271デフォルトの名無しさん
2019/04/14(日) 18:54:00.95ID:mEGAHR/Y
コピコンの中でconst剥がしってちょっと何言ってるか分からない
272さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:55:03.68ID:86P3zzV7
十秒待つ待つコードはWindowsなら#include <windows.h>してSleep(10*1000);であり、
Linuxなら#include <unistd.h>してsleep(10);だ。
C++11ならstd::chronoに待つ関数があったはず。
273さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:57:07.74ID:86P3zzV7
const_castだろ。jk
274デフォルトの名無しさん
2019/04/14(日) 18:57:37.12ID:xbTIwD1q
>>271 「move無しで(未定義動作に)逝ける」ってことでしょ。
275デフォルトの名無しさん
2019/04/14(日) 18:57:39.39ID:xCvd3oj/
>>271
こうじゃわ;
BarWithBigData::BarWithBigData(const BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; }

>>269もmoveコンストラの変わりに↑のように書いても逝ける
276デフォルトの名無しさん
2019/04/14(日) 19:10:15.32ID:sCsh6GnA
まあ実際にはそんなムーブをゴリゴリ書くことはなくて
m_pBigDataをunique_ptr<array<Foo, 1000000000000>>にしてムーブctor、ムーブop=、デストラクタを=defaultにするけどな
277デフォルトの名無しさん
2019/04/14(日) 19:21:51.01ID:kBfBajGR
auto_ptrよりヤバイ奴
const_castでconst外した後実際に書き換えてしまうとかw
278デフォルトの名無しさん
2019/04/14(日) 19:38:34.53ID:xCvd3oj/
>>277
ちなconst T&で渡されたブツを関数内でconst_castして書き換えることはそれ自体は合法
ROM上のオブジェクトを渡して死ぬことは有り得るがしたら呼び出し側の違反
また最適化にしくるとしたらそれはコンパイラーのバグ
279デフォルトの名無しさん
2019/04/14(日) 19:46:40.04ID:xbTIwD1q
>>278
ROM上になくても const T 型で構築されたオブジェクトを書き換えたら未定義動作になるから、
値が変わらない前提の最適化は許されてるよ。

const 無しで構築されたオブジェクトを指す const& の話と混同してそうだね。
280デフォルトの名無しさん
2019/04/14(日) 19:53:21.04ID:uvZ0DMTi
質問: c🐴++のrust相対の優位性はなんですか?
281はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 19:57:27.42ID:+qOUcSLR
>>280
正しくないコードをコンパイル出来る。
C++ はプログラマを信頼するのだ。
282デフォルトの名無しさん
2019/04/14(日) 19:57:44.28ID:6Gooiv09
>>278
未定義じゃないか
c++03 5.2.11の7にはこんなことが書いてある
[Note: Depending on the type of the object, a write operation through the pointer, lvalue or pointer to data
member resulting from a const_cast that casts away a const-qualifier68) may produce undefined behav-
ior (7.1.5.1). ]
283デフォルトの名無しさん
2019/04/14(日) 20:14:45.20ID:xCvd3oj/
>>282
Depending on the type of the objectにおいてmay produce undefined behaviorである
すわなちオブジェクトの型によっては未定義動作に成りえる、
と言っているだけなのでconst T&渡しされたパラメータの書き換えがNGの祥子にはなんね

>>279
>const T 型で構築されたオブジェクトを書き換えたら未定義動作になる
それはそう。しかしconst T&渡しされた関数内でコンパイラはそれを判断できないから
そういった関数内で、参照型かポインタ型引数で関数に渡されたlvalueのconst_castした結果はあくまでlvalue扱い
のはず…
284デフォルトの名無しさん
2019/04/14(日) 20:25:38.94ID:xbTIwD1q
>>283
関数内では const& であることを根拠に最適化に使えないのは合ってる。
でもだからといって const& で受け取ったものを書き換えてもよいとは言えない。

void f1(int const&);
int f2()
{
int const x = 1;
f1(x);
return x;
}

x は int const なので、 f2() の return x は f1() が const_cast して x を
書き換える可能性を無視して return 1 に最適化できる、という話。

BarWithBigData const x; が >>275 のコピーコンストラクタに渡された後も
const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; を無視して書き換え前の
m_pBigData が使われる可能性がある。
285デフォルトの名無しさん
2019/04/14(日) 20:33:37.36ID:mEGAHR/Y
規格が云々言わなくても、9割のプログラマの意図に反してるで終わる話
頼むからそんなコードは頭の中にしまっといてほしい
286デフォルトの名無しさん
2019/04/14(日) 20:37:26.81ID:6Gooiv09
つまりはそれ自体は問題ないが、constとして生成したオブジェクトを渡した瞬間にダメになると言うことか
で、渡すこと自体は制限できないから
プログラム中に罠を仕掛ける事が出来るわけだ。
287デフォルトの名無しさん
2019/04/14(日) 20:39:28.07ID:6Gooiv09
てか、mutable付けとけば問題なくなるな。
288デフォルトの名無しさん
2019/04/14(日) 20:40:25.78ID:6Gooiv09
const_castも要らないし良いことずくめじゃないかw
289デフォルトの名無しさん
2019/04/14(日) 20:45:26.81ID:xCvd3oj/
>>285
わかりたそうする。>>275のケースは素直にムーブコンストラクタを使えば良い。または↓でもだいたいおk
BarWithBigData::BarWithBigData(BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }

だいたいというのはムーブコンストラクタ有りの規格のC++コンパイラで↑の非constなコピコンだけ書く警告が出ることがあるからイヤン、

>>286
>つまりはそれ自体は問題ないが
いや問題がある可能性が潰せていない。
void f1(int const&);
int f2()
{
int x = 1;
f1(x);
return x;
}
(xがconst無し)の場合であってもf1(x)がxを書き換えない前提の最適化がf2()にかかったりすると、
f1(x)内で変更したxの値がreturnされるxの値に反映されない可能性がある(f1(x)の呼び出し前後でxがレジスタに乗ったままであるとか、
290デフォルトの名無しさん
2019/04/14(日) 21:11:05.08ID:xbTIwD1q
>>289
その x の型は const じゃないから return x は最適化できないよ。
291デフォルトの名無しさん
2019/04/14(日) 21:48:29.79ID:uvZ0DMTi
>>281
わからないです。それはメリット?
292デフォルトの名無しさん
2019/04/15(月) 01:36:50.54ID:20PlYkfs
ラムダに11個の引数を参照で渡すのと、キャプチャするの、どっちが速いかな?
293デフォルトの名無しさん
2019/04/15(月) 02:40:05.27ID:e1RUhzz1
測ればいいだろ
294はちみつ餃子 ◆8X2XSCHEME
2019/04/15(月) 02:50:17.52ID:94OTneyx
>>291
メリットのときもデメリットのときもあるだろう。
295デフォルトの名無しさん
2019/04/15(月) 02:59:24.82ID:XbOtvNIU
参照渡しな時点でその場で呼び出すのだろ。
最適化かければ結局同じようなアセンブリになるよ。
296デフォルトの名無しさん
2019/04/15(月) 09:13:13.35ID:+swIGlrx
それはわからんだろ
ブロック待ちするかもしれないわけで
297デフォルトの名無しさん
2019/04/15(月) 19:29:41.18ID:8vw8m6ly
引数で渡すとスタックに積まれる可能性があるけど、キャプチャするとそうならないのでは。
298デフォルトの名無しさん
2019/04/15(月) 19:36:28.26ID:XbOtvNIU
いや、形式上は無名クラスにキャプチャを変数としてぶちこんだもののインスタンス作ってメンバ関数のoperator()呼ぶのだから、スタックは使うだろ。
299デフォルトの名無しさん
2019/04/15(月) 20:08:47.93ID:Auf6nZgf
C言語じゃダメなんですか!
300デフォルトの名無しさん
2019/04/15(月) 20:20:07.70ID:NSErsM12
いいよ
301デフォルトの名無しさん
2019/04/15(月) 20:25:01.30ID:IXPbMXJW
無駄に複雑にしとるな。
302デフォルトの名無しさん
2019/04/16(火) 01:01:07.13ID:ZVmLHBMP
>>298
じゃあ、引数で渡すとスタックに積まれない可能性があるので、速い場合もあるのでは?
303デフォルトの名無しさん
2019/04/16(火) 02:15:09.28ID:WfxisTJA
海外だと、Javaに負けて、Rustに圧倒的実力で追いやられるC++
304デフォルトの名無しさん
2019/04/16(火) 02:27:07.22ID:WfxisTJA
>>303
https://insights.stackoverflow.com/survey/2019#technology-_-what-languages-are-associated-with-the-highest-salaries-worldwide
305デフォルトの名無しさん
2019/04/16(火) 15:01:04.19ID:RMLQoksE
本当に、コンパイル時に何かしたいならRustだけどね
306デフォルトの名無しさん
2019/04/16(火) 18:28:44.44ID:ZVmLHBMP
>>304
Java圧倒的な強さだな。
307デフォルトの名無しさん
2019/04/16(火) 18:30:10.89ID:ZVmLHBMP
全部足すと500%位になりそうだから、複数の言語を使う人が多いんだろね。
308デフォルトの名無しさん
2019/04/16(火) 21:18:54.40ID:dFuxCqAG
江添が転職できずに困っとるw
まあこいつがクソなだけでc++の問題ってわけじゃないんだがイメージは悪いわな。
309デフォルトの名無しさん
2019/04/16(火) 21:36:49.03ID:jMhdT2ep
こうしてみるとホッシーの全タクシー移動ってのは理に適ってるな
バカな公害に捕まる心配が減る
310デフォルトの名無しさん
2019/04/16(火) 23:25:27.27ID:LsPOsuul
なんか私怨でもあるんかいな
311デフォルトの名無しさん
2019/04/16(火) 23:41:35.10ID:InK+cNH/
喫煙者が目に入った途端癇癪起こして殴り掛りかかる狂犬なんだっけ?
312デフォルトの名無しさん
2019/04/17(水) 00:03:12.24ID:vVzTJh6n
知らね
よく人を招いているようだし揉めたことがある人も少なくはないんじゃいか
313はちみつ餃子 ◆8X2XSCHEME
2019/04/17(水) 01:12:11.58ID:UWuCQ9XR
>>310-311
当事者の様々な主張の食い違いがあるので、結論としては「わからない」。
少なくとも彼自信の主張としては掴みかかってきたのを払いのけた結果として眼鏡が割れたということになっている。
(江添が殴りかかったわけではなく、むしろ防衛した側、と江添は主張している。)

江添が煙草について過激な意見を持っているのは確かだが、
シェアハウス内で禁煙場所であると合意がなされている場所で煙草を吸った客人がいたというところは当事者全体が認めているようだ。
314デフォルトの名無しさん
2019/04/17(水) 08:21:52.75ID:DaACwh1w
恨みというかまともにコード書かない奴がクソ意見で現場荒らすって事自体がクソだと思うわけで、
まあその反動で現場で働くことができないって事になればザマァって思う。
315デフォルトの名無しさん
2019/04/17(水) 09:46:31.27ID:vVzTJh6n
現場を荒らしてる?
316デフォルトの名無しさん
2019/04/17(水) 09:53:30.15ID:vVzTJh6n
どのプロジェクトにも参加してないと認識してたけど乗り込んでケチつけてたりするのかな
まあ俺ドワンゴとは縁が無いからどこで何してようが関係ないけど
317デフォルトの名無しさん
2019/04/17(水) 17:08:02.09ID:I32j715f
C++がPython抜いて3位 - 4月TIOBE言語ランキング 2019/04/17 10:55 後藤大地
https://news.mynavi.jp/article/20190417-810363/

TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。

4月TIOBE Programming Community Index / 円グラフ
C++相談室 part142 	->画像>5枚

2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。

長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。
318デフォルトの名無しさん
2019/04/17(水) 17:11:50.34ID:hoIwj+sG
>>317
何回だからみんな何回もググってるんだよ
319デフォルトの名無しさん
2019/04/17(水) 18:34:58.84ID:LllPIzo0
俺が検索しまくったからだろうな。
320デフォルトの名無しさん
2019/04/17(水) 19:59:29.56ID:fJF68+PR
今もしインターネットが完全にシャットダウンされると
プログラム書けなくなるプログラマけっこう数いるだろうな
321はちみつ餃子 ◆8X2XSCHEME
2019/04/17(水) 20:18:46.81ID:UWuCQ9XR
>>320
cpprefjp はとりあえず手元にダウンロードしてあるけど。
322デフォルトの名無しさん
2019/04/17(水) 20:35:09.94ID:P5fp2rRi
どうやってダウンロードしたの?
巡集じゃできなかった…
323デフォルトの名無しさん
2019/04/17(水) 20:39:18.77ID:WWgiT6Ow
githubじゃない?
324デフォルトの名無しさん
2019/04/17(水) 21:27:54.32ID:P5fp2rRi
そうなんだ、ありがとう
325デフォルトの名無しさん
2019/04/19(金) 02:16:29.43ID:/DYxLH/O
どういたしまして。
326デフォルトの名無しさん
2019/04/19(金) 08:26:54.03ID:gmGy9oTC
江添は職質裁判でも、不当判決が出たので控訴するみたい

警官は、複数人で口裏合わせするから、民間人は勝てない

漏れもやられたけど、酒酔い運転でも、漏れが機械に息を吹き掛けても、ランプが点かない。
そこで、警官がクルッと後ろを向くと、ランプが点く

そっと見たら、酔っ払い警官が、自分で息を吹きかけて、ランプを点ける

こういう裁判で争っている人もいるけど、
警官は複数人で口裏合わせするから、絶対に勝てない!

警官は皆、このやり方で出世しとる
327デフォルトの名無しさん
2019/04/19(金) 08:33:03.47ID:PWe5dNBv
ありゃ普通に対応してりゃ済む話だと思うがね。

やってることは完全に当たり屋だろ。
328デフォルトの名無しさん
2019/04/19(金) 09:27:15.01ID:biH+fvR8
>>326
Rubyバカの人か。相変わらず思い込みが激しく、言っていることが滅茶苦茶だな。
329デフォルトの名無しさん
2019/04/19(金) 12:05:02.85ID:rPSCrubJ
どんだけ江添好きなの?w
330デフォルトの名無しさん
2019/04/19(金) 13:28:48.91ID:W5tFDDw/
日本でC++真剣にやってるのって彼だけだし
331はちみつ餃子 ◆8X2XSCHEME
2019/04/19(金) 13:41:25.74ID:mypEidUJ
だけ、というのは言い過ぎだと思うが、
日本語で最新の C++ の事情を本にしているのは江添くらいしかいないからなぁ。

江添本人は自分のことを実務家ではなく教育者だと考えているようだし、
(肩書は何なんだろ? エヴァンジェリストのようにも見えるが……)
今のポストは妥当なとこだろ。
そのままやってくれればありがたいもんだ。
332デフォルトの名無しさん
2019/04/19(金) 13:41:50.58ID:i8rhoxHy
つまり他の日本人は竹刀とか木刀ってことか。
333デフォルトの名無しさん
2019/04/19(金) 13:50:35.12ID:rPSCrubJ
江添個人の裁判は完全にスレチなんだよなあ
仮に違法な取り締まりだと判断されても警察のやり方が改まるわけもないだろうし
334デフォルトの名無しさん
2019/04/19(金) 14:15:26.68ID:JVA9qfGz
江添すなわちC++なのだから
江添の話題は全てC++の話題だょ
335デフォルトの名無しさん
2019/04/19(金) 15:08:33.32ID:j263LUSd
宗教の話はよそでやってくれないか
336デフォルトの名無しさん
2019/04/19(金) 15:16:01.57ID:JwgM4FAg
もう少しc++の話をしてくれと思う事もある
337デフォルトの名無しさん
2019/04/19(金) 18:50:10.05ID:/DYxLH/O
はちみつさんも真剣にやってると思います。
338デフォルトの名無しさん
2019/04/19(金) 19:16:13.92ID:yj9Iz3m1
こんな事言うと勘違いされそうだが、はちみつ餃子はちゃんとしてると思うよ
C++に関しておかしなことは言っていない
ていうか、はちみつ餃子ってものすごい不味そうなんだがそんなの本当にあるのだろうか・・?
339デフォルトの名無しさん
2019/04/19(金) 19:17:39.46ID:j263LUSd
肉料理にはちみつを入れること自体はわりと普通
量の問題
340デフォルトの名無しさん
2019/04/19(金) 19:28:19.17ID:PWe5dNBv
いや明らかに開発してねーだろって感覚じゃねーか。
まあここならそれでもいいんだろうけれど。
341はちみつ餃子 ◆8X2XSCHEME
2019/04/19(金) 19:51:37.44ID:mypEidUJ
>>338
ググればわかるけどはちみつ餃子はそこそこありふれた料理だよ。

その昔、 higepon が自分でもどうして higepon などと名乗ったかわからない
と述べていたので、そのくらい意味不明感じにしようと思って適当に
思いついた語をコテハンにした。
Scheme スレが本来の住処なので当初は SCHEME餃子 と名乗っていたけど、
他のスレにも顔を出すようになったのでなんとなくはちみつ餃子になった。
およそ意味不明な組合せにしたつもりだったんだけど、
実際にある料理だとは後になってから知った。
342デフォルトの名無しさん
2019/04/19(金) 21:11:54.81ID:fEN/Hp+M
initializer_listを引数に取るオブジェクトを引数に取る関数で
下記のケースでUniversal Initializationが効かないのですが
何かいい手はないでしょうか

using KVPCollectionType = std::map<std::string, std::string>;
void f(const KVPCollectionType&& kvps = {});

f(); // OK
f({}); // OK
f(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK

f({{"key1", "value1"},{"key2","value2"}}); // NG これをやりたい!!
343デフォルトの名無しさん
2019/04/19(金) 21:13:17.21ID:UQpKfTQY
エピ…いや何でもない
344デフォルトの名無しさん
2019/04/19(金) 21:17:05.52ID:fEN/Hp+M
すみません、訂正です
× void f(const KVPCollectionType&& kvps = {});
○ void f(const KVPCollectionType& kvps = {});
345デフォルトの名無しさん
2019/04/19(金) 21:22:53.30ID:/DYxLH/O
アークエンジェルに搭載されてるstd::variant<>。
346デフォルトの名無しさん
2019/04/19(金) 22:49:42.25ID:DWxUZ3pl
wandboxで試したらclangでもgccでもc++11 -pedanticで通ったけど?
347デフォルトの名無しさん
2019/04/20(土) 00:01:37.25ID:a7z6m7l4
ごめんなさい、ごめんなさい。本当にごめんなさい。
勝手に脳内で要約したのが間違えまくってました

正確には以下の通りです。
#include <map>
#include <memory>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
int main()
{
auto ok = std::make_shared<c>(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
auto ng = std::make_shared<c>({{"key1", "value1"},{"key2","value2"}}); // NG!!!
}
348デフォルトの名無しさん
2019/04/20(土) 10:47:21.77ID:5oa1AZjP
全てのバグを絶滅せよ。
「今日は死に日和」好評発売中。
349デフォルトの名無しさん
2019/04/20(土) 11:08:43.59ID:3kBWifqd
C++11や14を使ってる人、コンパイラは何ですか。
350デフォルトの名無しさん
2019/04/20(土) 11:25:30.96ID:m+a2EYsq
ゲームエンジン作ってる人いますか
351デフォルトの名無しさん
2019/04/20(土) 11:30:38.02ID:5oa1AZjP
clとgcc。
352デフォルトの名無しさん
2019/04/20(土) 13:20:15.93ID:lwVpLCzw
c+11以降はバージョン違うと全く別のコンパイラ
353デフォルトの名無しさん
2019/04/20(土) 13:23:19.12ID:8Vh3F1FF
Twitchでプログラミングしてるやつの中でゲームエンジンも居たような
354はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:30:02.11ID:7hm/FBJ7
>>347
テンプレートの推論ルールとして「関数テンプレートのパラメータとして波カッコの初期化子リストを渡して型推論させることはできない。」
ということになっている。 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
make_shared の実際の型は template <class T, class... Args> shared_ptr<T> make_shared(Args&&... args); なので、
このとき Args が推論できない以上はどうにもならん。
型を固定した専用の関数をはさんでこんな感じにするくらいのことしか思いつかないな。

#include <map>
#include <memory>
#include <initializer_list>
#include <utility>

using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
c(const std::initializer_list<typename KVPCollectionType::value_type>){}
};

std::shared_ptr<c> make_c_shared(std::initializer_list<typename KVPCollectionType::value_type> a) {
return std::make_shared<c>(std::move(a));
}

std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}

int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
355はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:32:51.70ID:7hm/FBJ7
>>347 >>354
呼出す側で

auto ng = std::make_shared<c, std::initializer_list<typename KVPCollectionType::value_type>>({{"key1", "value1"},{"key2","value2"}});

というように型を明記してもかまわないけど、使う側でいちいちこんなこと書きたいわけじゃないだろ?
356はちみつ餃子 ◆8X2XSCHEME
2019/04/20(土) 13:35:42.76ID:7hm/FBJ7
>>347
ちゃんと考えたら >>354 はいらんことしとるな……
これで充分か

#include <map>
#include <memory>
#include <utility>

using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};

std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}

int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
357デフォルトの名無しさん
2019/04/21(日) 08:19:35.76ID:jJhiZdMc
>>354-356
ありがとうございます、その手を使わせていただきます
状況によって推定ルールが変わるのはやめて欲しいなってちょっと思ったんですけど。
358デフォルトの名無しさん
2019/04/22(月) 23:55:58.01ID:uyfay/gq
メンバアクセスにthis->つける?
359デフォルトの名無しさん
2019/04/23(火) 00:01:58.24ID:cW1os5L0
エディタの補完機能使いたいときにたまにそうやって補完して最後に消す。
が、たまに忘れる。
360デフォルトの名無しさん
2019/04/23(火) 00:02:35.52ID:BSgCsXpz
IDEの都合で付ける事が良くある
付けないと補完候補多すぎて
361デフォルトの名無しさん
2019/04/23(火) 00:09:08.10ID:JKfCESEZ
ああなるほど
補完候補を絞るのには便利ですね
362デフォルトの名無しさん
2019/04/23(火) 18:16:01.64ID:Wx+D+gzo
メンバであるという保証ができるので付ける
363デフォルトの名無しさん
2019/04/23(火) 19:39:28.32ID:cE0Yu4R7
メンバ名は頭にm_付けろみたいなクソルールよりずっといいと思うので付けるべき
364デフォルトの名無しさん
2019/04/23(火) 19:42:38.83ID:JKfCESEZ
仮引数と別の名前つけるのだるいからm_は別に良いと思う
365デフォルトの名無しさん
2019/04/23(火) 20:02:01.86ID:8XemHsTC
メンバ変数に専用の色付けたらいいじゃん
366デフォルトの名無しさん
2019/04/23(火) 20:13:43.06ID:sktjqElV
引数そのままメンバに入れるなら引数に_つけてvar(_var)って初期化してるわ
367 ◆QZaw55cn4c
2019/04/23(火) 20:16:13.74ID:JSYnwir1
>>366
それって var(var) でも問題ないんですよ…
368さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/23(火) 21:18:06.78ID:DAl4rXky
バーバー
369デフォルトの名無しさん
2019/04/23(火) 21:32:08.36ID:BSgCsXpz
>>367
綴り間違えたら悲惨なことになった
370デフォルトの名無しさん
2019/04/23(火) 21:34:08.78ID:3k1+3l7a
ハンガリアン記法は、入力補完のないエディタ上での可読性を高めるのに役立ってるでしょ。今でも。
371デフォルトの名無しさん
2019/04/23(火) 21:35:06.30ID:8XemHsTC
ゴミ使ってる奴のことなんか知らん
372デフォルトの名無しさん
2019/04/23(火) 21:36:10.37ID:BSgCsXpz
あれ可読性落ちるだろ
373デフォルトの名無しさん
2019/04/23(火) 21:39:11.30ID:lLaZpSEH
定期的にunsignedとsigned混在させてハマるアホをみるとハンガリアン必要だと思うわ
374デフォルトの名無しさん
2019/04/23(火) 21:40:37.34ID:lAbUfbw7
C#で入力補完のないエディタがどうとかさすがにナンセンスでは
だってvisual studio使うじゃん
375デフォルトの名無しさん
2019/04/23(火) 21:41:16.53ID:ZkNEZW45
どっちでもいいわ。
大抵の場合そんなとこに気を使わんといかんコードになってることのが問題。
376デフォルトの名無しさん
2019/04/23(火) 21:45:47.89ID:lLaZpSEH
>>375
こういうやつがそのうちハマって丸1日つぶしたりするんだよなw
377デフォルトの名無しさん
2019/04/23(火) 21:51:11.17ID:8XemHsTC
>>373
関係なくて草
378デフォルトの名無しさん
2019/04/23(火) 21:55:03.06ID:lLaZpSEH
関係あることわかってなくて草
379デフォルトの名無しさん
2019/04/23(火) 21:55:54.04ID:8XemHsTC
黙ってろゴミw
380デフォルトの名無しさん
2019/04/23(火) 21:59:25.62ID:ZkNEZW45
>>376
だから人を嵌めるようなコード書くなつってんだよばか。
381デフォルトの名無しさん
2019/04/23(火) 22:06:36.15ID:lLaZpSEH
>>380
コードの問題じゃなくて言語仕様の問題だから
こういうえらそうなくせに何もわかってないカスが一番始末に困る
382デフォルトの名無しさん
2019/04/23(火) 22:53:19.60ID:ZkNEZW45
いつの間にかハンガリアンが言語仕様になってた。。
383デフォルトの名無しさん
2019/04/23(火) 23:10:13.77ID:lLaZpSEH
ハンガリアンも防御的なプログラミングと考えたら悪くないよ
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
384デフォルトの名無しさん
2019/04/23(火) 23:27:23.37ID:8XemHsTC
てめーらはまともなIDEかエディタ使ってねえのかよ
385デフォルトの名無しさん
2019/04/23(火) 23:37:57.35ID:JKfCESEZ
むしろVSがないと何も書けない
386デフォルトの名無しさん
2019/04/23(火) 23:55:15.96ID:UPBQPhwq
VSがあっても何も書けない。
387デフォルトの名無しさん
2019/04/23(火) 23:55:30.60ID:ZkNEZW45
c++みたいに型情報ありがデフォルトの言語でハンガリアンとか二重メンテもいいとこだわ。
388デフォルトの名無しさん
2019/04/24(水) 01:00:02.97ID:pnt3hUol
前方宣言したクラスをTにしたスマポメンバでコンパイル通るときと通らないときがあって調べてたら
デストラクタがインライン(暗黙)だと駄目だとわかった
しかもこの問題が起こるのはunique_ptrのときだけでshared_ptrはデストラクタの定義に関係なく通る
わけわからんぞ
教科書に書いておいてくれ

class ClassB;
class ClassA{
public:
ClassA();
private:
std::unique_ptr<ClassB> u; // NG
std::shared_ptr<ClassB> s; // OK
}

---

class ClassB;
class ClassA{
public:
ClassA();
~ClassA(); ←これでunique_ptrもOK
private:
std::unique_ptr<ClassB> u; // OK
std::shared_ptr<ClassB> s; // OK
}
389デフォルトの名無しさん
2019/04/24(水) 07:38:59.52ID:IdP8M60W
>>388
unique_ptr<T>のデストラクタはインスタンス化するときにTが完全型であることを要求する(デストラクタで直接Tのデストラクタを呼ぶ)
unique_ptrを内包するクラスのデストラクタが暗黙だとクラス内でコンパイラによって実装されるけど、その場でunique_ptrのデストラクタを要求する
しかし、その翻訳単位内でTの定義が無ければコンパイルエラーとなる

unique_ptr<T>を内包するクラスのデストラクタがとりあえず宣言だけでもあると
実際の定義がある場所で同様の事が起こるので、その場所でTの定義が見つかればいい
その場合に定義を書かないと、コンパイラさんが適切な翻訳単位内に定義をおいてくれるみたい

shared_ptrは動的削除子のおかげでデストラクタが呼ばれるところで適切にデリータを定義し、デストラクタを呼ぶようになっているのでこの様な問題は起こらない
shared_ptr<T>のデストラクタ内ではTのデストラクタを直接呼び出すようなコードが無い
390デフォルトの名無しさん
2019/04/24(水) 18:54:26.06ID:pnt3hUol
>>389
解説ありがとう
391デフォルトの名無しさん
2019/04/26(金) 01:05:34.79ID:UW94aXeh
うーんC++プライマー8500円かぁ。本家のプログラミング言語C++第4版はもっとするし
情報量からすると安いが本一冊にポンと出すにはお高い……日本語である程度網羅的な本となるとこの2冊くらいよね
392デフォルトの名無しさん
2019/04/26(金) 19:40:01.51ID:aJMYFNVy
set<double> って int のときと同様にちゃんとソートされるんですか?
393デフォルトの名無しさん
2019/04/26(金) 20:34:04.97ID:Fns+A8Ou
NaNが無ければ大丈夫NaNじゃね
394デフォルトの名無しさん
2019/04/26(金) 20:34:22.70ID:Fns+A8Ou
NaNが無ければ大丈夫NaNじゃね
395デフォルトの名無しさん
2019/04/26(金) 22:17:06.30ID:PbDaLlJb
のちに永久保存される平成最後のスベり
396デフォルトの名無しさん
2019/04/26(金) 23:59:20.16ID:LBUDtqYL
たしかにそうだな・・いよいよ平成最後なんだな
みなさん、>>393-394 みたいな事にならないよう、気をひきしめましょう
397デフォルトの名無しさん
2019/04/27(土) 00:20:06.56ID:nrL5Mhiq
平成最後っていう言い回し使われすぎて嫌いになってきた
398デフォルトの名無しさん
2019/04/27(土) 00:23:11.48ID:v7q7vgVx
イテレータの参照を次に移すときってなんでitr++ではなく++itrなの?
399デフォルトの名無しさん
2019/04/27(土) 00:33:20.40ID:nrL5Mhiq
ヤフーでぐぐれ
400デフォルトの名無しさん
2019/04/27(土) 01:04:24.73ID:oB7jkl++
素直な実装だとitr++より++itrのほうが速いんじゃないかなあ、となんとなくみんなが思っているから
401デフォルトの名無しさん
2019/04/27(土) 01:07:57.61ID:v7q7vgVx
速度に差が出るのか
知らなかった
402デフォルトの名無しさん
2019/04/27(土) 01:35:51.19ID:KjSesqKI
インクリメント後のイテレーターの値を返す処理の実装を考えると
先の場合はインクリメントしてそのまま渡せばいいけど
後の場合はインクリメント前の値を保存しといてそれを渡さないといけないので一手間かかるから
・・なんだけど諸々の最適化とか色んな条件とか考えたらそこまで差がでるかどうかはよくわからん
403デフォルトの名無しさん
2019/04/27(土) 01:38:33.58ID:EJ6OYH9I
it++だと、戻り値をコピーしてとっておいてから、ポインタなりを進めた後にreturnする必要があるが、
++itだと、ポインタを進めた後に参照を返すだけでするからな。
404デフォルトの名無しさん
2019/04/27(土) 01:39:08.58ID:EJ6OYH9I
被ったw
405デフォルトの名無しさん
2019/04/27(土) 11:13:20.29ID:qp4sR6Ay
>>398
ite++と++iteなんて気持ちの問題
てか範囲for文使えばいい
406デフォルトの名無しさん
2019/04/27(土) 11:46:20.51ID:Tan1PMrG
>>402-405
cppcheck にかけたらちゃんと警告出るね。
407デフォルトの名無しさん
2019/04/27(土) 14:06:33.77ID:dwPa57iA
どうせ戻り値捨てるんだったら++itを選んでおいて損はない
無駄にit++を使うのは時期尚早な最不適化って奴だ
408デフォルトの名無しさん
2019/04/27(土) 19:31:57.61ID:Ht8C3PIL
C++で書くんだから後置インクリメントの方がメインに決まってんじゃん
前置は異端だ
409デフォルトの名無しさん
2019/04/27(土) 19:37:22.12ID:nrL5Mhiq
殺せ
410デフォルトの名無しさん
2019/04/27(土) 20:12:28.01ID:uerCNQ9f
++C
411デフォルトの名無しさん
2019/04/27(土) 20:53:36.82ID:hHA0b+W+
C++でいいんだよ。
規格は一歩進むけど、使ってるやつはbetter Cばかりってな
412デフォルトの名無しさん
2019/04/27(土) 20:55:05.03ID:nrL5Mhiq
++C++まだかよ
413デフォルトの名無しさん
2019/04/27(土) 22:37:09.45ID:Czz6ceI0
>>411
vectorとかstringとか使わんの?
414デフォルトの名無しさん
2019/04/28(日) 03:35:47.43ID:c2OY2Ben
CArrayとCStringだぞ
コピコンは定義されてないから自分で作るぞ
415デフォルトの名無しさん
2019/04/28(日) 11:01:20.49ID:DJV+PGkd
CArrayは、<algorithm>ヘッダーで定義された信頼性の高いユーティリティ関数を使えないのがね・・・。
416デフォルトの名無しさん
2019/04/28(日) 13:46:52.13ID:nadmD8id
>>413
この思考がbetter C
417デフォルトの名無しさん
2019/04/28(日) 14:25:38.47ID:n1RanWws
>>416
わけわからん
418デフォルトの名無しさん
2019/04/28(日) 14:29:28.69ID:c2OY2Ben
俺がBest Cだ
419はちみつ餃子 ◆8X2XSCHEME
2019/04/28(日) 14:56:12.05ID:mA4VukHK
>>415
イテレータをうまいこと定義すれば使えるやつも結構あるんじゃね?
そうでもない?
420デフォルトの名無しさん
2019/04/28(日) 15:37:56.41ID:UbqPSgHc
inconsistent begin/end types in range-based ‘for’ statement

gcc(g++) 8.2で -std=c++17オプションでコンパイルで
範囲forでこのエラーが出るんだが
begin endの型不一致の制限緩和されいるはずだよな?
原因わかる方いますか?
421デフォルトの名無しさん
2019/04/28(日) 15:49:39.60ID:4R543R/q
>>415
GetData()とGetData()+GetSize()を渡せば、とりあえず動くんじゃね?
422デフォルトの名無しさん
2019/04/28(日) 16:05:30.47ID:n1RanWws
>>420 比較演算子定義されてないとか?
423デフォルトの名無しさん
2019/04/28(日) 16:22:25.11ID:UbqPSgHc
>>422
int _n = 0;
auto __begin = _container.begin();
auto __end = _container.end();
for (; __begin != __end; ++__begin) {
_n = *__begin;
}
比較演算子はちゃんと定義してるし
上のコードは何故かコンパイル通る
だけど
for (const auto _n : _container) {
//hoge
}

は何故か通らない
424デフォルトの名無しさん
2019/04/28(日) 16:41:14.97ID:n1RanWws
範囲for文のconst autoをconst auto&かauto&&に変えるとどうなる?
425デフォルトの名無しさん
2019/04/28(日) 16:43:13.35ID:UbqPSgHc
>>424
auto&&にした時のみエラーが増えます
cannot bind rvalue reference of type ‘const long unsigned int&&’ to lvalue of type
426デフォルトの名無しさん
2019/04/28(日) 16:54:13.46ID:/ZzCGjK1
beginとendのシグニチャは?
427デフォルトの名無しさん
2019/04/28(日) 17:02:57.34ID:UbqPSgHc
>>426
using iterator = typename std;;vector<int>::iterator;
using const_iterator = typename std;;vector<int>::const_iterator;
using my_iterator = MYIterator;
my_iterator begin();
iterator end();
const my_iterator begin() const;
const_iterator end() const;
const my_iterator cbegin() const;
const_iterator cend() const;
428デフォルトの名無しさん
2019/04/28(日) 17:18:10.81ID:HBE/zmE6
これで動かん?
for (auto&& _n : _container) {
}
429デフォルトの名無しさん
2019/04/28(日) 17:28:42.95ID:UbqPSgHc
>>428
動かないです
430デフォルトの名無しさん
2019/04/28(日) 18:12:40.94ID:/ZzCGjK1
MYIteratorの実体がunsigned longみたいだけど
vector<int>::iteratorの実体がポインタだったらoperator!=の定義できなくない?
431デフォルトの名無しさん
2019/04/28(日) 18:13:25.64ID:7uO4eV2c
>>420
wandboxで再現コード作って出直すか、それができないんならエスパーに頼んだほうがいいんじゃないかな。
https://mevius.2ch.net/test/read.cgi/tech/1187922645/
432デフォルトの名無しさん
2019/04/28(日) 20:53:07.97ID:B+3vkW9O
>>423
bool operator != (〜) const ← これ付け忘れてないか?
433デフォルトの名無しさん
2019/04/28(日) 20:57:20.67ID:HwAGJ3yN
constつけ忘れは時々はまる
434デフォルトの名無しさん
2019/04/28(日) 23:15:17.87ID:UbqPSgHc
>>427
自己解決
const iteratorとconst_iteratorが一緒だと勘違いしていた
const my_iteratorではなくmy_const_iteratorを実装して返り値とすべきでした
435デフォルトの名無しさん
2019/04/29(月) 08:12:30.69ID:caHZo185
struct A{
int member;
};
struct B: A{
void run(){member = 0;}//ok
};

template<typename T>
struct TA{
T member;
};
template<typename T>
struct TB:TA<T>{
void run(){member = 0;}//NG。this->memberとするとok
};
クラステンプレートを継承してクラステンプレートを作成した場合にthisでないと継承元のメンバーが見えないのは仕様?
436デフォルトの名無しさん
2019/04/29(月) 10:32:33.68ID:ytpB6N2f
仕様
一寸前までのmsvcではなぜか通っていたけど
437デフォルトの名無しさん
2019/04/29(月) 11:47:53.29ID:atpu4K08
>>436
なんでそんな仕様になってるんだろう…
438デフォルトの名無しさん
2019/04/29(月) 12:13:25.59ID:TWBg2sM/
>>437
2phase lookupだから
最初のTB解釈時にはTAが型引数一つのtemplate classであるという情報以外使わない
だいたいTAが特殊化される可能性があるだろ
439デフォルトの名無しさん
2019/04/30(火) 10:16:07.47ID:5viqjSMx
8bitや16bitのintしか使えない環境で、
32bitなどの大きな数を扱うにはどうすれば良いですか?
変数をいくつかつなげて大きな数を表現できないかと思っているのですが、やり方が分りません。
ご存知の方いらっしゃいましたら教えて頂けると嬉しいです。
440439
2019/04/30(火) 10:20:33.67ID:5viqjSMx
補足させて下さい。
足し算、引き算は出来るようにしたいです。
可能でしたら、掛け算や割り算もできると助かります。
441デフォルトの名無しさん
2019/04/30(火) 10:25:07.05ID:l5C1eDEl
多倍長演算で検索
442デフォルトの名無しさん
2019/04/30(火) 10:45:28.19ID:Cm5pFeJF
>>438
> だいたいTAが特殊化される可能性があるだろ
なるほどそりゃそうか、サンクス
443 ◆QZaw55cn4c
2019/04/30(火) 11:43:40.55ID:iYYZTFZo
>>439-440
http://2chb.net/r/tech/1434079972/51
近々、委譲をやめて継承に戻すつもりです
あと掛け算はkaratsubaを適用できる目処がたちました
x64 に特化してインラインアセンブラ化することも考えています
444はちみつ餃子 ◆8X2XSCHEME
2019/04/30(火) 12:03:49.54ID:MGpUBTsC
karatsuba はかなり桁数が多いときじゃないと効果がないとも聞くけど
445 ◆QZaw55cn4c
2019/04/30(火) 12:09:22.58ID:iYYZTFZo
>>444
多分それは乗算FFTのことかと
446デフォルトの名無しさん
2019/04/30(火) 12:28:54.66ID:44LYo/LT
>>439
stdint.h で int_least32_t とか使えるのでは?
447 ◆QZaw55cn4c
2019/04/30(火) 13:43:58.68ID:iYYZTFZo
>>446
8bit/16bit CPU で int_least32_t とかはそもそも存在しないのでは?
448デフォルトの名無しさん
2019/04/30(火) 14:19:40.82ID:44LYo/LT
>>447
「8bitや16bitのintしか使えない」を見て long や long long はもっと大きいんじゃないの?と思ったんだよ。
「整数型」の意味で"int"って書いてたんなら、確かに存在しない環境のことを言ってるのかもしれない。
その場合は ISO C/C++ の LONG_MAX の最低絶対値の要求に準拠できないってことになるんだけど。
449デフォルトの名無しさん
2019/04/30(火) 14:19:47.17ID:gDkH0fQs
8bit pic用XCでもlongは32bitなのに
450 ◆QZaw55cn4c
2019/04/30(火) 15:03:05.44ID:iYYZTFZo
>>449
それはそれですごいインプリメンテーションですね…
8 bit PIC で 32bit int がさくさく書けちゃうとは、そのインプリメンターは根性がありますね、それか頭のねじが何本か外れていて「無理を無理と思わない人」とか…
451デフォルトの名無しさん
2019/04/30(火) 15:29:16.24ID:0LsajAP1
shortは16bit固定でlongは32bit固定でしょ。何言ってんの?
452デフォルトの名無しさん
2019/04/30(火) 16:18:35.89ID:coQMvXAj
>>451
いや、お前こそ何を言ってるんだ?
453 ◆QZaw55cn4c
2019/04/30(火) 16:37:10.66ID:iYYZTFZo
>>451
残念でした、short も long もインプリメンターが好きに実装していいのですっ!きりっ!
454さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/30(火) 16:45:08.36ID:lzNlO/OB
>>451
64-bit Linux でsizeof(long) が8だった。移植がある場合は<cstdint>使わんとあかん
455デフォルトの名無しさん
2019/04/30(火) 17:46:03.06ID:bcA0O1+B
intが16bitならISOの規格は満たしてることになるかな。

32bit以上の長い整数はクラスと演算子オーバーロードで誤魔化すか。
頑張ってもリテラル表記もダメだろうから、使い勝手は悪いよな。
456デフォルトの名無しさん
2019/04/30(火) 19:51:46.33ID:tnl21ewQ
>>451
うろ覚えだが
VC Win32bit: int 32bit long 32bit pointer 32bit
gcc Linux32bit: int 32bit long 32bit pointer 32bit -ここまでは同じ

VC Win64bit: int 32bit long 32bit pointer 64bit -int64_tで64bit整数
gcc Linux32bit: int 32bit long 64bit pointer 64bit
457デフォルトの名無しさん
2019/04/30(火) 20:17:37.41ID:YvhWBPAF
既にLP64とかLLP64とかの呼び方が存在するんだから、そっちを使おうよ
https://ja.wikipedia.org/wiki/64%E3%83%93%E3%83%83%E3%83%88#64%E3%83%93%E3%83%83%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%83%A2%E3%83%87%E3%83%AB
458デフォルトの名無しさん
2019/04/30(火) 20:34:29.38ID:4LCMFhXh
厳密なbit長が必要なときにintだのlongだの使っちゃ駄目よ
459デフォルトの名無しさん
2019/04/30(火) 20:56:09.36ID:ba2OmOyM
じゃあ何を使えばいいの?
460デフォルトの名無しさん
2019/04/30(火) 20:59:46.66ID:jq/I62+g
int_leastシリーズでは?
461デフォルトの名無しさん
2019/04/30(火) 21:02:03.72ID:tJFiug19
intの配列のラッパーのようなものから再発明すりゃーいい

class Bignumber{
int number[4];

Bignumber(const String num){
for(int i=0; i<4; i++){
number[i] = //考えるのが面倒臭い
}
}

Bignumber operator+(){
//以下、延々とオペレータオーバーロードが続く
}

};
462 ◆QZaw55cn4c
2019/04/30(火) 21:02:11.05ID:iYYZTFZo
>>459
int64_t とか int32_t とか cstdint の面々を使うしかないでしょうね…私もデフォでそうするようになりました
463デフォルトの名無しさん
2019/04/30(火) 21:08:03.86ID:0LsajAP1
あ…ありのまま 今 起こった事を話すぜ。
平成の終わりにいろんな奴からshort/longに対する認識の誤りを指摘される恥辱を味わった。
何言ってるかわからねーと思うが(以下略
464デフォルトの名無しさん
2019/04/30(火) 21:08:35.71ID:QYmLdpSV
なんかもうビットという表現すら無くそうとしてるんじゃなかった?
465デフォルトの名無しさん
2019/04/30(火) 21:19:14.38ID:l5C1eDEl
制限された環境で使える多倍長整数のライブラリくらいいくらでもありそうだけど
466デフォルトの名無しさん
2019/04/30(火) 21:42:28.23ID:ba2OmOyM
>>462
なるほど、cstdint ですか!
教えてくださりありがとうございます
467デフォルトの名無しさん
2019/04/30(火) 23:24:19.16ID:xHYWEb3z
ビット数を付けるのは、MISRA-C で決まっているだろ

int8, 16, 32
uint8, 16, 32
468デフォルトの名無しさん
2019/05/01(水) 00:05:54.61ID:rGIFhODV
C++の規格上はintは16 bit以上(ターゲットのアーキテクチャで一番自然なサイズ
、longは32 bit以上
だったと思った
469デフォルトの名無しさん
2019/05/01(水) 06:23:13.87ID:EdGuPz7E
class ClassA
class ClassB: public ClassA
class ClassA::ClassC

のときに、ClassBはClassAのサブクラスと言いますがClassCはなんと呼ぶものですか?
470 ◆QZaw55cn4c
2019/05/01(水) 06:32:09.33ID:JcO9/TOD
>>469
>class ClassA::ClassC
この意味はなんですか?
471デフォルトの名無しさん
2019/05/01(水) 06:32:44.82ID:TS5dpT59
基底クラス
スーパークラス
親クラス
ベースクラス
472デフォルトの名無しさん
2019/05/01(水) 06:56:41.43ID:q4ZM9Khf
細かいことを言えば、規格準拠の処理系でも
int32_t (ピッタリ32bit) が定義されるとは限らないのね。
int_fast32_t, int_least32_t なら定義される。

8bit単位じゃないCPUへの配慮らしいから、
普通の(この表現も危険だけど)コンピュータを使う分には
int32_t があると仮定して書いてもたいがい大丈夫だろうけど。
コンパイルエラーが出るから出たら対処、で十分かと。
473デフォルトの名無しさん
2019/05/01(水) 07:06:00.95ID:EdGuPz7E
>>470
クラス内で定義したクラスです

class ClassA {
public:
...
private:
class ClassC;
ClassC * C;
}

class ClassA::ClassC {
...
}
の場合class ClassA::ClassC からClassA::を取るとコンパイルが通りません
474デフォルトの名無しさん
2019/05/01(水) 07:25:40.44ID:shCLaGGL
「プログラミング言語C++」だと、入れ子クラス(nested class)とか
メンバクラス(member class)とか呼んでるみたい。
475デフォルトの名無しさん
2019/05/01(水) 07:36:13.31ID:EdGuPz7E
おお、なるほど
ありがとうございます
476デフォルトの名無しさん
2019/05/01(水) 09:29:42.19ID:HwrGV3PF
内部クラス(inner class)もよく聞くけど調べたらJava用語っぽいな
477デフォルトの名無しさん
2019/05/01(水) 10:28:09.06ID:imZnb7dZ
Inner Class、Java用語なのか。そう呼んじゃってたわ
478デフォルトの名無しさん
2019/05/01(水) 17:22:15.78ID:Ul5/0sra
今よみがえる構造体ネストの悪夢
479はちみつ餃子 ◆8X2XSCHEME
2019/05/01(水) 17:31:05.65ID:Gk4iJJA0
>>473-474
nested class は仕様にあるので、
これが公式な用語と思って良いみたいだね。
480デフォルトの名無しさん
2019/05/01(水) 19:23:34.42ID:DLNQH846
以前、「完全さを求めるあまり今存在する良い物を犠牲にしてはならない」という趣旨のことわざをBBCハードトークで仄聞したのだが、原典はなんだろうか?
481 ◆QZaw55cn4c
2019/05/01(水) 19:59:09.50ID:JcO9/TOD
>>480
ググってヒットしたもののうち、これについてめぐらせています(ことわざとは関係ありません…)
http://www.kt.rim.or.jp/~hisashim/gabriel/WIB.ja.html
この人(原著者)、最後まで間違ったままでいるような気がしてなりませんが、実際のところどうでしょうか
482デフォルトの名無しさん
2019/05/01(水) 22:03:28.27ID:EdGuPz7E
>>479
ありがとう
483デフォルトの名無しさん
2019/05/04(土) 17:19:13.49ID:x8LtSB02
>>480 https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good
484デフォルトの名無しさん
2019/05/06(月) 08:44:53.70ID:Omhj+R8I
ストリームの遅さは凄い凄すぎる。
ほとんどの場合、遅くても問題ないということはわかる。
でもあそこ迄遅くする必要があったのだろうか。
485デフォルトの名無しさん
2019/05/06(月) 10:41:12.07ID:ZJRraXBB
突然何?
486デフォルトの名無しさん
2019/05/06(月) 12:17:09.96ID:jqdyfBGc
3.5  ストリーム
https://sicp.iijlab.net/fulltext/x350.html

これだろう
理想的にはこうなるべきだが、技術的には未だに追いついてないだけであり、将来的には解決される

なのでC++では他のどの言語も真似してない<<や>>がある
逆に言うとストリーム・プログラミングが主流になったらC++が主流の座に返り咲く
487デフォルトの名無しさん
2019/05/06(月) 15:05:44.09ID:XjarcZ9f
今やどの言語もprintfのような書式付き文字列を指定する方式に回帰した(jsすら!)。
少なくとも書式付き出力に限れば、ストリームはプログラミング言語の中ではもう淘汰されてしまったんだと思うよ。
早いとこ、string::format()とかbasic_ostream::format()とか作ってほしいわ
488デフォルトの名無しさん
2019/05/06(月) 15:24:11.52ID:ecbY6TsO
多言語対応するためにはC#みたいに %1, %2みたいに引数を番号で指定できる書式じゃないとダメでしょ。
489デフォルトの名無しさん
2019/05/06(月) 15:30:05.12ID:HRNpJ9Fc
ストリームの精神はrangeに受け継がれて生き残るよ
だから書式はそろそろ負けを認めよう
490デフォルトの名無しさん
2019/05/06(月) 16:03:09.57ID:ZJRraXBB
どうしてprintf使わないの?
491デフォルトの名無しさん
2019/05/06(月) 16:28:48.00ID:YSlWnmwv
オーバーロードできないから
492デフォルトの名無しさん
2019/05/06(月) 16:36:53.99ID:oGUqqIoM
<<には<<なりの良さがあると思うので、ストリームというより、stringがoperator <<をサポートすれば良いと思う。
493デフォルトの名無しさん
2019/05/06(月) 16:40:04.95ID:DF3zK1Xx
文字列操作するためのインターフェイスとしては最悪だよ。
考えた奴は自分では絶対使わないで人に使わせるだけのタイプだろうな。
494デフォルトの名無しさん
2019/05/06(月) 16:45:40.32ID:Yv9FD/Sb
そもそもだけど、なんで文字って表示されるのに
<< とか %s とかこういうのが必要なの?
どの言語でもprint(a);だけで表示させればよくない?aが文字列でも整数でも小数でもさ。
引数で判断してくれよ。
495デフォルトの名無しさん
2019/05/06(月) 16:51:17.77ID:oGUqqIoM
>>493
え、そう?
文字列を連結する時に、+=と+を使い分けるより<<だけですむ方が楽だし、連結する順番も自明だし結構良くない?
std::string str;
str << "hoge" << 123 << ".txt";
みたいな。
496 ◆QZaw55cn4c
2019/05/06(月) 17:27:51.75ID:vu8V8zIe
>>492
それは私も考えていました、cerr に都度吐いているメッセージを、もう一度プログラムの最後にまとめて吐きなおす、とかをやってみたいんです…
497デフォルトの名無しさん
2019/05/06(月) 17:37:23.51ID:QULX0INn
>>495
そのやり方は引数の順序を変えられないから語順が違う言語間での翻訳で困る
498デフォルトの名無しさん
2019/05/06(月) 17:37:57.33ID:ecbY6TsO
コンストラクタの引数に出力先stringインスタンスを渡すostream派生クラスを作ればいいじゃない。
string str;
hogestream sstr(str);
sstr << "hoge" << 128;
499デフォルトの名無しさん
2019/05/06(月) 17:42:30.68ID:B4KNKrTg
別にstringstreamで良いじゃない
500デフォルトの名無しさん
2019/05/06(月) 17:42:46.83ID:B4KNKrTg
別にstringstreamで良いじゃない
501デフォルトの名無しさん
2019/05/06(月) 18:13:11.14ID:L6nFhRY+
iostreamの<<はC++の黒歴史の一つだね
502はちみつ餃子 ◆8X2XSCHEME
2019/05/06(月) 18:19:09.50ID:K/rO19sE
stream の機能はいらんからとにかく文字列に差し込むだけ出来ればいいってのなら
単に operator<< を定義すれば出来るけど……。

https://wandbox.org/permlink/dIkEh0LDZEixGoiF
503デフォルトの名無しさん
2019/05/06(月) 18:27:12.43ID:ecbY6TsO
>>499,500,501
ostream派生クラスじゃなくて独自のクラスのほうが軽量でいい。
stringインスタンスへのポインタのほかに、数値書き込み時の進数設定(oct,dec,hexを覚えておく)などをメンバ変数に持てばOK。
504デフォルトの名無しさん
2019/05/06(月) 18:58:24.90ID:oGUqqIoM
>>502
をを、なるほど、これは素晴らしいw
505デフォルトの名無しさん
2019/05/06(月) 21:02:54.05ID:ZJRraXBB
>>492
stringstream・・・
506デフォルトの名無しさん
2019/05/07(火) 19:51:10.38ID:FbrTB0S1
basic_ostream使えよっていつも思う
なんで決め打ちするのかわからない
507デフォルトの名無しさん
2019/05/08(水) 21:52:50.27ID:iQQm+nuQ
to_charsというものをみつけました。
508デフォルトの名無しさん
2019/05/09(木) 18:03:02.17ID:PdPEbd3c
b配列全てをa配列のケツにコピーするとき

std::vector<char> a;
char b[]={0,1,1,3,4};
a.insert(a.begin(),&b[0],&b[sizeof b]);

これでいいの?

&b[sizeof b]
これが死ぬほど気持ち悪いんだけど
509デフォルトの名無しさん
2019/05/09(木) 18:18:44.76ID:JXKWFyOS
そんな気色悪い書き方しなくてもこれでいいよ
a.insert(a.end(), std::begin(b), std::end(b));
510デフォルトの名無しさん
2019/05/09(木) 18:25:51.81ID:PdPEbd3c
なるほど!ありがとう
511はちみつ餃子 ◆8X2XSCHEME
2019/05/09(木) 18:44:16.05ID:IVoLxnXn
>>508-509
std::copy に back_inserter を渡す方が効率的という豆知識。
512デフォルトの名無しさん
2019/05/09(木) 18:53:31.44ID:vbHvKAwn
>>511
insertのが速いんでね?
resizeしてmemcpyになるはず
513デフォルトの名無しさん
2019/05/09(木) 23:40:45.34ID:q7ofaYCv
アルゴリズムよりvector::insertのほうが実装による最適化の余地は大きそうだな
514デフォルトの名無しさん
2019/05/10(金) 00:47:30.50ID:5C678nxv
ポインタがイテレータとして渡された時点で相手が連続バッファだってわかるからね
515デフォルトの名無しさん
2019/05/10(金) 11:00:01.95ID:KAkBQh2y
&b[sizeof b]でもstd::end(b)でもやってることは変わらないんだけどな
見映えは重要だな
516デフォルトの名無しさん
2019/05/10(金) 11:08:59.15ID:pPfi71KH
sizeof bじゃcharでしか使えないんで、そういう意味でもイケてないかも
517はちみつ餃子 ◆8X2XSCHEME
2019/05/10(金) 12:01:59.87ID:g2QrvVju
>>515
見栄えというか、名前が付いているってのはそれだけで単純にわかりやすいな。
(名前が妥当であれば。)
518デフォルトの名無しさん
2019/05/10(金) 19:02:43.61ID:UhKi+qPE
嫌儲で、東京五輪チケットのソースコードが出てるけど
C++使ってるお前らなら、こんなソースコードじゃないよね?
C++相談室 part142 	->画像>5枚
519デフォルトの名無しさん
2019/05/10(金) 19:05:10.83ID:curN/h5M
>>518
サーバーサイドあまりやってないけどこんな泥臭い書き方するのか
520デフォルトの名無しさん
2019/05/10(金) 19:05:16.55ID:TAwz/zT/
javascriptやん
521デフォルトの名無しさん
2019/05/10(金) 19:36:57.50ID:tfYAY6pz
こんなもんだろ
SIerが間違ってコンシューマ系のWeb制作を請けてしまうとこんな感じになる
522デフォルトの名無しさん
2019/05/10(金) 21:47:05.61ID:oOPMkjEw
てかこんなもの韓国に出すのね
安くなさそう
ってもしや北の方?
523デフォルトの名無しさん
2019/05/10(金) 21:53:19.07ID:oOPMkjEw
parseInt(Num).lengthって動かなそう
524デフォルトの名無しさん
2019/05/10(金) 21:57:58.16ID:TAwz/zT/
ほんまやw桁でも返ってくるのかと思ったがundefinedじゃんかw
525デフォルトの名無しさん
2019/05/10(金) 22:59:11.84ID:HK1/2Yro
型に無駄にこだわった結末がstreamと知っとくのは重要。
あの間違いを覚えとけ。
526デフォルトの名無しさん
2019/05/10(金) 23:25:31.58ID:u3uVdMgu
ゲームのシーンを管理するクラスとシーンクラスがあり、管理するクラスはシーンクラスを保持しています
シーンクラスから管理クラスのシーンチェンジを行う関数を呼び出したいのですがどうやったらいいでしょうか
シーンクラスが管理クラスのインスタンスを持ちたくありません
527デフォルトの名無しさん
2019/05/10(金) 23:30:31.35ID:0WVRNDv3
>>518
webにあげるなら難読化まではしないにしても最低限圧縮するよね
528デフォルトの名無しさん
2019/05/10(金) 23:55:31.69ID:tshfuAdx
>>526
シーンクラスに管理クラスへの参照(ポインタ)を持たせればいいんじゃないのか
529デフォルトの名無しさん
2019/05/11(土) 03:16:15.93ID:xsmcwCcm
早速情報漏洩やらかしたの?
530デフォルトの名無しさん
2019/05/11(土) 10:30:07.92ID:f5HniSEP
>a.insert(a.begin(),&b[0],&b[sizeof b]);


これ、添字オーバーしてるけどメモリエラーとかにならないの?
531デフォルトの名無しさん
2019/05/11(土) 10:54:36.87ID:RjxICFG6
>>530
イテレータ範囲のendは配列の場合最後の要素の次のアドレス
それは普通の実装ではアクセスされることはない
規格的にも最後の次の要素へのポインタだけは未定義じゃない
532デフォルトの名無しさん
2019/05/11(土) 11:55:52.83ID:Y1ZlGg0p
>>530
アクセスしてるからダメそう
533デフォルトの名無しさん
2019/05/11(土) 12:40:07.82ID:3XjGQ6E0
[]はただのアドレス計算じゃん
534デフォルトの名無しさん
2019/05/11(土) 12:42:52.29ID:DVWj7ai3
&p[N]はp + Nと同じって規格にあったっけ?
535デフォルトの名無しさん
2019/05/11(土) 12:44:31.45ID:RjxICFG6
確かに&b[sizeof b]はデリファレンスしてるわ
これはあかんそう
536デフォルトの名無しさん
2019/05/11(土) 12:56:49.51ID:FaKAPAIh
>>533
a[i]は a+i ではなく *{a+i}
537デフォルトの名無しさん
2019/05/11(土) 13:12:17.25ID:2v2BzL6t
経験上出来るプログラマーは言語オタクが多いイメージ?(ただし浅い)
538デフォルトの名無しさん
2019/05/11(土) 18:44:16.82ID:fU686pnk
&*pはデリファレンスなしで単にpと評価するってどっかで特別に決められてなかったっけ?
539デフォルトの名無しさん
2019/05/12(日) 06:58:46.18ID:x4ccFx6b
>>530
int a[5];
int *p = &a[5];
というコードが有効、つまり
「配列の最終要素の次の要素」(現実には存在しないデータ)のアドレスを取れる、
という仕様から、この場合は許される、というのが >>531 の指摘か。
一般的に >>538 が成り立つなら便利だけど、調べ切れなかった。

流れの元になった >>508 を見返したら、
a.insert(a.begin(),&b[0],&b[sizeof b]);
これだと b[] の内容はベクタ a の先頭に挿入されちゃうね。
540デフォルトの名無しさん
2019/05/12(日) 07:43:52.68ID:2y1+p9UL
>>530
>>a.insert(a.begin(),&b[0],&b[sizeof b]);
>>

>これ、添字オーバーしてるけどメモリエラーとかにならないの?

508だけど、これは
a.insert(a.begin(),&b[0],&b[sizeof b]);

こっちの間違いです。ごめんなさい。
a.insert(a.end(),&b[0],&b[sizeof b]);

&b[sizeof b]);
この部分は

b+sizeof(b)
これなら問題ない感じ?
どちらでも動くけど、たまたまいてる可能性捨てきれないから不安なんだよね。

実際のソースはsizeof(b)がbに格納されているデータのサイズを示していて、

char b[256];
int s = read( fd, b, sizeof b);

a.insert(a.end(),&b[0],&b[s]);

みたいな感じで書いてます。
んで、b最大数来た場合にちゃんと動くか気になったというわけっす。

int s = read( fd, b, (sizeof b)-1);
無難にこれの方がいいですかね?
541デフォルトの名無しさん
2019/05/12(日) 11:19:05.13ID:k8bUqGvO
>>539
>int *p = &a[5];
これは多分だめで、ポインタ値としての存在なら許される
int *p = a+5;
542デフォルトの名無しさん
2019/05/12(日) 11:53:09.39ID:nuZIUjqi
ややこしいからoperator <<を定義しようw
543デフォルトの名無しさん
2019/05/12(日) 15:25:00.10ID:8/5ODvoI
VC++だと
std::vector<T> a; &a[a.size()]はoperator[]のassertionに引っかかるね
544デフォルトの名無しさん
2019/05/12(日) 22:25:11.86ID:yr8YjJOU
std::transformって並列処理されてますか?
545デフォルトの名無しさん
2019/05/12(日) 23:20:05.82ID:jFoQmc6B
c++17のparallel版使えば並列実行されるかもしれない
546デフォルトの名無しさん
2019/05/13(月) 01:24:36.27ID:RKe/NLvg
visual studioでC++17にしたけどいまいち並列版の使い方が分からなかった
普通にfor回すのと、OpenMP使ってfor並列化するのと、transform(非並列)使うの比較したら
OpenMP>普通にfor≧transform だった
547デフォルトの名無しさん
2019/05/13(月) 20:49:38.54ID:YS57w6Jq
おとなしくpthead使えよ。
548デフォルトの名無しさん
2019/05/13(月) 20:56:12.40ID:WUu3P+2G
非並列使ったならそりゃそうなるだろ
549デフォルトの名無しさん
2019/05/16(木) 02:02:33.17ID:1v50lv4I
struct AとAを継承したstruct Bがあって
Aの内容をBの共通部分にコピーする方法ってないですか?
A a;
B b = a;
みたいにしたいんですけど親を派生先にキャストはできないので困ってます
550デフォルトの名無しさん
2019/05/16(木) 02:06:57.91ID:mZDDPYlt
struct B : public A
{
B* operator=(const A& a){ this->hoge = a.hoge;}
};
これ初期時にも使えるんかな
551デフォルトの名無しさん
2019/05/16(木) 02:25:05.62ID:1v50lv4I
コピーコンストラクタが実装できたとしてメンバ変数は1個ずつコピーするしかないですかね
552デフォルトの名無しさん
2019/05/16(木) 02:28:08.55ID:mZDDPYlt
スライシングをさせるとか?
安全に?スライシング起こす方法ってあったっけな?
なんか危ういからやろうともしなかったが
553デフォルトの名無しさん
2019/05/16(木) 06:25:17.13ID:/dAesd8e
cloneメソッド用意するとか
554デフォルトの名無しさん
2019/05/16(木) 06:31:42.80ID:ebJ8HHSX
>>549
初期化時は普通にコンストラクタ初期化リストで A(a) って書けるでしょ。残りのメンバをどうするのか知らんけど。
代入なら static_cast<A&>(b) = a か b.A::operator=(a) で済みそう。
555デフォルトの名無しさん
2019/05/16(木) 06:33:37.60ID:C3C4SHXA
普通にコンストラクタかオペレーター作ればいいんじゃね
B::B(const &A)
B::operator =(const &A)
A::operator B()
雑なキャストでよければdynamic_cast<A>でおk
556デフォルトの名無しさん
2019/05/16(木) 06:38:27.18ID:C3C4SHXA
↑dynamic_cast<B>の間違い
B b = dynamic_cast<B>(a);
557デフォルトの名無しさん
2019/05/16(木) 11:40:14.21ID:74mGoL8y
>>551
sturctでまとめればデフォルトコピーコンストラクタが使えるけどね。
あとはintとかPODオブジェクトだけだったらmemcpyしちゃうとかも、俺はたまにやるなw
558デフォルトの名無しさん
2019/05/16(木) 17:20:00.24ID:PgzYowjZ
549です
解決しましたありがとうございます

以下のように書いたら思っていたことが出来ました
(派生先のコンストラクタで親のデフォルトコピーコンストラクタ呼べるの知りませんでした)
代入は現状使う予定がないので大丈夫です
B::B(const &A a) : A(a) {}
559デフォルトの名無しさん
2019/05/16(木) 18:17:29.46ID:mr2QiBZl
その内容だったら=defaultでいいよ
560デフォルトの名無しさん
2019/05/16(木) 21:32:58.41ID:/aEDSlbd
引数付きコンストラクタって、=default使えるの?
561デフォルトの名無しさん
2019/05/16(木) 22:09:55.18ID:jJO9F8Je
使えないよね
うかうかっと読み過ごしてたわw
562デフォルトの名無しさん
2019/05/18(土) 13:00:29.63ID:M54jyEoh
大本営がおるで!!!
563デフォルトの名無しさん
2019/05/19(日) 21:52:57.08ID:sHpfouee
厳密にはC++の質問になるのかよく分からないんですが……
C++プライマーで勉強しててconstexprの部分にさしかかったんですけどコンパイル時評価、コンパイル時に評価される……みたいなことが書いてあるんですがこれの意味がいまいちよくわかりません
実行時評価という言葉も見られるんですがそれぞれの違いとそもそも評価ってどういう処理のことなんでしょうか
それとそもそもconstexprの使いみちが分かりません

よろしくおねがいします。
564デフォルトの名無しさん
2019/05/19(日) 22:10:21.84ID:H7yZimvS
>>563
評価=機械語による演算。
コンパイル時評価とは、コンパイラ(PCなど)が演算してその結果を成果物に出力すること。
実行時評価とは実行機(スマホなど)でプログラム実行時に演算して利用すること。
565デフォルトの名無しさん
2019/05/19(日) 22:21:54.17ID:Jw8g2++w
constexprってのは#defineの置き換えのために生まれたんだよ
C++11以前はenum使ってたんだけどなんかかっこわるいから専用のキーワードが出来たってことさ
566デフォルトの名無しさん
2019/05/19(日) 22:26:05.40ID:yh9Mbv1R
1+2を計算するアプリ作るとするじゃん?
constexpr int a = 1 + 2;って書くじゃん?
でもこれaが3なの分かりきってるじゃん?
アプリをインストールした世界中のスマホでいちいち1+2=3って計算するの資源の無駄じゃん?
だからそういうコードを書いてコンパイルするとコンパイラが最初から「a=3」って埋め込んで世界資源の浪費を防ぐんだよ
これがコンパイル時評価

実行時評価は普通の電卓アプリがやってること
ユーザーが計算したいのは1+2か5×5かlog123456789かは使われてみるまでわからないので、おとなしくスマホのCPUと電池を使って計算する
これが実行時評価
567デフォルトの名無しさん
2019/05/19(日) 22:27:31.23ID:c0f8nIXT
const int n = 5;
const int m = n * 100;

要するにこうするとmを計算してくれる
568デフォルトの名無しさん
2019/05/19(日) 22:31:08.95ID:tquD1oX1
別にビルド構成に組み込めば済む話じゃね?くだらないな。
569デフォルトの名無しさん
2019/05/19(日) 22:51:01.09ID:HuWon3wi
そんなことしなくてもソースコード中に普通のコードと一緒に書けるから
570デフォルトの名無しさん
2019/05/19(日) 23:25:27.63ID:L0Ufwo4O
constexprはtemplateと組み合わせたときに真価を発揮する。
templateを実体化するときに、型や非型引数に加えて、変数や関数なども活用して複雑な条件をつけ、
実体化するコードをカスタマイズできるようになるからね。
571デフォルトの名無しさん
2019/05/19(日) 23:34:14.21ID:+2TJ1Pbf
それなんかわかりやすい具体例コード出来ます?
572デフォルトの名無しさん
2019/05/19(日) 23:36:46.24ID:oSFlthhy
constexpre定数って配列の要素数に出来るということ以外に本質的な意味ってあるの?
そのへんがよくわからない
573デフォルトの名無しさん
2019/05/19(日) 23:37:52.41ID:yh9Mbv1R
「constexpr 中3女子」でぐぐると変態コードがたくさん出てくるよ
574デフォルトの名無しさん
2019/05/19(日) 23:38:23.88ID:oSFlthhy
配列の要素数と非型テンプレートパラメータね
575デフォルトの名無しさん
2019/05/19(日) 23:38:52.26ID:L0Ufwo4O
分かりやすいかどうかは知らないが、以前ここ?で誰かが紹介していたnameofライブラリとか?
https://qiita.com/ta_dragon/items/1828ceb16bc8733526e1
c++17で導入されたstring_viewを使った文字列操作で、enum定義を文字列化してしまうってやつ。
576デフォルトの名無しさん
2019/05/19(日) 23:41:56.16ID:yh9Mbv1R
constexpr int f();

constexpr int a = f(); //OK
const int b = f(); //NG

違いってこれだけでしょ
577デフォルトの名無しさん
2019/05/19(日) 23:42:38.19ID:yh9Mbv1R
あれ?違うわ
無視して
578デフォルトの名無しさん
2019/05/19(日) 23:56:10.59ID:vshkspmO
変態じみたものとしてはコンパイル時cコンパイルがあるな。
http://kw-udon.hatenablog.com/entry/2016/12/03/201722
579デフォルトの名無しさん
2019/05/20(月) 00:13:59.34ID:osDMULGu
constexpr以前でも定数伝搬とか意識して書いてたところはあったはず、でもそれが本当に定数になっているのかはアセンブリ見ないと分からない
constexpr導入によってconstexpr変数の初期化は確実にコンパイル時に実行される、できなければエラー
同様の理由でconstexpr関数(コンパイル時にも実行可能な関数)が導入される
580デフォルトの名無しさん
2019/05/20(月) 00:26:47.75ID:TOLwHecl
アセンブリ見なくても生成コード見ればよくね
581デフォルトの名無しさん
2019/05/20(月) 00:36:37.94ID:osDMULGu
コンパイラのAST見るって事?
より困難では
582デフォルトの名無しさん
2019/05/20(月) 03:36:27.47ID:68OGLTNB
単なる#define定数の代わりとしても名前空間が使える分価値はあるし
例えばconstexprでCRCを計算すれば文字列switchが可能になるとか難しいけど便利ではある
583デフォルトの名無しさん
2019/05/20(月) 08:10:49.52ID:lEqHTAQ5
それ普通にヘッダーファイル生成コードでも書いた方がいいだろ。。
そっちのが明らかに可読性、デバッグのしやすさ上だし。
こんなもんありがたがってるのはどうせmakeもまともに書けない連中だろう。
584デフォルトの名無しさん
2019/05/20(月) 11:52:26.23ID:mpvIl0KS
そうやって何十万ものヘッダファイルを生み出した例を知ってる。
585デフォルトの名無しさん
2019/05/20(月) 12:32:04.02ID:Eu4SldXI
>>583
c++の規格内で完結するのと、make等の外部ツールを使うのとでは移植性が全然違うよ。
586デフォルトの名無しさん
2019/05/20(月) 12:47:56.71ID:DC309puZ
同じ記述でソースコード内に式が書け関数が使えるメリットは可読性に大きく影響するだろうに
587デフォルトの名無しさん
2019/05/20(月) 16:29:52.79ID:MZiC0WHg
外部ツール使えばいいはさすがに草
588デフォルトの名無しさん
2019/05/20(月) 18:36:37.69ID:a9u60dH4
configure なんて外部ツールを使ったソースファイルやヘッダーファイルを生成しまくりですが、新しい車輪の再発明ですか?
589デフォルトの名無しさん
2019/05/20(月) 19:28:03.54ID:MZiC0WHg
configureできる純粋なWindowsはよ
590蟻人間 ◆T6xkBnTXz7B0
2019/05/20(月) 19:31:01.36ID:m/UtbRiI
configureは古い。GitHubやるならCMake一択。
591デフォルトの名無しさん
2019/05/20(月) 19:35:30.06ID:ZjVO7Mes
CMake使ってるけど、いろいろ使いにくい。
592デフォルトの名無しさん
2019/05/20(月) 19:47:55.36ID:MZiC0WHg
configureより100億倍マシだとは思うけど
それはそうとしてwindowsでpkgconfig使わせて
593デフォルトの名無しさん
2019/05/20(月) 20:04:37.87ID:IyGiubcZ
CMakeって使いづらいよね
ターゲットの属性指定するのに
属性が先にくるんだもの
594デフォルトの名無しさん
2019/05/20(月) 21:22:56.75ID:VWEIYE4F
Visual Studio(C#)のプログラミングに関する質問です。

インクルードする2ファイルが、双方のクラスを互いに必要とするケースにおいて、
コンパイルが通らなくて困っています。(当たり前なのですが…)

【Aファイル】
クラスAの定義{
クラスBの使用(インスタンス作成、メソッド利用)
}

【Bファイル】
クラスBの定義{
クラスAの使用(インスタンス作成、メソッド利用)
}

【全体インクルードファイル】
#include Aファイル
#include Bファイル

【コンパイル結果】
Bクラスが存在しません(Aファイルにて)

【質問】
お互いにクラス定義を必要とする場合、
★具体的に★どのような実装をすれば良いのでしょうか?
595デフォルトの名無しさん
2019/05/20(月) 21:26:14.46ID:lEqHTAQ5
本当に複雑な計算が必要な定数なんてそんな多くないだろうに。。
やっぱバカしかいねーのな。。
596デフォルトの名無しさん
2019/05/20(月) 21:28:50.53ID:TjPZT1E7
具体的には実装回答しないけど前方宣言
597デフォルトの名無しさん
2019/05/20(月) 21:29:24.12ID:68OGLTNB
>>594
C#?
598デフォルトの名無しさん
2019/05/20(月) 22:43:14.24ID:VWEIYE4F
>>596
前方宣言ありがとうございます。猛烈に調べてみます。
599デフォルトの名無しさん
2019/05/20(月) 23:58:43.37ID:ZjVO7Mes
indexという構造体を作ってstd::vectorにぶち込んだらgcc8でエラーになるのだが。
ダメなん?
600デフォルトの名無しさん
2019/05/21(火) 00:00:39.50ID:nvUZjTIz
ideoneでやってみると通るんだけどな。
そのままコピペしてもgcc8だと通らない。
なんやねんこれ。
601デフォルトの名無しさん
2019/05/21(火) 00:42:44.99ID:R14wVX0G
ソースなりエラーメッセージなり出せや
602デフォルトの名無しさん
2019/05/21(火) 00:53:39.04ID:qC5qbLDj
どうせそのクソ構造体コピーもムーブも出来ないんだろ
定義貼ってみ
603デフォルトの名無しさん
2019/05/21(火) 01:07:06.57ID:XM845/F7
wandboxの8系統でもダメなん?
604デフォルトの名無しさん
2019/05/21(火) 09:38:36.10ID:0u73mqpq
deleteした後のポインタに0やnullを入れることを「仕様」にしないのは何か理由があるんですかね?
605デフォルトの名無しさん
2019/05/21(火) 09:42:27.71ID:BlBHQ5S4
たとえばポインタのコンテナを扱ってる場合、
deleteしたポインタをコンテナから消そうと思ったら
その仕様だと逆に不便じゃね
606デフォルトの名無しさん
2019/05/21(火) 09:45:22.82ID:2HB0EGuO
>>604
・ポインタが右辺値だったら意味ないから
・今どきもうユーザーコード内に new, delete は出てこないから
607デフォルトの名無しさん
2019/05/21(火) 10:02:39.86ID:/yR1kHAO
>>604,606
そんな貴方にスマポ。具体的には unique_ptr, shared_ptr。
608デフォルトの名無しさん
2019/05/21(火) 10:26:36.33ID:wU6Ws5fl
>・今どきもうユーザーコード内に new, delete は出てこないから
こういう決めつけはどうかと思うんだよなぁ
とか言ったらまた荒れるんだろうな・・

というか理由は単にゼロオーバーヘッドだろ
609デフォルトの名無しさん
2019/05/21(火) 10:58:39.79ID:9RXBRo+g
>>592
configureのが楽
610デフォルトの名無しさん
2019/05/21(火) 11:47:39.94ID:2HB0EGuO
>>608
出てこないのが理想なんだから>>604のような機能は逆行
ってことだろ
611デフォルトの名無しさん
2019/05/21(火) 12:08:41.91ID:om3WDsPR
ポインタを一時変数に代入していた時点で意味無くなるし
void*とかで持っていたらどうするつもりなんだか
612デフォルトの名無しさん
2019/05/21(火) 17:11:33.15ID:OTKORriw
スマポでdeleteは排除できてもnewはいるだろ
613デフォルトの名無しさん
2019/05/21(火) 18:14:30.34ID:m8UBXeEG
make_sharedに渡すのってT()がいいのかnew T()がいいのか分からない
614デフォルトの名無しさん
2019/05/21(火) 18:21:48.26ID:JOJ6V6qz
どっちも普通は渡さないだろ?
615デフォルトの名無しさん
2019/05/21(火) 19:18:35.44ID:/yR1kHAO
マ的にはナマポは生ポインタです?
616デフォルトの名無しさん
2019/05/21(火) 22:20:27.03ID:p9O37jGc
ヌルーポ
617デフォルトの名無しさん
2019/05/22(水) 00:47:45.78ID:a4QDMpfS
>>602
それが、indexという名前がダメらしくて、アンダースコア一本付け足すだけで通るんだよ。
618デフォルトの名無しさん
2019/05/22(水) 00:51:52.15ID:wNVmTKK9
その環境の標準ヘッダを書き換えたバカがいるとかじゃね
619デフォルトの名無しさん
2019/05/22(水) 06:17:49.28ID:t1pLQv56
>>617
>>601
620デフォルトの名無しさん
2019/05/22(水) 11:05:25.06ID:bpe9UG2z
>>613
コンストラクタのパラメータ渡すもんやろ
621デフォルトの名無しさん
2019/05/22(水) 17:38:02.73ID:754wR9Ar
WindowsのSleep関数みたいな変態マクロが実装されてるとか
622デフォルトの名無しさん
2019/05/22(水) 19:05:38.03ID:HXP4tOE0
さっさと元ソースとgcc -Eとgcc -dM -Eの結果貼るか死ぬかどっちか選べ
623デフォルトの名無しさん
2019/05/22(水) 19:07:58.37ID:0oi9wkAH
C++ってゲーム業界以外で使われてるの?
624デフォルトの名無しさん
2019/05/22(水) 19:10:27.02ID:wNVmTKK9
使われているだろ
少なくともGoogle、アップル、MSでは主要言語のひとつだよ
625デフォルトの名無しさん
2019/05/22(水) 19:22:56.56ID:E7rKivNV
メーカーの募集ページでも見れば?
626デフォルトの名無しさん
2019/05/22(水) 19:31:09.11ID:HXP4tOE0
今をときめく人工知能のライブラリのほとんどはPythonの皮+C++のコアっていう構成だぞ
627デフォルトの名無しさん
2019/05/22(水) 20:00:24.67ID:KVrYPX3F
>>623
テレビ、宇宙、鉄道路線の最短経路
628デフォルトの名無しさん
2019/05/22(水) 20:09:03.46ID:tAHmoj8N
あれだけPython重点だったChainerもmasterにC++の自動微分マージしたしな
629デフォルトの名無しさん
2019/05/22(水) 21:03:12.50ID:a23nlY2Z
>それが、indexという名前がダメらしくて、アンダースコア一本付け足すだけで通るんだよ。
心当たりがありすぎるw
これは外には出せんなw
630デフォルトの名無しさん
2019/05/22(水) 21:12:32.67ID:omtGQ9bF
>>627
漠然としすぎでよくわからんのだがw
おれの周りだと、重い演算部分だけc/c++でライブラリ化するのはあるけど、
アプリを作るのはないな
c++使える人少ないし
631デフォルトの名無しさん
2019/05/22(水) 21:31:18.91ID:G1WjNUUx
>>623
仮想通貨
632デフォルトの名無しさん
2019/05/22(水) 22:42:45.38ID:u7nmxvF3
金毘羅とコンパイラ、どのくらい互換性あるの?
633デフォルトの名無しさん
2019/05/23(木) 00:25:21.49ID:uUKvPk1Q
魂斗羅くらいじゃない?
634デフォルトの名無しさん
2019/05/23(木) 03:17:45.28ID:tfvbct5D
コンプラの前では何れも塵芥の様なものよ
635デフォルトの名無しさん
2019/05/23(木) 10:36:11.44ID:NhdF0b/F
>>497
printfも語順変えられへんで…
636デフォルトの名無しさん
2019/05/23(木) 11:31:22.42ID:6zCIietC
>>635
printfはフォーマット文字列を言語ごとに切り替えればいいけど、streamはハードコーディングになってしまう
637デフォルトの名無しさん
2019/05/23(木) 11:47:25.42ID:HpI/x5tV
具体的にどんな場面で困るのか例を挙げてもらうと助かる
638デフォルトの名無しさん
2019/05/23(木) 12:02:43.15ID:asp3Rd8H
多言語対応とか?
639デフォルトの名無しさん
2019/05/23(木) 12:58:07.89ID:NhdF0b/F
>>636
語順変えられへんわ、引数がハードコーディングだわで
printfも変わらんやろっての
640デフォルトの名無しさん
2019/05/23(木) 12:59:15.62ID:NhdF0b/F
>>638
streamでも文字列をリソース使えばいいだけやで
641デフォルトの名無しさん
2019/05/23(木) 13:22:43.81ID:ovhRah7H
「Aさんが所有するBをCしますか?」という文章を多言語対応すると、ABCの並びを各言語に応じて変える必要があるでしょ。
書式指定で引数並びを変えることができないprintf()やiostreamでは対応不能。JavaやC#のような対応が正解。
642デフォルトの名無しさん
2019/05/23(木) 14:02:03.14ID:PBFS7PSY
>>640
streamだと文字列リソースが細切れになってもとの文字列が何だったかよく分からず翻訳者にそのまま渡せないって問題はあるかも。

いずれにしても、c++の文字列formattingは更新が必要
643デフォルトの名無しさん
2019/05/23(木) 14:25:55.23ID:Y2p7ALG3
string_view、constexpr、templateを使えば、C#風のフォーマットも実現できそうな気はする。
644デフォルトの名無しさん
2019/05/23(木) 15:31:58.20ID:59bc+gd2
とうとうstreamへの何癖もここまで頭おかしくなったか
645デフォルトの名無しさん
2019/05/23(木) 16:05:52.24ID:ovhRah7H
Do you C B that A owns?
646デフォルトの名無しさん
2019/05/23(木) 18:20:07.46ID:NhdF0b/F
>>643
それはコンパイル時に決定してしまうからだめだな。
ロケール設定に合わせて動的に変えられる仕組みではない
647デフォルトの名無しさん
2019/05/23(木) 18:37:21.77ID:NhdF0b/F
型指定文字間違えたら簡単に飛ぶscanf系
飛ばないけど書式文字列と書きたい値の型合わせが必要なprintf

まー、ostreamは数値の精度指定とか面倒っちゃー面倒だが
目くじら立てて本質的に駄目って話と違うからなぁ。
648デフォルトの名無しさん
2019/05/23(木) 18:39:20.26ID:9reHFHA1
結局、eof までデータを読んで vector に格納する、の正しいやり方が分からない。
リードエラーまで気にするのはやり過ぎだとしても、空行がある場合などにも正しく動くものを作るにはどうするべき?
下のコードでダメな場合ある?
駄目じゃないとしたらもっと洗練されたやり方ある?

vector<double> invec(string filename){
 vector<double> A;
 ifstream fin(filename);
 double temp;
 while(not fin.eof()){
  fin >> temp;
  A.push_back(temp);
 }
 return A;
}
649デフォルトの名無しさん
2019/05/23(木) 18:45:48.03ID:GRcYBCGD
そのコードじゃむしろどのパターンでもダメじゃね
最後がダブって格納される
while(fin>>temp) {
A.push_back(temp);
}
650デフォルトの名無しさん
2019/05/23(木) 18:57:16.20ID:9reHFHA1
>>649
そのwhileの条件ってtempにEOFが入ったら抜けるってこと?
double型の変数にEOFを入れたら何になるの?
651デフォルトの名無しさん
2019/05/23(木) 19:08:43.60ID:0JW0v20n
istreamのoperator boolはEOFでもtrue返すから無限ループだぞ
652デフォルトの名無しさん
2019/05/23(木) 19:20:55.28ID:9reHFHA1
じゃあ

while(fin>>temp, (int)temp!=EOF) {
A.push_back(temp);
}

は?
653デフォルトの名無しさん
2019/05/23(木) 19:42:12.63ID:GRcYBCGD
>>651
いやdoubleの読み込み失敗するからfailになるだろ
空白読み飛ばすだけならeofしか立たないが
654デフォルトの名無しさん
2019/05/23(木) 19:43:51.77ID:fqmO3Q5/
any や、Automaticallyで、機械にやらせてる。
655デフォルトの名無しさん
2019/05/23(木) 22:36:29.02ID:9reHFHA1
>>653
> そのwhileの条件ってtempにEOFが入ったら抜けるってこと?

ではなくて、doubleが読み込めなかったら false になるのですね
ありがとうございます
656デフォルトの名無しさん
2019/05/24(金) 00:15:40.41ID:oGkYW18h
質問です。
単純なforループ処理の途中でエンターキーを押したらストップ、もう一度押すとスタートみたいなことをするにはどうしたらいいですか?
657デフォルトの名無しさん
2019/05/24(金) 01:06:43.34ID:Ph/OCthx
対象がコンソールか、ウィンドウかで違う。

conio.h使える環境で、コンソールだったら、_kbhit()と_getch()使えば実現はできるが、ウィンドウプログラムの場合はウインドウの作法に則る。

コルーチンは言ったら、少し楽になる予定??
658デフォルトの名無しさん
2019/05/24(金) 04:01:03.95ID:qG9wsGG5
>>656
fiber使うとか?
APIが環境によって違うのが難点だがコルーチンより融通効くし。
659デフォルトの名無しさん
2019/05/24(金) 09:10:37.78ID:oGkYW18h
>>657
コンソールです
660デフォルトの名無しさん
2019/05/24(金) 10:25:59.77ID:Ph/OCthx
>>659
MITライセンスな〜〜っ。
暇だから書いたけど、自分の環境のVS2017だとこれしかわからない。
環境依存ちょびっとあるからご注意。

#include <iostream>
#include <cstdint>
#include <limits>
#include <thread>
#include <conio.h>

int main() {

for (std::intmax_t i = 0; i < std::numeric_limits<std::intmax_t>::max(); i++) {
std::cout << i << "\r";
if (_kbhit()) {
_getch();//output first key in.
std::cout << "Wait key in."<<"\r";
_getch();//wait next key in.
std::cout << " "<<"\r";
}
}

return 0;
}
661デフォルトの名無しさん
2019/05/24(金) 10:26:55.58ID:Ph/OCthx
あ、そうだった。空白が整形されるの忘れてた。
662デフォルトの名無しさん
2019/05/24(金) 10:52:12.22ID:Ph/OCthx
>>660
スレッドスリープするかもと思って、threadのヘッダーはいってるけど。使わなかったのを忘れていた。
663デフォルトの名無しさん
2019/05/24(金) 14:04:30.69ID:ff7E+a9X
独自定義したクラスAのlistに、プッシュした場合、新しいインスタンスが作られる?それともアドレスの代入??

list<A> List=new.....;
A a();
List.push(a);
664デフォルトの名無しさん
2019/05/24(金) 14:08:18.47ID:G1wpIN0H
インスタンス
665デフォルトの名無しさん
2019/05/24(金) 14:30:44.82ID:h/Cubnb+
>>649,653,655
俺は個数指定して読み込むということしかやったことないんだが、この方法って他の型でも使えるの?
int だったら
> doubleが読み込めなかったら false になる
というのが成立しないように思えるのだが
666デフォルトの名無しさん
2019/05/24(金) 14:38:19.15ID:QfLs460A
ユーザー定義型なら演算子をオーバーロードするんやで
667デフォルトの名無しさん
2019/05/24(金) 14:42:16.00ID:FKmlSCsi
>>665
doubleじゃなかったら、じゃなくてEOFを読んだらfalseになるんだろ
こういうのお洒落なやり方だと思うがなんとなく怖いから俺も個数決めてやってるよ
スタンスの問題
668デフォルトの名無しさん
2019/05/24(金) 15:28:08.39ID:YkjJvwKv
まあテキストファイルと言っても普通はフォーマットがもっと厳密に決まっているから、一行読み込んでパースしてって感じでやるな
エラー起こったときにこれじゃ行数すら出せないし
669デフォルトの名無しさん
2019/05/24(金) 15:34:20.96ID:YkjJvwKv
その場合でもgetlineをwhileの中にいれておけば期待した動作になる

最後の行に改行があろうが無かろうがうまくいく
670 ◆QZaw55cn4c
2019/05/24(金) 20:38:16.34ID:0N6+tWvP
>>663
A のコピコンが走りますよ!
671デフォルトの名無しさん
2019/05/29(水) 18:18:13.81ID:hag6qvkh
mainより上で

struct test{int x=0};
struct test obj;
obj.x=99;

ってやると三行目がエラーなんだけどなんでダメなん?
技術的になんでダメなのか教えてください
672 ◆QZaw55cn4c
2019/05/29(水) 18:41:42.94ID:8RGCI467
>>671
関数の外で
a = 2;
とか
a = a + 1;
は書けません
673デフォルトの名無しさん
2019/05/29(水) 19:12:40.01ID:hag6qvkh
ありがとございます
674デフォルトの名無しさん
2019/05/29(水) 19:17:03.50ID:Rr995jUT
DOUBLEのSACHIKO。
675デフォルトの名無しさん
2019/05/30(木) 21:51:31.71ID:z7Zp5hm5
戻り値だけのオーバーロードしたいんだけど、むり?
676デフォルトの名無しさん
2019/05/30(木) 21:57:39.88ID:WLaiWVCj
無理です
677蟻人間 ◆T6xkBnTXz7B0
2019/05/30(木) 22:06:45.23ID:rhzd9E8p
天婦羅
678デフォルトの名無しさん
2019/05/30(木) 22:27:06.43ID:rl6Tun4v
どうやって使うつもりなのかな
679デフォルトの名無しさん
2019/05/30(木) 22:59:49.76ID:aiZ1ZVIC
T f();
auto a = f<Type>();
680デフォルトの名無しさん
2019/05/30(木) 23:10:37.32ID:rl6Tun4v
>>679
これはよくやる
681デフォルトの名無しさん
2019/05/30(木) 23:12:17.72ID:rl6Tun4v
auto a=std::make_shared<A>();
みたいな感じで
682デフォルトの名無しさん
2019/05/30(木) 23:16:18.93ID:z7aQRPDh
実数と複素数のジェネリックプログラミングってどうやるの

実パラメータの数が違うから、結局ほとんどの機能を特殊化してるんだが
683蟻人間 ◆T6xkBnTXz7B0
2019/05/30(木) 23:19:08.26ID:rhzd9E8p
>>682
std::complexとテンプレートを
684デフォルトの名無しさん
2019/05/30(木) 23:19:32.75ID:s4B+etfT
複素数と実数をジェネリクスでまとめると大抵死ぬぞ。
行列ライブラリなんかも基本別関数だから。
685デフォルトの名無しさん
2019/05/30(木) 23:40:09.00ID:z7aQRPDh
>>684
やらないのが正解ってことで良いですか?
686デフォルトの名無しさん
2019/05/31(金) 19:07:02.02ID:5tY3IGQl
ジェネリック医薬品。
687デフォルトの名無しさん
2019/05/31(金) 20:46:39.86ID:SYuh0ZxQ
>>685
そう。やらないのが正解。
688デフォルトの名無しさん
2019/05/31(金) 22:32:45.09ID:YZ9ZViZw
なんでよ 理由を教えてくれ
689デフォルトの名無しさん
2019/05/31(金) 22:41:35.25ID:8uAssd9+
理由?やる理由がないからだよ
できるからというだけの理由で無駄な汎用性を持たせようとして無駄に複雑で使いづらい糞が生み出されて結局使われないパターンを嫌というほど見てきたわ
690デフォルトの名無しさん
2019/05/31(金) 22:51:46.17ID:YZ9ZViZw
うーんそういうもんかね

ある型について定義したジェネリック関数群全てを特殊化するはめになって
もうこれ型パラメータの意味ほぼねぇな
ってなったことはあったけど
691デフォルトの名無しさん
2019/06/01(土) 01:01:06.10ID:jOO/UBvi
パワー系がいて、通り過ぎる人が眼鏡をかけていれば「メガネ、メガネ」、胸の大きい女性なら「オッパイ、オッパイ」と特徴を呟いていたんです。
私は「ヒゲ」と言われたのですが、ひげ生やしていないんですよね。
誰かこの暗号解ける?
692デフォルトの名無しさん
2019/06/01(土) 01:21:48.47ID:amrEPTXm
>>690
今の複素数の例がそれそのものじゃん
693デフォルトの名無しさん
2019/06/01(土) 01:28:26.64ID:vdsZQvk5
>>692
一応関数インターフェースの統一ができるから…
694デフォルトの名無しさん
2019/06/01(土) 01:34:23.92ID:5ncHXmxx
std::complex使えばおおよその計算はdoubleその他と共通化できない?
虚部実部を見に行かない範囲ならなんとか
695デフォルトの名無しさん
2019/06/01(土) 07:39:23.04ID:gFsX3PNG
そこまで無理に場合分けして共通化させるなら初めから
独立に定義したほうがいい。
しっかり勉強してきた奴ほど無理やり継承ツリーでまとめようとする傾向にある。
それが行き過ぎると無駄なジェネリックの登場となる。
696デフォルトの名無しさん
2019/06/01(土) 08:15:26.41ID:uvuK6mvN
まあ一度はそういう経験しておいた方がいいな
697デフォルトの名無しさん
2019/06/01(土) 08:43:52.63ID:QzRnFnM6
コルモゴロフ複雑性は計算不能なのだから
プログラムのあるべきコンパクトさについて一般論は存在しない
この点プログラムの記述方法の選択はまさに個々人のセンスに依存したartであり
真に人間らしい営みであると言える
698デフォルトの名無しさん
2019/06/01(土) 09:38:35.51ID:zEOJGQ26
仮に実数と複素数を継承関係にさせるとして、どっちを親にすべきかで広い合意は取れないからな
円楕円問題と同じ
699デフォルトの名無しさん
2019/06/01(土) 11:24:10.29ID:x6StDmNU
たとえすべての関数を特殊化することになったとしても、大部分のifを共通化できるはずで、他のクラスのテンプレ引数として区別なく使えるようになるからそれなりに意味はあるでしょ。
700デフォルトの名無しさん
2019/06/01(土) 13:24:21.51ID:ws//1RZ4
意味はないよ
そもそも複素数なんて仮にそれを多用する分野のタスクだったとしても実数に比べて使用頻度は低いんだから、
タスクで本当に必要なものだけを実装すればよい
701デフォルトの名無しさん
2019/06/01(土) 14:00:28.34ID:jOO/UBvi
いや、実数が使えたためしがないから、俺の爺ちゃんが量子を考案したのだが。
702デフォルトの名無しさん
2019/06/01(土) 14:17:26.49ID:eS53UGey
お前のじーちゃんシュレーディンガーかよ
703デフォルトの名無しさん
2019/06/01(土) 14:38:11.54ID:jOO/UBvi
高校のとき、心のお兄ちゃんとか心の妹とか流行ってたな。
704デフォルトの名無しさん
2019/06/01(土) 15:52:18.02ID:gFsX3PNG
29=(5+2i)(5-2i)
こんな風に因数分解して欲しくケースなんてほとんどないだろ。
変にポリモルフィックにやるべきじゃない。
705デフォルトの名無しさん
2019/06/01(土) 16:12:58.52ID:vdsZQvk5
おじちゃん今継承とか動的多態の話しはしてないよ?
706デフォルトの名無しさん
2019/06/01(土) 16:28:52.97ID:gFsX3PNG
は?c++でジェネリクスやろうとすればデフォルトで使うことになるだろ?
ボケちゃったのかな?
707デフォルトの名無しさん
2019/06/01(土) 16:40:59.16ID:vdsZQvk5
えっそうなの?
C++でジェネリクスてtemplate使うから継承とか関係なくね
例えば実数と虚数に対応するplus関数を作るとしてどういう実装を想定してんの
708デフォルトの名無しさん
2019/06/01(土) 18:04:51.32ID:ws//1RZ4
>>707
テンプレートによるstructual subtypingはポリモーフィズムの実装の一種だよ
709デフォルトの名無しさん
2019/06/01(土) 18:35:49.34ID:y869pNJN
conceptはともかく現行のc++のそれを構造的部分型とは言いたくない気持ちがあるのは分からないではない
710デフォルトの名無しさん
2019/06/01(土) 20:21:39.08ID:HfNJIaau
マルチエージェントシミュレーションをしたいんですけど、環境と個々のエージェントのクラスはどういった関係で持てばいいんでしょうか
現在はエージェント・環境の全部のインスタンスを進行を行うクラスに持たせています
しかし個々のエージェントが相互の情報を知りたいときに相互にアクセスできるようにするにはどうしたらいいでしょうか?

全てのエージェントが全てのエージェントの参照を手にするのはどこで書き換えが起こるか分からなくなるのでしたくありません
711デフォルトの名無しさん
2019/06/01(土) 20:32:54.41ID:ws//1RZ4
>>710
お前は街にいる人間全員のパンツの柄を知っているのか?
意味のあるシミュレーションをやるからにはエージェントが知ることのできる情報の範囲や内容は明確に定義されていなければならないはずだろう
その定義に従った情報を取得する手段がエージェントに提供されていればよい
712デフォルトの名無しさん
2019/06/01(土) 20:55:47.81ID:HfNJIaau
例えば互いの距離を知りたい場合どうすればいいですか?
713蟻人間 ◆T6xkBnTXz7B0
2019/06/01(土) 21:01:47.55ID:O6/ikTFN
GPSで二つの位置を測定して、その差を求める。
714デフォルトの名無しさん
2019/06/01(土) 21:14:48.00ID:QKlis6p8
二人の心の距離は測れますか
715デフォルトの名無しさん
2019/06/01(土) 21:14:55.91ID:wq+pItFK
>>712
神クラスが更新対象のエージェントと周囲の各エージェントとの距離を予め計算し、更新対象のエージェントに計算結果のセットを渡す
そして更新対象エージェントはその結果セットの内容のみに従った行動をするだけ
それをエージェント毎、ステップ毎に繰り返す
実際に必要とされるまで計算を遅延する等、効率化のための実装の工夫は必要だろうけどね
716デフォルトの名無しさん
2019/06/01(土) 23:30:04.77ID:vdsZQvk5
あらゆる数値型二つを引数にとるdistance関数を定義しろ
あとは二人の心の位置を表す型で特殊化しろ
717デフォルトの名無しさん
2019/06/02(日) 10:02:04.84ID:+QRUS/U1
STGの当たり判定やガンパレの頭から伸びるラインだろ
神のような仲介者mediatorを置けばいい
718デフォルトの名無しさん
2019/06/02(日) 11:00:43.72ID:JfX2j2vB
>互いの距離
<<質問の意味不明。再入力せよ>>
719デフォルトの名無しさん
2019/06/02(日) 11:44:35.03ID:JfX2j2vB
神クラスが全エージェント間の距離を計算し続けるのはエージェントN個の完全グラフの枝
N*(N-1)/2個の長さを更新し続けるということであっていかにも無駄が大きい少なくともエー
ジェントが置かれる環境のデータ表現と「互い」とは何かが定義されねばならないありがちな
環境表現としては二次元座標のリストとか正方形や六角形のセル表現とかがありがちで「
互い」というのは普通はエージェントの感覚器と環境(遮蔽物とか)とのインタラクションで規
定されるように作るからそういったブツもシミュレートせよ
720デフォルトの名無しさん
2019/06/02(日) 14:25:56.91ID:RszfEHjQ
>>714
まずは心の距離を定義するところからはじめよう
721デフォルトの名無しさん
2019/06/02(日) 15:22:27.64ID:aSoefH8n
質問よろしいでしょうか?CORBAってもう古いですか?

CORBAのサンプルをこねくり回して送受信するオブジェクトを2つと一時停止や終了をコントロールする
オブジェクトを作ったのですが、お互いに送受信すると思ったら片方が送信しまくって受信が検出できな
いようで困ってます。送信を止めると前に送ったものを受信します。
送信する時に少しsleepを入れると遅いですが思った通りの動きになります。
出来ればsleepなしで動いてほしいのですが、omniORBって同時に送受信できないのでしょうか?
722デフォルトの名無しさん
2019/06/02(日) 21:49:55.34ID:a7zvk5vs
CORBAの動きはよく分からんあれ本当にまともに動くのか
723デフォルトの名無しさん
2019/06/03(月) 21:34:05.54ID:76rl+S7D
d1の実部 d1の虚部
d2の実部 d2の虚部
...



d1
d2
...

というフォーマットのファイル(の名前)が与えられたときに、前者なら複素数として、後者なら実数として読んで vector に格納する関数ってどう書くべきでしょうか
724デフォルトの名無しさん
2019/06/03(月) 22:02:24.30ID:NMMhu3n8
auto f(std::filesystem::path const& n)
{
using T=double;
auto ret=
std::vector<std::complex<T>>{};
std::ifstream in(n);
std::string line;
while(std::getline(in,s)) {
std::istringstream ss(s);
T r{},i{};
ss >> r >> i;
ret.emplace_back(r,i);
}
rerurn ret;
}
725デフォルトの名無しさん
2019/06/04(火) 07:18:40.68ID:mXL6ajVk
>>724
ありがとうございます
紐解いてみます
726デフォルトの名無しさん
2019/06/04(火) 11:04:36.97ID:stwnRIgs
【速報】金券五百円分とすかいらーく優侍券をすぐもらえる 
C++相談室 part142 	->画像>5枚    
   
@ スマホでたいむばんくを入手  
A 会員登録を済ませる   
B マイページへ移動する 
C 招待コード→招待コードを入力する [Rirz Tu](スペース抜き)     
  
今なら更に4日18時までの登録で2倍の600円の紹介金を入手     
クオカードとすかいらーく優待券を両方ゲットできます。   
    
数分で出来ますのでぜひお試し下さい     
727デフォルトの名無しさん
2019/06/04(火) 12:18:01.44ID:ZmMHo7YV
valgrindって今も使われてますか?
通信にBoost.MPI、ファイル入出力にHDF5を使う並列プログラムをInfinibandなネットワーク環境で走らせてるんですが
valgrindにかけるとアホみたいにエラーが出てうんざりします。
シコシコSuppression Fileを用意するしかないんですかね
728デフォルトの名無しさん
2019/06/04(火) 13:24:01.81ID:iQLgDYhZ
>>726
早速入れた
729デフォルトの名無しさん
2019/06/04(火) 16:02:32.14ID:puihIuc4
vectorなりstringなりの各要素をfor文で回すとき何も考えずに例えば
for(int i = 0; i < v.size(); ++i)みたいなコード書いてたんだけどさ
C++プライマーで勉強してたらやっぱsize_typeとかautoとかイテレーターとか使ったほうがいいのかなぁって
signedかunsignedかなんてまず問題にならないようなちょっとしたループでも気をつけるべき?気をつけてます?
730デフォルトの名無しさん
2019/06/04(火) 16:10:21.98ID:uZb76vTJ
全要素ならrange-based forは便利。
731デフォルトの名無しさん
2019/06/04(火) 18:48:19.92ID:Rd1vYitp
男は黙ってfor eachやぞ
732デフォルトの名無しさん
2019/06/04(火) 19:03:30.86ID:payOgJqe
for eachは環境依存では
733デフォルトの名無しさん
2019/06/04(火) 19:17:46.45ID:Gdf9cmgA
要素インデックスを表現する変数にはint型を使わずsize_t型を使うようにする、とかかな。
nposによる未検出判定があるから仕方なしにだけど。
734デフォルトの名無しさん
2019/06/04(火) 20:55:52.96ID:5jXXyAl7
んなくだらんことで悩むくらいならその外側で監視するコードでも組んだ方が100倍生産的だわ。
735デフォルトの名無しさん
2019/06/04(火) 21:36:28.65ID:u5rIm+gJ
ループ変数にsize_t使うのを徹底しようと思い立ったことも昔あったけど
operator[]とかにsize_t変数入れると「intじゃない!!!ムキー!!!」って警告ほざくクソライブラリがこの世に多すぎて挫折した
736デフォルトの名無しさん
2019/06/04(火) 21:46:44.91ID:Gdf9cmgA
今や64bitコンパイラが普通だからintよりも暗黙な64bit対応としてsize_tを使うこと増えたんじゃないかな。
intみたいな32bit変数のままだとコンパイル時に警告が大量に出るし、とりあえず無難にsize_tにしとくわ的な感じになってる。
737デフォルトの名無しさん
2019/06/04(火) 22:05:00.56ID:sAkXOF3J
size_tは符号ありにすべきだった
と誰か反省してたよな
ホントめんどくさい
738デフォルトの名無しさん
2019/06/04(火) 22:10:32.07ID:ZspfbBdH
intが64ビットになる日はいつですか
739デフォルトの名無しさん
2019/06/04(火) 22:15:44.59ID:5jXXyAl7
その前にビットサイズ付きintでかかれるケースが増えるだろ。
740デフォルトの名無しさん
2019/06/04(火) 22:24:52.24ID:payOgJqe
じゃあ128bit整数はいつですか
741デフォルトの名無しさん
2019/06/04(火) 23:51:58.43ID:Q7pPWYoh
なんでお前らの職場って大卒欲しがるの?
742デフォルトの名無しさん
2019/06/04(火) 23:57:38.92ID:V/nSGYnK
修士の方が多くね?
743デフォルトの名無しさん
2019/06/05(水) 00:02:44.18ID:4AufAgsU
BigInteger書いてるんだけど、補数表現がわけわかめで死にそうになってる。
ウィキペディア頼りで加減算はできたけど、掛け算どうやるねん。

そこで、補数で小学生にもわかるレベルの補数表現の解説プリーズ。
744デフォルトの名無しさん
2019/06/05(水) 00:24:44.84ID:oecfF/bP
そのままunsigned同士の掛け算すればいいんじゃね?
で長くなったbit数の結果からMSBから変わる直前まで好きなように切り詰める。
745デフォルトの名無しさん
2019/06/05(水) 01:13:53.17ID:UjRB/6p5
>>743
とりあえず4bitで正数、負数を使った四則演算を手で紙に書いて解いてけば理解できないかな
746デフォルトの名無しさん
2019/06/05(水) 04:56:49.99ID:y/B41+FI
コピーコンストラクタを避ける目的でswap使うことってありますか?
747デフォルトの名無しさん
2019/06/05(水) 09:35:36.43ID:BFsqA4Jd
俺転職するわ
C++相談室 part142 	->画像>5枚
748デフォルトの名無しさん
2019/06/05(水) 10:08:32.94ID:2Gd2m+Lo
会社に行っても仕事しないのに、リモートワークとか無理だわ
749デフォルトの名無しさん
2019/06/05(水) 12:06:46.64ID:LHcMHkph
給料は働いた分だけでいいならリモートワークやりたい
750デフォルトの名無しさん
2019/06/05(水) 16:43:40.53ID:gnp+gTKs
>>747
インディーゲームデベロッパでリモートワーク・・年収500万から800万・・・
怪しい匂いしかしない・・
751デフォルトの名無しさん
2019/06/05(水) 17:11:31.00ID:4AufAgsU
743です。
解説ありがとう。理解できない頭をボンバヘッしたい感じです。
しばらく凍結させるので供養しておきます。

供養:https://dotup.org/uploda/dotup.org1865161.zip
752デフォルトの名無しさん
2019/06/05(水) 17:22:41.48ID:EHQtou0g
void func(int& n){...}
int main(){int a = 0; func(a)}
こんな感じで関数の引数が参照のとき呼び出す側は変数そのまま突っ込みますよね
これなんで&aにしないんですかね。型がちげーよって怒られそうなもんですが
基本的なことだと思うんですけどどうもググっても大丈夫な理由が見つからないもので

そもそも
int val = 0;
int& refval = val;
みたいな書き方もしますよね。やっぱり左右で型違うよねって
ポインタならint* p pval = &valって&つけるのに。どうなってんでしょ
753デフォルトの名無しさん
2019/06/05(水) 17:38:39.24ID:W6wnsWg/
後付けの機能だから考えても仕方ないぞ
754蟻人間 ◆T6xkBnTXz7B0
2019/06/05(水) 17:58:17.41ID:keYZi/8b
型に互換性があるから。
755デフォルトの名無しさん
2019/06/05(水) 18:58:47.42ID:LHcMHkph
>>750
ネコぱらがアホみたいに売れたから気前よくなってる可能性
756デフォルトの名無しさん
2019/06/05(水) 19:47:28.87ID:vfI9OlW2
template <auto N>とかできるんだな。
757デフォルトの名無しさん
2019/06/05(水) 23:39:10.84ID:g8AzjXwK
カッコつけずに byref とか予約語作ればよかったんだよ。
同様に関数の後に=0でpure virtualとかバカジャネーノ。
758デフォルトの名無しさん
2019/06/05(水) 23:51:08.01ID:Oo3xyqZm
&&でmoveもあるしね
759デフォルトの名無しさん
2019/06/05(水) 23:55:20.60ID:PbZwo6fr
参照ってもともと演算子オーバーロードのための機能なので
呼び出し側でなんかさせるわけには行かなかったんだよ
760デフォルトの名無しさん
2019/06/06(木) 00:50:27.07ID:owYx3C4X
>>759
参照とオーバーロードにどういう関係がありますのん?
761デフォルトの名無しさん
2019/06/06(木) 00:51:47.37ID:vlcJQGqo
専門家が深く考えて議論して決めたことを素人が批判してて草
762デフォルトの名無しさん
2019/06/06(木) 01:17:25.71ID:u8n9IUq9
>>752は、operator->()をみたらしぬ
763デフォルトの名無しさん
2019/06/06(木) 03:17:03.81ID:BJpCSJfe
=0とか分かりやすすぎ
764デフォルトの名無しさん
2019/06/06(木) 06:49:58.29ID:VYs0Fl5K
>>761
= 0 だけならまだしも
= default とかあまり深く考えてなくね?
まあ後付で言うのは容易いよな
って言われたらぐうの根もでないがw
765デフォルトの名無しさん
2019/06/06(木) 07:01:39.10ID:PF44iNdb
Cの古い文法を(ほぼ)そのまま残した上にC++を作ったから
いきなりC++から勉強すると気色悪いと感じる面もあるかもな。

ポインタと参照が同時期に言語に入ってたら、
int a; // 通常の変数
int &ra = a; // 参照
int *pa = a; // &演算子なしで暗黙にポインタに変換
てな書き方になってたかも知れん。

void func(int n);
void func(int *pn);
void func(int &rn);
これらは曖昧で解決できない、になってたかも。
766デフォルトの名無しさん
2019/06/06(木) 08:16:40.59ID:YZj7S1bc
>>765
ポインタのポインタやキャストのこと考えたら、その例のような暗黙のポインタ変換とか持ち込むとかえって混乱やミスの元になりそうだし、現状の仕様もしかたないものかなと思うよ
767デフォルトの名無しさん
2019/06/06(木) 08:40:36.13ID:p2k3Z1kO
>>766
Go使いやすいよ
768デフォルトの名無しさん
2019/06/06(木) 10:41:12.25ID:VbLHIWhF
参照引数に結果を代入とかたまに使うけど呼び出す側から分かりやすいようにC#のout修飾子とかほしい
769デフォルトの名無しさん
2019/06/06(木) 11:48:51.90ID:CNru8FH6
C#のoutは言われてみれば確かにって感じだけど、そうやって問題提起されるまではそもそも当然すぎて問題だと思われてなかったんだろうね
引数に代入することで呼出元へ値を返すのってfortranとかの時代から続く悪しき伝統だから
770デフォルトの名無しさん
2019/06/06(木) 11:53:56.84ID:fZVA+Le5
分配束縛の導入が必要だね

あと、NRVOの義務化
771デフォルトの名無しさん
2019/06/06(木) 12:07:43.67ID:bIT6TIHx
仮引数名をoutにしとけばいいだけでは?
772デフォルトの名無しさん
2019/06/06(木) 12:09:14.70ID:G/M7SWSB
>>768
それconst付きかどうかで判断すべきと言うか判断するだろ?
773デフォルトの名無しさん
2019/06/06(木) 12:26:08.08ID:qi/Zl49P
世の中には引数にconst付けない糞ライブラリがあるんですよ
774デフォルトの名無しさん
2019/06/06(木) 13:52:14.20ID:CNru8FH6
>>772
問題はそこじゃない
呼出元のコードだけを見たときにソース上で区別がつかないだろ
C#のoutは呼出元にも付ける必要があるんだよ
C++でも出力引数に参照渡しを使うことは禁止しポインタを使う流派があるが、
あれも呼出元を見たとき書換えの可能性の有無を&の有無だけで判別できるようにするのが目的
775デフォルトの名無しさん
2019/06/06(木) 17:27:39.41ID:G/M7SWSB
>>774
それいちいちつけさせられたらメンドイだけのような
どうせIDEで見りゃわかるのに
776デフォルトの名無しさん
2019/06/06(木) 17:40:39.24ID:AdzMW0EL
class Person
{
public:
Person& set(int);
private:
int age;
}

Person& Person::set(int num)
{
age = num;
return *this;
}

*thisを返す関数ってことで大雑把にこんな感じのサンプルが本に出てました
メンバーセットするだけならわざわざ本体の参照返す必要無くない?voidで良くない?って思ったんですけど何かメリットってありますか?
777デフォルトの名無しさん
2019/06/06(木) 17:45:07.81ID:Yj1l17Nf
基本的には複数の値を戻したいならtuple返すべきだし、オブジェクトの状態を書き換える関数はそのオブジェクトのメンバにするべき
データ構造体を一部書き換えるような処理は、書き換えじゃなくて新しいのを作って返した方が読みやすいし効率的なことも多い
全部が全部そうとは言わないけど、参照引数は書き換え分かりにくいってブーブー言う奴のコードって大体汚いイメージある
778デフォルトの名無しさん
2019/06/06(木) 17:49:48.99ID:Yj1l17Nf
>>776
operator=系は組み込み演算子と挙動合わせるために*thisを返すことが多い
今はあんまり推奨されないけどif(a=foo())とか書けるようにね

その例はif(p.set(40))とか書きたいのか、operator=系の話と混同してよく分からずに適当に書いてるか、そのどっちか
779デフォルトの名無しさん
2019/06/06(木) 17:52:12.08ID:zzmbMYQ4
>>776
メリットとは言い難いがこんなことが出来る。
a.setx(1).sety(2);

参考書でそれをやるならoperator演算子でやるべきだったな。
780デフォルトの名無しさん
2019/06/06(木) 17:57:05.98ID:vlcJQGqo
C++はアドリブ力が要求されるからな
781デフォルトの名無しさん
2019/06/06(木) 18:04:35.29ID:WQTF5R5g
C++の言語仕様にケチつけたところでどうにもならんでしょ。
なにがしたいの。 >>2 にある「すっぱい葡萄」な人?
782デフォルトの名無しさん
2019/06/06(木) 18:13:42.57ID:BJpCSJfe
呼び出し側の制約がしたいならtemplateでちょこっと書けば出来るし
template<typename T>
struct Out {
T& ref_;
explicit Out(T& ref_):ref_(ref_){}
T& operator()() const{return ref_;}
};
template<typename T>
inline auto out(T& ref_for_out)
{
return Out<T>(ref_for_out);
}

void func(Out<int> const& v)
{
v()=1;
}

int main()
{
int i;
//func(i);
func(out(i));
}
783デフォルトの名無しさん
2019/06/06(木) 20:03:44.48ID:cAEvq2fq
やれやれ
784デフォルトの名無しさん
2019/06/06(木) 20:12:37.34ID:cbON3Xt8
>>761
専門家の意見は奴がもう少し構文解析勉強してればって意見だがな。
権威だけ気にするバカがほんと増えたね。
785デフォルトの名無しさん
2019/06/06(木) 20:55:57.85ID:mQulWN9t
>>776
つbuilder pattern

ここのc++サンプル参照
https://en.m.wikipedia.org/wiki/Builder_pattern
786デフォルトの名無しさん
2019/06/06(木) 21:33:19.25ID:9wGcGWUm
>>777-779
ありがとうございました。本は定評のあるC++プライマーなんで多分私が書いた例がなんかおかしいんだと思います
演算子オーバーロードは今やってるところではまだ出てきてないですね。>>779は実際本にも出ていましたがやはりそれがわかりやすいメリットになりますか
787デフォルトの名無しさん
2019/06/06(木) 23:08:39.21ID:Qxsak61t
メソッドチェーンか

Ruby, jQuery のマネw
Kotlin も真似してる
788デフォルトの名無しさん
2019/06/06(木) 23:21:23.55ID:/EsEj/n2
マネってお前…
789デフォルトの名無しさん
2019/06/07(金) 06:54:43.17ID:CBwJTjr/
メソッドチェーンって便利か?
>>779
> a.setx(1).sety(2);

a.setx(1);
a.sety(2);
って書けばいいだけだよね?
790デフォルトの名無しさん
2019/06/07(金) 07:43:41.42ID:Pe4fcpYB
>>789
書くのも読むのもだるい
791デフォルトの名無しさん
2019/06/07(金) 07:45:42.22ID:51aJPRpO
2個くらいならいいが
10個くらいつなぐやついて長すぎて改行するから結局同じ
792デフォルトの名無しさん
2019/06/07(金) 07:52:12.96ID:bSdf4jBS
おっしゃる通り
793デフォルトの名無しさん
2019/06/07(金) 07:59:02.43ID:qUGReS69
メソッドチェーンの利点で調べてみたら名前付き引数みたいなことが可能とあったな。

//メソッドチェーンで設定してない値は初期値を使用
//コンストラクタとは違いチェーンしてるので値の設定の順番は自由

void test(data().year(2019).manth(12).day(24));
void test(data().manth(12).day(24).year(2018));
794デフォルトの名無しさん
2019/06/07(金) 07:59:54.93ID:CBwJTjr/
>>790
C++に向いてないからやめたらw
795デフォルトの名無しさん
2019/06/07(金) 08:02:27.28ID:CBwJTjr/
>>793
間違えて1つ抜かしたり重複しててもエラーにならない
デメリットの方がでかくね?
796デフォルトの名無しさん
2019/06/07(金) 08:09:00.14ID:qUGReS69
>>795
重複したら後の方が優先されるし、抜けた分は初期値を使用するし...

ただし、それだけのためにクラスを作る手間はデメリットだと思う。

あくまで使い方の一例
797デフォルトの名無しさん
2019/06/07(金) 08:13:09.29ID:xj9RlcCA
「流れるような」とか言われると笑う
798デフォルトの名無しさん
2019/06/07(金) 10:10:37.57ID:CBwJTjr/
>>796
> 重複したら後の方が優先されるし、抜けた分は初期値を使用するし...
だからいいってか?
抜けた部分はともかく重複をエラーにできないのは名前付引数に比べてデメリットでしかないだろ
799デフォルトの名無しさん
2019/06/07(金) 10:20:00.95ID:Pe4fcpYB
>>794
行数が増えるのに耐えられるのか?
俺はできない
800デフォルトの名無しさん
2019/06/07(金) 10:22:00.36ID:BtT+kizM
range adapter、C++20から使えるよ、メソッドチェーンだよ・・・
801デフォルトの名無しさん
2019/06/07(金) 10:34:36.93ID:9H5/9dgd
ようするにラムダ式をチェインさせればいいんだろ
かんたんじゃん
Lispの時代に近づいてるだけだ
802デフォルトの名無しさん
2019/06/07(金) 10:35:22.44ID:aX0Y7AKm
>>798
理想的な名前付き引数が存在するなら「名前付引数に比べてデメリット」といえるんだろうけど、
C++には名前付引数ないよね?
803デフォルトの名無しさん
2019/06/07(金) 11:29:19.04ID:O2O1gPjv
メソッドチェーンとかいらんわ
リファクタリングしにくいし
Kotlinのapplyがベスト
804デフォルトの名無しさん
2019/06/07(金) 11:30:58.83ID:dp7q4wQg
横に長いのがいやなんだよな
多少冗長でも縦の方がいい
特になっがいメソッドチェーンで途中から返り値変わってるやつとか殺意わく
805デフォルトの名無しさん
2019/06/07(金) 11:38:12.52ID:Pe4fcpYB
関数の定義は正方形に近いのがいい
806デフォルトの名無しさん
2019/06/07(金) 12:23:28.70ID:CBwJTjr/
>>802
そのうち追加されるだろうから待ってなよ
807デフォルトの名無しさん
2019/06/07(金) 12:25:28.59ID:CBwJTjr/
>>799
行数増えるのになんの問題があるんだ?
横に長いとか見辛いし差分も取りにくいしメリットないだろ
808デフォルトの名無しさん
2019/06/07(金) 14:04:49.95ID:Pe4fcpYB
>>807
縦にも横にもスクロールしたくないだけさ
>>805 に書いた
809デフォルトの名無しさん
2019/06/07(金) 14:45:14.80ID:8IyUxlC9
ところで>>776のような return *this; だとコピーが発生しないか?
return this;; として->でメソッドチェーンにするのならわかる
810蟻人間 ◆T6xkBnTXz7B0
2019/06/07(金) 14:59:30.42ID:KffKHULn
>>809
戻り値の型に&が付いてるから参照だ。
811デフォルトの名無しさん
2019/06/07(金) 15:25:18.97ID:adznp1U4
>>810
普通はメソッドチェーンとかいらんけど
GUIのライブラリとかはそっちのほうが使いやすそうな気がする
812デフォルトの名無しさん
2019/06/07(金) 15:29:32.41ID:DvEE5fSZ
ちゃんとした設計になっていればどんなスタイルでもいいよ
813デフォルトの名無しさん
2019/06/07(金) 15:59:52.88ID:Qcue35T9
sortの比較関数についてなんですけど
たとえばvector<int> v = {0, 1, 2, 3, 4, 5}があったら
bool compare(const int& num1, const int& num2) { return num1 > num2; }
sort(v.begin(), v.end(), compare)で降順になりますよね

なるほど、0< n < v.size()でどのv[n]とv[n+1]でもcompareがtrueを満たすように
並び替えてくれるんだな、って理解したんです
それで試しに
bool compare(const int& num1, const int& num2) { return num1 == (num2 + 1); }
って書き換えたんですけど降順になってくれないんです
どのv[n]もv[n + 1] + 1に等しい→降順になると思ったんですけど

評価関数ってどう理解したらいいんでしょう?
814デフォルトの名無しさん
2019/06/07(金) 16:06:41.20ID:adznp1U4
pred内でprintfデバッグでもしてみたら?
n番目ととn+1番目の要素以外でも比較が発生しているのがわかるから。
815デフォルトの名無しさん
2019/06/07(金) 16:47:23.38ID:StFsiGGy
比較関数の右辺と左辺が入れ替えて比較した結果が矛盾してると、ソートは意図しない挙動になる。当たり前ではあるけど。
816デフォルトの名無しさん
2019/06/07(金) 16:52:15.04ID:RgT+kAkp
>>813 俺も理解せずに言葉だけ覚えてるんだけど、
比較関数の性質として「狭義の弱順序」を示さなくちゃいけないのだ。

「狭義の弱順序」でネット検索すれば分かると思うよ。
少なくとも俺の場合「自分には(今のところ)理解できない」ことが分かった。

…て言うか、誰か分かりやすい解説サイトなど紹介してください。
817デフォルトの名無しさん
2019/06/07(金) 17:52:26.15ID:9H5/9dgd
群論のマグマやモノイドあたり
818デフォルトの名無しさん
2019/06/07(金) 19:55:02.31ID:eP2De+H/
>>793
俺は好きだな。 jQuery みたいでかわいい
819デフォルトの名無しさん
2019/06/07(金) 20:05:15.50ID:RHh4qcVs
関数チェイン入るんかいな。
任意のコンテナにチェイン出来るフリー関数を書きたいお年頃なオレ。
820デフォルトの名無しさん
2019/06/07(金) 20:43:41.59ID:bGghseJi
C++20で構造体の指示付き初期化があるみたい。
https://ja.cppreference.com/w/cpp/language/aggregate_initialization

上の使えば
void test({.year = 2019, .manth = 12, .day =24});
は可能だな。
ただし構造体の順番通りじゃないといけないのが欠点(指示をしない場合は初期値を使用)
821デフォルトの名無しさん
2019/06/07(金) 20:50:05.58ID:/Ew8uqLj
バカが好きそうなクソシンタックスばっかり入るなw
822デフォルトの名無しさん
2019/06/07(金) 21:19:45.80ID:khSrdsPe
cでもあるし妥当だろ
まあ順番は面倒だが
823デフォルトの名無しさん
2019/06/07(金) 21:34:52.47ID:51aJPRpO
もうずっとmanthが気になって仕方がない
824デフォルトの名無しさん
2019/06/07(金) 21:57:41.25ID:PFCjrauz
質問です。

std::remove_ifは実際には要素の削除を行わない。
https://qiita.com/naka4/items/1f207b5d6acf102b0db7
「削除する要素を詰めて、サイズが縮んだコンテナの新しい終端イテレータを返す」
とのことですが

vector<shared_ptr<T>>の場合、その挙動に従わない場合があって困惑しています。
下記のコードで、erase()する前にCのデスタラクタが呼ばれているのは何故ですか。
https://ideone.com/7rp1Os

たぶんムーブの挙動の絡みのナニカだとは思うのですが…


また、この挙動はどう解釈すべきですか?
特に気にせずこのままremove_if→eraseは問題ないのか?
または規格に照らし合わせてNGだったり危険だったりするものでしょうか?
825デフォルトの名無しさん
2019/06/07(金) 22:07:56.01ID:bSdf4jBS
最初はsp(10)sp(11)sp(12)sp(13)sp(14)
remove_ifするとsp(10)sp(11)sp(13)sp(14*)sp(14*) (*は共有)
sp(12)の参照カウンタがなくなったので破棄される

普通の挙動では?
826デフォルトの名無しさん
2019/06/07(金) 22:10:55.22ID:bSdf4jBS
ムーブするからsp(10)sp(11)sp(13)sp(14)sp(null)か
結論は一緒だけど
827デフォルトの名無しさん
2019/06/07(金) 22:12:27.62ID:khSrdsPe
swapじゃなくてmove代入されているんじゃね
828デフォルトの名無しさん
2019/06/07(金) 22:21:39.08ID:RHh4qcVs
参照カウンタ増やさない方法で移動されてるのかな??
インプレースだから、扱いが雑な気がする。
829デフォルトの名無しさん
2019/06/07(金) 22:25:21.08ID:bSdf4jBS
まあremoveの外側はunspecifiedだからどうするかは実装の勝手
雑に扱われてても文句は言えない
830824
2019/06/07(金) 22:34:00.62ID:PFCjrauz
各位、どうも
なんとなく分かってきました
cpprefjpでも「有効だが未規定な値」とのこと
実装依存で参照カウントが減ってゼロになるときもあるよ、そういうmoveもされ得るよ
ということですね

とりあえず返却されたイテレータが示す範囲は正常だと思うので
erase()はそのまま使う方向でいってみようと思います
831デフォルトの名無しさん
2019/06/07(金) 22:56:05.74ID:khSrdsPe
雑とかそう言う話ではなく
remove_ifの実装でremove後の空きshared_ptr部分に後の要素をどうやって詰めているかだけの話
swapじゃないなら、代入にせよmove代入にせよ、その場で参照カウント減ってデストラクタが呼ばれるよ
832デフォルトの名無しさん
2019/06/07(金) 23:01:56.95ID:RHh4qcVs
実装がとある一つなのだから、変数に持ち直してやるのもオーバヘッドがーという場合もある。
コンテナ上の空き領域の作り方も幾つかあって、
今回は疑似ポインタだからコピーが軽いけど、実態をいじるときは涙目になるきがす。

実装を定義してないはずだから言いようはいくつかあるけど、
インプレースでやるときは面倒だということだけ知っておけばよい気がする。
833デフォルトの名無しさん
2019/06/08(土) 01:15:29.93ID:B4mMYyrz
整数の事情って結局どうするのが正しいの?
powは遅いだの何だの以前にdoubleとの間で一々キャストするのが姿勢として正しいように思えない

マクロでやってる人が多い?
834デフォルトの名無しさん
2019/06/08(土) 01:33:51.17ID:f9OaJysQ
powの整数型引数のがあるんじゃない?
835デフォルトの名無しさん
2019/06/08(土) 06:52:32.97ID:81RPqzS0
std::powにはないから自分で書くしかない
836デフォルトの名無しさん
2019/06/08(土) 08:59:01.58ID:JxaHk6L1
>>833
整数値で指数みたいな物を扱う場合、簡単にオーバーフローが起きるので
本気でやるとしたらだいぶ恣意的なサイズ区切りを入れることになる。
そんなことやるくらいなら浮動小数からのキャストのがだいぶ楽だし実装も安定する。
837デフォルトの名無しさん
2019/06/08(土) 10:35:16.88ID:uBDMoQSs
負の数が指数に与えられたら結果は少数になるけどそれでもいいなら
838デフォルトの名無しさん
2019/06/08(土) 10:47:03.88ID:Yv0NxNrw
二乗だろ?
何悩んでんだよ
839デフォルトの名無しさん
2019/06/08(土) 11:17:40.81ID:CfSNJA7X
>>833 整数でも問題なさそう
https://qiita.com/SaitoAtsushi/items/c729f73f7f5603910b6b
840デフォルトの名無しさん
2019/06/08(土) 11:37:29.71ID:6OYPkGQi
二乗なんて直接掛け算で書き込んでもいいくらい
841デフォルトの名無しさん
2019/06/08(土) 12:05:54.87ID:hw2i/19C
底が2でない3乗以上の累乗なんか整数でやろうと思ったことないな
842デフォルトの名無しさん
2019/06/08(土) 18:23:48.07ID:81RPqzS0
整数の冪は速度云々よりオーバーフローが気になる
100を5乗しただけであっという間にuint32_tをぶっちぎるんだぞこえーよ
843デフォルトの名無しさん
2019/06/08(土) 20:11:59.83ID:KGab8pqO
n乗してオーバーフローする整数は予め求められるんだからn乗する前に判定するだけだろ
844デフォルトの名無しさん
2019/06/08(土) 20:14:05.51ID:f9OaJysQ
やっぱlog表現にすべきやな
845デフォルトの名無しさん
2019/06/08(土) 20:18:41.89ID:16S9+5P1
メモリを無限に使えばええ
846デフォルトの名無しさん
2019/06/08(土) 20:36:16.78ID:JxaHk6L1
>>843
判定のためにdoubleにキャストして、みたいな?
847デフォルトの名無しさん
2019/06/08(土) 20:37:46.29ID:KGab8pqO
>>846
100がオーバーフローする最大値なら100と予め整数比較するだけだろ
848デフォルトの名無しさん
2019/06/08(土) 20:39:53.83ID:JxaHk6L1
なるほど n=100くらいまで全て持っていればいいと。
まあそうかもな。
849デフォルトの名無しさん
2019/06/09(日) 02:20:42.24ID:49FyDaAW
C++知らないことが多すぎてちょっと勉強するだけでもあーあそここれ使って書いてればよかったーってなることばっかりだわ
しばらく前に書いたコード見直したくねぇ
850デフォルトの名無しさん
2019/06/09(日) 02:37:22.98ID:bDrC2N4p
そのうちこれわざわざこれ使って書く必要なかったなになるゾ
851デフォルトの名無しさん
2019/06/09(日) 02:55:27.45ID:5fLgSAOM
そしてC言語が正解だったことに気づく
852デフォルトの名無しさん
2019/06/09(日) 02:57:41.57ID:bDrC2N4p
それはない
コンテナはやっぱり便利
動的ポリモーフィズムは必要ねえなぁ
テンプレートで十分
853デフォルトの名無しさん
2019/06/09(日) 03:16:06.77ID:/cpSAd8E
>>836
modpowは自分のライブラリとして持ってるので、それ使うことにすれば良いですかね
機能過多な感じもしますが


>>837

普通の挙動ですよね?


>>839
ありがとうございます。読んでみます
結果によっては素直にpowを使うことにします


>>840
今はマクロでそうしてます
854デフォルトの名無しさん
2019/06/09(日) 09:31:54.10ID:/FZVYwra
テンプレートもそろそろガンだってことが普通に認識されるようになるだろうな。
標準のテンプレートだけ使ってりゃいいんだよ(それでも使いこなせないだろうが。)
バカの作るテンプレートライブラリほどひどいものはない。
855デフォルトの名無しさん
2019/06/09(日) 10:15:07.88ID:Gi1Jt9cY
そりゃ堂々巡りの言い方だろ
酷い奴の作るテンプレートライブラリは酷い。そりゃそうだ
テンプレートライブラリが酷けりゃ作ったヤツは酷い。こうなるわな
856デフォルトの名無しさん
2019/06/09(日) 10:55:06.08ID:jMWe1oeX
>>852
>動的ポリモーフィズムは必要ねえなぁ
データの通りにオブジェクト作るような設計一切出来ないぞ
857デフォルトの名無しさん
2019/06/09(日) 10:55:18.69ID:g07iT4nf
>>854
どこが癌なのか教えてください。
858デフォルトの名無しさん
2019/06/09(日) 12:52:56.51ID:Oof3fMf0
いやテンプレート「ライブラリ」ともなれば十分な機能と性能と使いやすさを全立させるには必要スキルがダンチになる印象

そうではなくて問題に特化した形でテンプレートを使ってコードの記述量を激減させることは常人のもできる
ただし他人に理解してもらうのが困難になるからそういのうはモジュール内に囲ってテンプレートそのものを外に出さなければ宜しい

もし使いにくいとか理解しがたいだけでなく動作品質に問題があるなら、
その場合は問題のある人物が取り替えられる方向へと管理者のソーシャルスキルの発動の時間である
859デフォルトの名無しさん
2019/06/09(日) 13:05:27.14ID:bDrC2N4p
>>858
それが言いたかったんだよ、うん
860デフォルトの名無しさん
2019/06/09(日) 15:35:10.73ID:oBKk3YD0
正直アプリレイヤーでテンプレートを駆使したライブラリを作ることはあんまない
使う側からすれば便利な仕組みだわ

これがライブラリを提供する側になると途端に言語仕様と環境との闘いが始まる
861デフォルトの名無しさん
2019/06/09(日) 15:42:19.87ID:5fLgSAOM
何回同じ話するの?
障害あるの?
862デフォルトの名無しさん
2019/06/09(日) 15:46:33.89ID:S7l1hTT6
いいからお前はC言語使ってろよ
863デフォルトの名無しさん
2019/06/09(日) 15:46:44.77ID:aCcbeNVM
>>859
嘘つけ
864デフォルトの名無しさん
2019/06/09(日) 16:02:49.06ID:P23LzvOV
テンプレートは、コンパイラのエラーや警告が意味不明なのが玉にキズ。
865デフォルトの名無しさん
2019/06/09(日) 16:08:45.43ID:5fLgSAOM
同じ話を2回する奴はガイジ死ね
866デフォルトの名無しさん
2019/06/09(日) 16:17:48.67ID:Q5Gsequk
>>861>>865 は文面は異なれど、意図として
同一の内容を繰り返してるような気がするんだが。
「同じ話を何度も投稿する人に対する敵意」ってくくり。

これは単なる感想(自己言及的で面白い)だけどね。
発言に対しての賛同でも否定でもなく。
867デフォルトの名無しさん
2019/06/09(日) 16:40:22.23ID:/FZVYwra
クソライブラリ作るやつが絶滅するまで。
868デフォルトの名無しさん
2019/06/09(日) 17:20:43.24ID:g07iT4nf
そのくそライブラリを使わないといけないの?
869デフォルトの名無しさん
2019/06/09(日) 19:35:59.29ID:5fLgSAOM
だったら無駄なことしてないで直接乗り込んで二度とライブラリを作れないようにしてこいやゴミ
870デフォルトの名無しさん
2019/06/09(日) 20:34:56.29ID:Oof3fMf0
1. より優れたライブラリを提供すれば良い

2. 労力の関係で0スタートで新規作成は無理ということであれば
  糞ライブラリをうまくwrapしてせめて使いやすい形にして見せれば良い

3. 2の場合も中身は追って作り直すこと
871デフォルトの名無しさん
2019/06/09(日) 21:12:37.07ID:Gi1Jt9cY
4. 自身の頭脳がへっぽこだと、高度すぎるライブラリは全く理解できない。
 自分が使いこなせないものはダメである。
 わたしの頭のレヴェルに合わせろ。
872デフォルトの名無しさん
2019/06/09(日) 21:22:41.55ID:/FZVYwra
俺なら使いこなせるって持ってきたやつが一番使えてないパターンなんだが。。
873デフォルトの名無しさん
2019/06/09(日) 21:28:31.78ID:5fLgSAOM
持ってくるwww
2ちゃんガイジのくせに偉くなったと錯覚してて草
874デフォルトの名無しさん
2019/06/10(月) 00:33:49.15ID:3V4oen/z
エモーショナルエンジン搭載。
その日の気分で結果が変わります。
875デフォルトの名無しさん
2019/06/10(月) 00:36:48.31ID:jI97QXDl
それが!

PS2!?
876デフォルトの名無しさん
2019/06/10(月) 08:57:25.07ID:SLwWwvWV
仕事で無駄に時間かけてテンプレート使ったライブラリ(という名のほぼ何もしないクソコード)書かれたら殺意も湧くだろうな、ネットでもそういうのはたまに見かける

熟練者が長年かけて作った、良くできたフリーのライブラリしか知らんアマチュアの人にはわからんかもしれんが
877デフォルトの名無しさん
2019/06/10(月) 09:53:37.04ID:5SR5C4JK
そんなもん飼ってる上司の責任だろ
糞ができるまで放置してたのか?
878デフォルトの名無しさん
2019/06/10(月) 13:21:16.85ID:SLwWwvWV
俺は仕事でそんなの見たことないけど>>854の肩を持ったまでだよ
>>854以降の流れを読んでからほざけ
879デフォルトの名無しさん
2019/06/10(月) 14:24:51.11ID:MigAkPcZ
テンプレートってそんな身構えるようなものかな?
外部ツールとマクロで武装した旧黒魔術系のコードに比べたら、なんぼかましな気がするがw
880デフォルトの名無しさん
2019/06/10(月) 14:45:47.43ID:SLwWwvWV
もちろん便利にはなったけど、STL以来むやみにテンプレートを持ち上げる風潮が・・・
初心者が上級者を気取りたくてテンプレート持て囃し、それだけに留まらずオブジェクト指向や昔ながらのテクニックをこき下ろしてるのを良く見かける

実行時、コンパイル時、プリプロセス時でそれぞれメリットデメリットあるんだけどなぁ
881デフォルトの名無しさん
2019/06/10(月) 15:05:36.77ID:psqZaESW
プロ(仕事)の話と初心者の話が一緒になっちゃってるな
882デフォルトの名無しさん
2019/06/10(月) 15:44:38.79ID:EWMjDPPL
初心者を指導せずほったらかしにしてる上司がいるらしい
883デフォルトの名無しさん
2019/06/10(月) 16:11:30.07ID:psqZaESW
>>854は「普通に」って書いてるけど、
バカがテンプレートライブラリを書いてそれが仕事に害悪をもたらすなんてことが
普通にあるわけがないだろ。
仕事なら出来る奴に書かせるし、趣味なら仕事には無害。
884デフォルトの名無しさん
2019/06/10(月) 17:43:59.55ID:sRT+YLgZ
できる奴が書いたテンプレートライブラリを使いこなせない奴が、グダグダ文句言っているだけだろ。

言っている奴ができる奴なら文句言う前に修正しているわ
885デフォルトの名無しさん
2019/06/10(月) 18:56:35.92ID:OlE51f/u
まあマクロとかテンプレートとかみんな一度はやり過ぎるぐらい作り込んだことあるだろ
多分>>854をそれを経験した直後ぐらいなんだろ
886デフォルトの名無しさん
2019/06/10(月) 19:08:07.57ID:YayWwtn2
無職がおしごとごっこでつか?w
以下、職業プログラマじゃない者は書き込み禁止
887デフォルトの名無しさん
2019/06/10(月) 19:10:51.22ID:ZJKeta/Q
マ板でやれ
888デフォルトの名無しさん
2019/06/10(月) 19:16:09.39ID:EWMjDPPL
労働厨とかいう下級国民
889デフォルトの名無しさん
2019/06/10(月) 19:22:32.34ID:5SR5C4JK
お前らautoとdecltype(auto)の違いとか言語仕様の話しで盛り上がれよ
890デフォルトの名無しさん
2019/06/10(月) 19:22:55.85ID:SLwWwvWV
>>885
>>852もそれ以前の段階だろ
891デフォルトの名無しさん
2019/06/10(月) 19:27:55.90ID:EWMjDPPL
イテレータを受け入れる関数もオーバーロードで書いてるんですか?
892デフォルトの名無しさん
2019/06/10(月) 20:00:14.92ID:J/wxl4Rl
>>886
逆だろ
プロがこんなとこに来て語ってる方が異常だわ
893デフォルトの名無しさん
2019/06/10(月) 20:34:00.20ID:0NZRWrrl
auto int i =0;

K&Rはこれでいけたんだがのう
894デフォルトの名無しさん
2019/06/10(月) 20:37:49.85ID:W52LT1uh
int不要とかそういう話?
895デフォルトの名無しさん
2019/06/10(月) 20:48:57.81ID:9ReisgX6
decltype(auto)はあまり使わないなぁ
長いし
面倒だからauto&&で受けちゃうし
戻り値推論もauto&とかで済ましちゃう
896デフォルトの名無しさん
2019/06/10(月) 21:07:56.06ID:Ii7tq5Jr
>>884
こういうクソな思想が広まってるからクソライブラリがあとを絶たないわけだ。
897デフォルトの名無しさん
2019/06/10(月) 21:35:34.30ID:9ReisgX6
クソクソ言うだけで、何がどう悪いとすら具体的に例を上げないのだからもうね
898デフォルトの名無しさん
2019/06/10(月) 21:36:31.46ID:YayWwtn2
>>892
(´・∀・`)ヘー
アマチュアさんはそう考えるんだね
899デフォルトの名無しさん
2019/06/10(月) 21:55:37.04ID:EWMjDPPL
>>898
え?お前だけだぞこんな底辺まで来てるの
もう少し世間体とか気にしようよ
900デフォルトの名無しさん
2019/06/10(月) 22:04:08.27ID:irHYgLSK
utf8の文字定数って実質ASCIIしか使えないのかコレ
901デフォルトの名無しさん
2019/06/10(月) 22:42:42.99ID:J/wxl4Rl
>>898
アマチュアをからかうプロwww
エンジニアがそんなんじゃ日本の将来は暗いわ
902デフォルトの名無しさん
2019/06/10(月) 23:08:47.95ID:j+S7HtNV
ていうかテンプレートが絡むととたんに問題解決できなくなるプロ
903デフォルトの名無しさん
2019/06/10(月) 23:51:39.69ID:Ii7tq5Jr
テンプレートの問題なんてもう語り尽くしたわ。
それでもバカがあと立たないのもずっと見てきた。。
904デフォルトの名無しさん
2019/06/11(火) 00:19:02.01ID:QaZP7mkq
テンプレートの問題について何も聞いてないし、その状態で語り尽くしたというなら何も問題はないな。
905デフォルトの名無しさん
2019/06/11(火) 00:19:41.89ID:kvB4pOtR
新規参入者がいるってことだから恐悦至極なのではないか
906デフォルトの名無しさん
2019/06/11(火) 00:25:55.32ID:PO+d8+1v
(果たして彼にとってはテンプレートのみが例外的に特殊な問題であって
 テンプレート以外については十分なスキルを有しているのであろうか…
907デフォルトの名無しさん
2019/06/11(火) 00:53:07.47ID:7MvjruKl
コンパイル時に発見できるような問題はそもそもたいして深刻な問題ではない。
908デフォルトの名無しさん
2019/06/11(火) 01:02:03.28ID:TJ/Njjhl
>>907
コンパイル時にわかる程度の問題でも、ランタイムでエラー吐かれたらデバッグ大変だよ
Pythonの型違いで嫌と言うほど思い知った
909デフォルトの名無しさん
2019/06/11(火) 01:13:48.45ID:7MvjruKl
>>908
私は、ランタイムエラーを解決することの困難さに比べればコンパイルエラーなんて大したことない、という意味で言ったんだが。
あなた、読解力がないって遠まわしに指摘されること多くない?
910デフォルトの名無しさん
2019/06/11(火) 01:26:55.77ID:TJ/Njjhl
そもそも文脈不明な中でそれだけ書かれてもなぁ
コンパイル時の分かるような問題かどうかではなく、エラーをコンパイル時に吐いてくれるとデバッグが捗るみたいに書けば良いのに
実際、assertやstatic_assert
SFINAE使ってのなるべく上位レイヤーでエラー発生させるのは重要でしょ
911デフォルトの名無しさん
2019/06/11(火) 01:51:30.87ID:GDgSrcmQ
テンプレート駆使したライブラリ使うと最適化ありなしで速度かなり変わるの困る
デバッグビルドだとくそおっそくてデバッグがままならん
なんか良い解決法ないですかね?
912デフォルトの名無しさん
2019/06/11(火) 02:00:33.22ID:TJ/Njjhl
適当なところで切る
処理の定義を別ヘッダに分けて、特定のソースファイルで定義ヘッダを読み、デバッグが必要ないところは最適化Onで明示的インスタンス化をする
913デフォルトの名無しさん
2019/06/11(火) 02:07:42.02ID:7MvjruKl
>>911,912
> 処理の定義を別ヘッダに分けて、特定のソースファイルで定義ヘッダを読み

自前の切り替え処理自体が不具合の原因になりかねない。
素直にprintf()するのが一番確実でしょう。
914デフォルトの名無しさん
2019/06/11(火) 02:12:17.79ID:bsFR+Nzy
C++14以降でテンプレートのデザインパターンの参考書って無い?
915デフォルトの名無しさん
2019/06/11(火) 02:42:42.36ID:Pe41E3Zb
テンプレート完全ガイドの2版が出てたけど、英語
916デフォルトの名無しさん
2019/06/11(火) 22:59:30.61ID:GDgSrcmQ
>>912
ソースファイルごとに最適化変えるのって簡単にできます?
VSプロジェクトかCMakeで
917デフォルトの名無しさん
2019/06/12(水) 00:12:16.75ID:EuvWtF/E
VSならプロジェクトじゃなくソースのプロパティ選んで最適化変えればそこだけ反映される
まあ、それ用の構成作っておくのが安全

CMakeはわからん
makeなら簡単だけど
918デフォルトの名無しさん
2019/06/12(水) 09:35:50.45ID:eCiQ25Tx
c++の場合、このコンパイラでは通るけどこっちのコンパイラでは通らないとかが
普通にある方が問題。
静的だとか動的かとかそういう問題とはまた違う。
919デフォルトの名無しさん
2019/06/12(水) 09:39:04.87ID:dM+mHpC4
>>917
あ、ホントだ
ありがとうございます
920デフォルトの名無しさん
2019/06/12(水) 12:59:45.38ID:pwRz5TOC
>>918
コンパイラごとに違う言語なんだから当然では?
むしろコンパイラが1つしかない言語以外でそういう問題が発生しない言語ある?
921デフォルトの名無しさん
2019/06/12(水) 16:21:34.99ID:7KGE0Knu
Java、C#は「コンパイラが1つしかない言語」に含む?
どのみち比較の対象が少ないね。
922デフォルトの名無しさん
2019/06/12(水) 16:22:16.09ID:7cC3bFV5
普通はコンパイラは何種類もない
923デフォルトの名無しさん
2019/06/12(水) 16:24:55.92ID:EuvWtF/E
そこら辺もバージョン違いで色々あるよね
924デフォルトの名無しさん
2019/06/12(水) 16:31:31.49ID:7cC3bFV5
そんなの当たり前だろ
925デフォルトの名無しさん
2019/06/12(水) 16:40:28.14ID:7KGE0Knu
「コンパイラが通らない問題を解消するためにビルドツールをご用意いたしました。」
で、configureやらcmakeやらantやらといった車輪の再発明が続々生まれてくる。
926デフォルトの名無しさん
2019/06/12(水) 17:19:03.04ID:79FLB/Pn
ブラウザ戦争に近いものがあるな
927デフォルトの名無しさん
2019/06/12(水) 18:48:39.87ID:eqhLCWed
モダンなC++を学ぶべく右辺値参照について勉強しているのですがさっぱりわかりません
本に右辺値参照は実際は左辺値でstd::moveは実際は何もmoveしない
と書いてありましたが本当に意味がわからない
言葉遊びはいいからわかりやすく教えてくれ
928デフォルトの名無しさん
2019/06/12(水) 19:07:22.06ID:iR6eT4Op
>>927
正確に言うと右辺値参照が左辺値なんじゃなくて右辺値を参照している「変数」が左辺値なのさ。
それ自体ひとつの変数なんだから当然のことだろう?
929蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 19:12:10.36ID:KzwP9Gzw
>>927
誤解を恐れずに言うと、std::moveを付けると、&&が付いた特殊な型になる。その型のことを右辺値参照という。ムーヴコンストラクターやムーヴ代入などは、その特殊な型に対して行われる。
930蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 19:17:22.52ID:KzwP9Gzw
&&が付いた引数は、中身の所有権を他の場所に譲り渡すことができる。
例えば、文字列クラスだったら、ポインタが指し示す文字列の所有権だ。所有権をコピーせずに、移動するだけなら、処理コストが低くて済む。
931 ◆QZaw55cn4c
2019/06/12(水) 19:33:55.80ID:1cw0Fvdf
>>930
所有権って何ですか?
私は一つの関数で new/malloc() した領域を、別の関数に渡し、さらに別の関数で delete/free() してますが、効率よくそういうことをする場合には所有権という架空のフレームは邪魔だと思います
932デフォルトの名無しさん
2019/06/12(水) 19:36:15.70ID:qnyyQkgz
>>931
まさにそれをする為のフレームやん。
933デフォルトの名無しさん
2019/06/12(水) 19:38:15.23ID:eqhLCWed
>>928
あーなるほど確かに変数に代入してる時点でそうですね
右辺値参照を保持する左辺値ということですね
納得です

>>929
std::moveに渡す型も&&ですよね
&&をもらってさらに特殊な&&を返すんでしょうか?
remove_referenceとかその辺がさっぱりです
なぜこれが必要なのか
さらにその型で所有権が移るというのもよくわからず
934デフォルトの名無しさん
2019/06/12(水) 19:45:51.10ID:qnyyQkgz
右辺値というのはほっといたら消える。

どうせ消えるんだったら右辺値が確保してるメモリ、こっちでちゃんと解放するからもらうね→所有権の移動

もちろん所有権移動したので右辺値でメモリ解放しちゃダメよ。
935デフォルトの名無しさん
2019/06/12(水) 19:47:37.87ID:GZDxeRSP
>>933
所有権が移るというか...
T&& x を引数に持つ関数(コンストラクタが多い)は右辺値を受け取るけど、
そこで x の所有するリソースを
分捕っていいという「慣習」「イディオム」があるというだけなんだよ。
936蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:10:41.45ID:0iE+TYdc
>>933
そこを厳密に理解するには、lvalue, rvalue, prvalueなどの値カテゴリを理解しないといけない。
https://ja.cppreference.com/w/cpp/language/value_category
要するにlvalueをxvalueにするために、std::moveを使う。

remove_referenceは、type traitsと呼ばれる「型に対する演算」を行っているに過ぎない。
std::moveの実装のremove_referenceは、冗長な参照を削除している。
type traitsは、テンプレートに慣れないと使いどころが分からないだろう。
937蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:24:57.03ID:0iE+TYdc
class STRING
{
public:
...
// ムーヴコンストラクタ(一例です)。
STRING(STRING&& s) : m_ptr(nullptr)
{
std::swap(m_ptr, s.m_ptr);
}
// ムーヴ代入(一例です)。
STRING& operator=(STRING&& s)
{
std::swap(m_ptr, s.m_ptr);
return *this;
}
protected: char *m_ptr;
};
...
STRING s("abc123");
STRING t;
t = std::move(s);
938蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:34:03.21ID:0iE+TYdc
右辺値参照で挫折したら、Rustに進むがいい。
C++を完全に理解した人間は1%も居ない。
939デフォルトの名無しさん
2019/06/12(水) 20:39:57.61ID:W9DAWVrH
蟻人間は行列理解からだな
940蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 21:02:08.90ID:KzwP9Gzw
あほですみません。。。
941デフォルトの名無しさん
2019/06/12(水) 21:03:19.70ID:wMzR7R80
難しいというよりただ複雑
概念的にそれほど難しいわけではない
942デフォルトの名無しさん
2019/06/12(水) 21:07:19.74ID:JHNh+ipy
ムーブセマンティクスは今世紀最大の発明と言われてるからね。
943デフォルトの名無しさん
2019/06/12(水) 21:11:21.95ID:7TWmWXJk
最近は標準ライブラリも文法も分かりやすくなったなと思ったら
initializer_list絡みの初期化がこのやろう
944デフォルトの名無しさん
2019/06/12(水) 21:17:48.45ID:hxuK959+
・仮引数が右辺値参照&&なら、そこに渡した変数はぶっ壊される(そのかわり速いかもしれない)
・ただし安全のために使い捨ての一時変数か、std::moveを付けて「壊していいよ」と明示したものしか渡せないようになってる

これだけ理解してればだいたいOK
945デフォルトの名無しさん
2019/06/12(水) 21:27:52.71ID:7cC3bFV5
ややこしいとか言う奴に限ってパターンの一覧表作っていつでも参照できるようにしないよな
946デフォルトの名無しさん
2019/06/12(水) 21:52:10.38ID:eqhLCWed
このスレを読んだらだんだんわかってきました

>>937
なるほど
この例で使い方は何となく理解できたかもしれないです
abc123を一切コピーすることなく引き渡しているということですね
コンストラクタに右辺値が渡された時は自動的に&&のコンストラクタがよばれ(これはコンパイラが自動で判断してくれる)
コピーでは明示的に右辺値参照にしないとダメなのでstd::moveを使うと
947デフォルトの名無しさん
2019/06/12(水) 21:59:50.66ID:eCiQ25Tx
右辺値判定はコンパイラ側も困ってそう
948デフォルトの名無しさん
2019/06/12(水) 22:03:44.51ID:hxuK959+
厳密に決まってるから困らないぞ
949デフォルトの名無しさん
2019/06/12(水) 22:42:16.79ID:JHNh+ipy
【 constexpr の掟】
「ブッ殺す」と心の中で思ったならッ!その時スデに行動は終わっているんだッ!
950デフォルトの名無しさん
2019/06/12(水) 23:19:39.59ID:zt+60oVn
>>931
所有権というのは権利を連想させるようないかにもお得な感じを醸し出しているネーミングだが
その実体はオブジェクトの開放を最後の一人だけがやる「義務」に他ならない

で、「最後の一人だけに開放させる」というのを>>931のように
>別の関数に渡し、さらに別の関数で delete/free()
というのは大悪手に他ならない
なぜなら呼び出し先で最後かどうかなど(所有権やレキシカルな手法では)管理し切れない
所有権は呼び出し元ががっちり掴んでおくもの
951デフォルトの名無しさん
2019/06/12(水) 23:36:10.29ID:dKzVqNYa
moveしたあとの変数を使おうとしたらエラー出してくれるの?
952デフォルトの名無しさん
2019/06/12(水) 23:44:04.96ID:vc+7745/
まさか
953デフォルトの名無しさん
2019/06/12(水) 23:51:54.31ID:EuvWtF/E
元の内容について所有権を失っているだけで普通は使える様になっている
スマポならnull相当
vectorみたいなのならemptyもしくは何らかのごみが入っているのでclearか新たに代入すればおk
954デフォルトの名無しさん
2019/06/13(木) 00:01:02.92ID:GxcaYm6A
>>953
>元の内容について所有権を失っているだけで普通は使える様になっている
moveしたあとの変数について述べているのなら完璧な間違いだ
藻前のプログラムはバグだらけだな
955デフォルトの名無しさん
2019/06/13(木) 00:16:54.69ID:VunnpS2y
合ってるだろ
ムーブ後のオブジェクトは内容は未規定だけど有効な状態だぞ、少なくとも組み込み型と標準ライブラリはな
褒められたプログラミングスタイルかはともかく、再利用すること自体が即間違いとは言えない
956デフォルトの名無しさん
2019/06/13(木) 00:26:16.00ID:/TtN03F/
>>951
ムーブコンストラクタを書いて自分で処理するんだよw
957デフォルトの名無しさん
2019/06/13(木) 00:26:51.45ID:scxOg7Fk
コンパイル時に既に顧客の要求を満たしてるとかマジカッコいい
958デフォルトの名無しさん
2019/06/13(木) 01:25:50.43ID:bj2tv0KH
少なくとも標準ライブラリでこれが出来ないと、メンバ変数の内容一つmoveしただけで親のオブジェクトまで使えなくなる。
メンバ変数再利用する術が無いってことだからね
959デフォルトの名無しさん
2019/06/13(木) 01:41:54.12ID:/Ra8Vlso
>>957
未初期化の変数をコンパイル時に検出できるんだからmoveした後かどうかも判定できるはずでしょ
960デフォルトの名無しさん
2019/06/13(木) 02:03:22.10ID:/TtN03F/
>>958
メンバ変数1つムーブって、どういうこと?
普通メンバ変数は右辺値にならないでしょ。
961デフォルトの名無しさん
2019/06/13(木) 03:03:13.46ID:bj2tv0KH
2分木で子のスマポ所有しているような場合、付け替えとかで所有権の移動するときshared_ptrならコピーでokだけど、unique_ptrみたいなのだとmoveする事になるが、メンバ変数で持っていた子の内容をmoveしたあとその変数が再利用可能じゃないと困るだろ
962デフォルトの名無しさん
2019/06/13(木) 03:21:55.87ID:/TtN03F/
>>961
c++11で導入されたmoveはいわゆる所有権の移動とは違うもなので、その場合はmoveは使えないと思う。
963デフォルトの名無しさん
2019/06/13(木) 03:33:01.74ID:fPdkPYzy
>>962
unique_ptrのmoveが所有権の移動じゃないと言うなら一体何なら「所有権の移動」だと言うのか。
964デフォルトの名無しさん
2019/06/13(木) 03:46:23.77ID:/TtN03F/
もともと右辺値参照とmoveセマンティクスの話じゃなかったっけ?
965デフォルトの名無しさん
2019/06/13(木) 04:35:02.91ID:qBl/BLKs
ループの中で int a なる整数を使うとき、ループ内で毎回宣言するのとループの外で宣言して使い回すのどっちが結局速いの?
966デフォルトの名無しさん
2019/06/13(木) 09:17:30.68ID:wJ3u1v7j
自分で計ればいいじゃん
967デフォルトの名無しさん
2019/06/13(木) 11:30:46.72ID:eqzI8P56
ループの外に出せるものは可能な限りすべて出せ
968デフォルトの名無しさん
2019/06/13(木) 12:09:07.93ID:Br82W2pC
範囲for文を使ってそんなどうでもいいことは忘れろ
969デフォルトの名無しさん
2019/06/13(木) 13:18:06.43ID:XHz4etUG
>>967
逆じゃないか?
インスタンスの生成にコストがかかるときはトレードオフだが、そうでないなら可能な限りスコープを狭くなるように変数を宣言した方が良いと思う
970デフォルトの名無しさん
2019/06/13(木) 13:33:35.83ID:eqzI8P56
スコープ気にするならループ関係の部分だけでスコープ区切ればいいじゃん
971デフォルトの名無しさん
2019/06/13(木) 15:27:33.99ID:P5difHG2
>>970
お前は何を言ってるんだよ…
972デフォルトの名無しさん
2019/06/13(木) 15:28:06.57ID:PncfQdvG
cppcheckやVisual Studioのような静的コード解析にかけると「スコープを小さくできるよ?」みたいなアドバイスが出るよね。
実際のところ、どうなんだろうね。typoしにくくなったりスタックサイズが小さくなる利点があるとは思うけど。
973デフォルトの名無しさん
2019/06/13(木) 16:20:20.51ID:fzRArnQO
さすがにこの流れは草
974デフォルトの名無しさん
2019/06/13(木) 16:22:08.63ID:jHLKLHUC
ちょうど今朝cppcheckかけたら
style: The scope of the variable 'c' can be reduced.
「変数 c のスコープを縮小できますよ」って出たわ。
つまり「スコープを狭くできるなら狭くすべき」っていう方針を、
(少なくともcppcheckを作ってる人は)採用してるんだろうな。

どっちが速いかについては、ちょっと最適化オプションつければ
結局同じマシン語になっちゃうんじゃないかしら。
975デフォルトの名無しさん
2019/06/13(木) 16:29:14.63ID:gMp0DWLA
>>967
セオリーだからって鵜呑みにするの良くないよ
(というか文面だけ覚えても意味ない
976デフォルトの名無しさん
2019/06/13(木) 16:30:01.81ID:57+ky1er
スコープ広いほうが良いなら最終的に全部グローバルにしろやになるやんけ
977デフォルトの名無しさん
2019/06/13(木) 17:32:58.81ID:fC2jn4Im
オブジェクト指向って実はprivate変数のスコープをかなり広く取ってるセミグローバル指向だと思う
978デフォルトの名無しさん
2019/06/13(木) 17:37:28.56ID:wJ3u1v7j
おれは思わないな
979デフォルトの名無しさん
2019/06/13(木) 18:39:42.63ID:XHz4etUG
>>977
それってクラスを大きくしすぎているだけじゃないか?
980デフォルトの名無しさん
2019/06/13(木) 19:54:06.23ID:fmTPRROb
この流れは関数切り出しをまともにやってない連中が多いってことだな。。
981デフォルトの名無しさん
2019/06/13(木) 23:39:11.49ID:ktOVSBzy
そろそろ次スレ。わっちょい。
982デフォルトの名無しさん
2019/06/15(土) 13:52:11.56ID:DKQ0QQLH
次スレ
C++相談室 part143
http://2chb.net/r/tech/1560574313/
983デフォルトの名無しさん
2019/06/15(土) 18:36:57.85ID:YCpCWY7o
最近馬鹿の一つ覚えが多いな
>>982 乙乙
984デフォルトの名無しさん
2019/06/15(土) 19:13:31.09ID:wEtwZJzN
覚えてるだけまし。
985デフォルトの名無しさん
2019/06/15(土) 19:37:22.36ID:y49ayDRp
グローバル変数と言っているのはオブジェクト指向スレを荒らしてるバカだろ
986デフォルトの名無しさん
2019/06/16(日) 15:07:40.82ID:TXhOXCMI
任意の型に対応する整数を返すメタ関数ってC++11の標準であったりします?

intなら1
stringなら2
みたいな
上記の技法をなんと呼ぶかわからないので検索ワードも思い付かず…
987デフォルトの名無しさん
2019/06/16(日) 15:52:45.94ID:eI7bdJXk
なんでワッチョイついてんの?
スレ立てミスだろ
988デフォルトの名無しさん
2019/06/16(日) 16:00:01.99ID:gyfVRbSU
>>986
std::type_info::hash_code()が似た機能を持ってるけどメタ関数かどうかわからない。たぶんランタイム。
https://cpprefjp.github.io/reference/typeinfo/type_info/hash_code.html
989デフォルトの名無しさん
2019/06/16(日) 19:19:35.33ID:PFinGY+5
質問ですがC++のクラスのメソッドは、大別すると、
コンストラクタとデストラクタとsetterとgetterと何になるの?
990デフォルトの名無しさん
2019/06/16(日) 19:22:19.26ID:NJ2skO19
move? be?
ステートチェンジしていくのだから、動作になるのか?
991デフォルトの名無しさん
2019/06/16(日) 19:31:47.13ID:Va3vueK+
setterとgetterって何?
Javaじゃあるまいしそんなの言語要素としては用意してないよ
992デフォルトの名無しさん
2019/06/16(日) 21:57:17.90ID:PFinGY+5
>>991
setterとgetterが何かについてはググった方が良い

Javaは詳しくは知らないが、ググった限りにおいて
Javaでもsetter/getterを定義する専用の言語要素など用意されていない印象
993デフォルトの名無しさん
2019/06/16(日) 22:03:52.19ID:PFinGY+5
で、C++/Javaどっちも
 { setter } ∪ { getter } ⊂ { メソッド }
であることは明らかだが、では
 Q1. { メソッド } - ( { setter } ∪ { getter } )には何か専用の名前は無いのか?、
というのが>>909の質問の主旨。

ついでに言うと
 Q2. { setter } や{ getter }というのは本当に確定した集合なのか?
と、
 Q3. 「操作」と言ったときそれは{ メソッド }を指すのか { メソッド } - ( { setter } ∪ { getter } ) を指すのかどっちなんじゃ、
とかも知りたい
994デフォルトの名無しさん
2019/06/16(日) 22:04:40.86ID:fCIbdDP9
>>989
シグナルとスロット(Qt脳)
995デフォルトの名無しさん
2019/06/16(日) 22:54:20.07ID:PFinGY+5
>>994
シグナルとスロットというのはGUI操作を処理する目的のブツなので、
実行時の時間コストがゼロコストに近いことを気体されているハズ、
よって { メソッド } - ( { setter } ∪ { getter } ) の全て(この中には実行時の時間コストが青天井のブツも含まれる)を
包含しはしないのではないか、

まあここまで書いてオモタが、 { setter } ∪ { getter } こそ実行時時間コスト0を期待されるから、
setterやgetterは次の定義で良いのではないかという気がしてきた…

- 属性を取得する目的の操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがgetter

- 属性を変更する目的の操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがsetter
996デフォルトの名無しさん
2019/06/16(日) 22:56:35.57ID:PFinGY+5
後ろ2行訂正orz、
正:
- 属性を取得する目的で設けられた操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがgetter

- 属性を変更する目的で設けられた操作であり、かつ実行時時間コスト≒0の実装が今現在も保たれているのがsetter
997デフォルトの名無しさん
2019/06/16(日) 23:24:38.97ID:PFinGY+5
補足すると、「属性を取得する目的」や「属性を変更する目的」というのは、
インターフェースをクラスの主要な機能とは独立に変更できることを暗に言っている

例えばクラスFooのsetBar()が真にsetterならば、
属性をsetterでセットするのをやめて(Foo::setBar()を廃止して)ファイルから
直接読み込むメソッドFoo::readFromFile()に置き換えても、
クラスの主要な機能Foo::mainFunc()は変更せずに済むハズ

getterについても同様
998デフォルトの名無しさん
2019/06/16(日) 23:56:38.00ID:WOfC/Ugn
operator=がsetterでoperator()がgetterにならない?
999デフォルトの名無しさん
2019/06/17(月) 00:00:50.16ID:x+yzwFNm
c++かどうかなんて関係ない、オレオレ分類しているだけだろ
1000デフォルトの名無しさん
2019/06/17(月) 00:01:28.14ID:7HzfXopw
ずれてるのを承知で書くけど、直接読み込むメソッドってやつも含め setter なんてない方がいいよ
ニューススポーツなんでも実況



lud20250919153010nca

ID:4WryY6scのレス一覧:


163さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/11(木) 20:14:39.34ID:4WryY6sc
Ctrl+ホイールで画面拡大縮小
164デフォルトの名無しさん
2019/04/11(木) 20:36:15.86ID:m6dr6a58
それはおかしい
165 ◆QZaw55cn4c
2019/04/11(木) 20:40:05.89ID:mnND5pqz
>>145
独習の後は同じくハーバートシルトの stl 本(ただしC++11じゃない) でしょうけれども…
166デフォルトの名無しさん
2019/04/11(木) 21:41:21.15ID:Ukf06xgg
【小説】ストリームの悪魔
167デフォルトの名無しさん
2019/04/11(木) 21:42:54.19ID:Ukf06xgg
>>157
でも、C++17だと圏外かも。
168デフォルトの名無しさん
2019/04/11(木) 21:49:17.62ID:Ukf06xgg
C++の人気はだいたいWindowsと同期してて、XPで盛り上がり、その後下降して、Windows10発売後ちょっと盛り上がり、その後下降し始め、WSLでまたちょっと盛り上がり、みたいな感じで上下する。
169デフォルトの名無しさん
2019/04/11(木) 23:00:30.59ID:Fl8qN29n
>>165
ビャーネストロヴストルップのプログラミング入門はどうですか?
170デフォルトの名無しさん
2019/04/11(木) 23:10:49.56ID:Fl8qN29n
>>165
◆QZaw55cn4c さんはプログラマーですか?
171デフォルトの名無しさん
2019/04/11(木) 23:16:43.21ID:4rTUFtuy
STLを解説した本として最も優れてるのどれ?
172デフォルトの名無しさん
2019/04/11(木) 23:26:14.78ID:m6dr6a58
解説するほどのものか?
173デフォルトの名無しさん
2019/04/11(木) 23:29:16.82ID:MrjztWsK
cpprefjpかcppreference.com眺めるのが一番いいのでは
174デフォルトの名無しさん
2019/04/11(木) 23:35:00.33ID:Fl8qN29n
>>171
C++標準テンプレートライブラリがおすすめ
175デフォルトの名無しさん
2019/04/11(木) 23:36:01.51ID:Fl8qN29n
https://cppmap.github.io/
個人的にはこっちもおすすめ
176デフォルトの名無しさん
2019/04/12(金) 00:33:29.09ID:Oce6Eotz
C++ coding standards が、入門書と effective C++の間という感じで良かったのですが、今新品で買いやすい和書の中で同じくらい良い本ありますか
177デフォルトの名無しさん
2019/04/12(金) 07:49:20.68ID:iSiavc0f
>>173
それでコードを書けるようになるとは全く思わん。
178デフォルトの名無しさん
2019/04/12(金) 08:33:36.67ID:iSiavc0f
「ロベールのC++入門講座」を勧める
179デフォルトの名無しさん
2019/04/12(金) 09:37:34.83ID:uO4ZqrOg
コード書くために勉強したことが無い人間とコード書くために勉強した人間に分かれるな
180デフォルトの名無しさん
2019/04/12(金) 10:54:15.24ID:+AQGVq0O
RPGのバトルシステムがいつまでたっても出来ない
どうなってんだコレ
181さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/12(金) 12:39:56.53ID:O/TRJpno
>>180
ドラクエの技術を解説した本を買えば
182デフォルトの名無しさん
2019/04/12(金) 13:56:50.34ID:phN3RSne
そこでレポート プログラム ジェネレータを思い出さないと
文句はユニシスに言っとくれ
183デフォルトの名無しさん
2019/04/12(金) 16:07:32.84ID:JVT+o1/N
RPGなつかしいなw
知人でそれの専門で仕事やってるやついたが
今ごろどうしているだろうか・・
184デフォルトの名無しさん
2019/04/12(金) 16:19:27.39ID:lUKpExyl
>>180
自分が具体的に何を作るのか見えていないとか、自分が何が分からないかがわかっていないとか。
185デフォルトの名無しさん
2019/04/12(金) 18:44:05.94ID:+CDO09PL
std::rpgの登場が待たれる
186デフォルトの名無しさん
2019/04/12(金) 21:59:51.74ID:9AU6i9F6
>>179
どういう分類か興味がありますね…
187デフォルトの名無しさん
2019/04/12(金) 22:35:09.99ID:20VLO3ye
これもSFINAE???

int plus(int a,int b){return a + b;}
double plus(double a,double b){return a + b;}

int main( int argc, char *argv[] )
{
double c = plus(1.0,2.0);
return 0;
}
188デフォルトの名無しさん
2019/04/12(金) 23:46:54.37ID:w8o2kbz2
SFINAEを理解してないな?
templateでわざと失敗させるんだぞ
189デフォルトの名無しさん
2019/04/12(金) 23:50:14.00ID:WMCXK/Zp
それは関数のオーバーロード(オーバーロード関数)
SFINAEはテンプレートに関わる話
190デフォルトの名無しさん
2019/04/12(金) 23:55:37.58ID:yQNXRLnI
SFINAE ていう単語みるたびになぜか
ソフバンの白犬が低い声で「スフィ姉ーーー」て言ってる映像が頭にうかぶ
191デフォルトの名無しさん
2019/04/13(土) 00:08:44.65ID:pAXxDbKI
>>188
最初のplusで失敗して、次のオーバーロードを探しに行ってんじゃん。
もし最初でコンパイルエラーなら、このプログラムはコンパイルされないが、SFINAEのおかげでコンパイルエラーが出ない
192デフォルトの名無しさん
2019/04/13(土) 00:43:18.21ID:2fZ9oexv
>>186
自分の興味のあることをやっていたら気づいたらコードが書けるようになっていた人と
コードを書けるようになることを目標に勉強をした人
前者は入門の仕方を聞かれると上手く答えられない傾向にある
とりあえず好きなもの作ってみて困ったらリファレンスとかみれば良いんじゃないの?とかは割とガチで言ってる
193デフォルトの名無しさん
2019/04/13(土) 01:17:48.59ID:Gm2Aztfm
せやな
なぜそこでロベール!?とか思ったけど、なんか納得した
194デフォルトの名無しさん
2019/04/13(土) 02:30:55.25ID:ExcsBrHj
rvalue・lvalueの見分け方について、=の左に書けないならrvalueって考えで良いですかね?
195デフォルトの名無しさん
2019/04/13(土) 07:01:49.87ID:bq5Y4VLb
>>194 確かダメじゃないかな。
C の例でアレだけど、配列名 int a[5]; の a は
左辺値だけど代入の左辺に置けない、
「代入不可能な左辺値」というカテゴリになる。

『プログラミング言語C++』第4版 §6.4.1 (p. 175)の図によると
左辺値 lvalue は「アイデンティティを持ち、ムーブ不可能」
右辺値 rvalue は「(アイデンティティの有無によらず)ムーブ可能」

…ムーブできるか出来ないかの判断を、左辺値か右辺値か見分けることで
やろうとしてるなら、この説明は循環論法でしかないけどね。
196デフォルトの名無しさん
2019/04/13(土) 08:07:08.65ID:odoOG67D
その場で(1つの文の中で)ムーブされ得るやつが右辺値、ぐらいで良いのでは、
と言いたいところだが
 SomeType a = b = 1;
でbあ右辺値なのかと言われるとうーん…
実際bがその場で所有権を失うこともできる(SomeTypeにムーブコンストラが定義されていた場合
のだから当たらずしも遠からずだとは思うが知らん
197デフォルトの名無しさん
2019/04/13(土) 09:00:05.96ID:TufrjDxL
てかリファレンスだけ必要な奴はここにそういうことを聞きには来ないだろ。
なんかその辺の感覚がすでにずれてるように思うが。
198デフォルトの名無しさん
2019/04/13(土) 09:09:41.91ID:TufrjDxL
>>195
「代入できない」って視点で言えば194で合ってるんでは?
確かに a[0] =5 なんかはできるけど、 a = b みたいにポインタそのものは代入できないわけだし。
199デフォルトの名無しさん
2019/04/13(土) 09:48:36.03ID:ubPOLJQD
>>196
右結合なんだから b は左辺値、 b = 1 が右辺値でいいんでは?
200L
2019/04/13(土) 11:50:51.08ID:U0TmzhoK
全く関係ない話になるけど、JNI = Java Native Interface(?) なるものを使えば、
C++で OS 非依存のアプリが作れるんだね。多分。
C++からJavaの任意のメソッドを呼び出せるし、逆も可能なので、
グラフィックをJavaに描かせて、キーやマウスのイベントをJavaからC++に
伝達すればよさそう。すると、LinuxやAndroidで共通に動くC++アプリ(?)
が出来てしまう。wasmも必要ない。
201デフォルトの名無しさん
2019/04/13(土) 15:06:42.85ID:nqhK1mlk
>>200
C++の部分はネイティブなのでOSに依存する
202デフォルトの名無しさん
2019/04/13(土) 15:20:25.21ID:U0TmzhoK
スマン。CPU毎にバイナリは必要で、
clangに -macrh=xxx-xxx-xxx オプションを指定して CPUやOSを
指定してコンパイルしておくことを想定していた。
ただし、複数のCPU/OS向けのバイナリを1つのAPKにパッケージして、
使用時に自動選択する事が出来るらしい。
203デフォルトの名無しさん
2019/04/13(土) 15:31:06.15ID:pwnjfljv
わざわざjavaを使わなきゃいけないのが気にくわない
その場合、javaだけで書くこと以上のメリットある?
204デフォルトの名無しさん
2019/04/13(土) 15:32:58.01ID:U0TmzhoK
速度が速い。
205デフォルトの名無しさん
2019/04/13(土) 15:33:33.54ID:MSTjQ8pp
てかそれってjavaのアプリ作っているだけじゃ
206デフォルトの名無しさん
2019/04/13(土) 15:36:48.83ID:U0TmzhoK
Androidアプリは、Javaで書くのが基本とされてるけど、
Chromeブラウザなんかはきっと、C++で書いたものを ARMなどの
CPU向けのnative binaryに直し、それをAPKにパッケージ化して
配布してるのではなかろうか? AmazonのFire7 や Fire HD 8 などの
タブレットのCPUはどちらもARMらしい。スマホもARMが多いのかな。
207デフォルトの名無しさん
2019/04/13(土) 15:38:37.67ID:U0TmzhoK
>>205
基本的な描画系と入力系をライブラリ化しておけば、メインロジック部分は
C++で書けると思うよ。
208デフォルトの名無しさん
2019/04/13(土) 15:42:52.17ID:U0TmzhoK
さっき、AdoptOpenJDK なるものをインストールしてみたら、
java と javac コマンドが起動することを確認した。
多分このJDKは、Oracle フリーで無料でクローズド商用利用できると思う。
209デフォルトの名無しさん
2019/04/13(土) 15:46:26.77ID:MSTjQ8pp
jniはjavaのプラットフォームにc++での開発成果物を持ち込むためのもので、そうでないならわざわざそんなもの使う意味は薄い

マルチプラットフォームなアプリを作りたいならQtなりwxなりを使った方が速いし楽
210デフォルトの名無しさん
2019/04/13(土) 15:47:10.35ID:Uq+8Y9kK
>>208
でもいつ訴えられるかわからないから怖いですう。
211デフォルトの名無しさん
2019/04/13(土) 15:58:39.59ID:U0TmzhoK
そもそも、Androidアプリにとってのシステムコール(API)とは、Javaの関数だと
思うので、この構造自体は Android における「最も高速なアプリ」になっている
と思う。
212デフォルトの名無しさん
2019/04/13(土) 15:59:50.41ID:U0TmzhoK
>>210
一般アプリ作者は大丈夫だと思うな。一番危ないのは、オイラみたいに、
ToolKit作って儲けようなんて思ってる人なのさ。(^_^;)
213デフォルトの名無しさん
2019/04/13(土) 16:11:49.69ID:U0TmzhoK
>>209
それらはサイズが大きい。
214デフォルトの名無しさん
2019/04/13(土) 16:14:38.06ID:MSTjQ8pp
糞デカイ上に更新面倒なjavaのruntime入れさせるほうが害悪だろ

flashより糞度が高い
215デフォルトの名無しさん
2019/04/13(土) 16:22:55.04ID:U0TmzhoK
AndroidはJREはプリインストール済みなんじゃないの?
オイラは実機持ってないので全く分からないんだな。
216デフォルトの名無しさん
2019/04/13(土) 16:32:58.01ID:MSTjQ8pp
androidで実質c++でのアプリ開発する仕組みなら既にある
jniそのまま使うよりは大分マシ
217デフォルトの名無しさん
2019/04/13(土) 16:36:12.19ID:jD4Gkzzm
>>216
どうやるの?
218デフォルトの名無しさん
2019/04/13(土) 16:39:07.74ID:2fZ9oexv
何でグラフィックをわざわざJavaに?


>>217
QtならほぼC++で書ける
219デフォルトの名無しさん
2019/04/13(土) 16:42:39.35ID:U0TmzhoK
Qt は、内部的に Backend で Java を使ってるのかな。
220デフォルトの名無しさん
2019/04/13(土) 17:18:44.33ID:ubPOLJQD
なんかJavaを間違って理解してるっぽい。
221デフォルトの名無しさん
2019/04/13(土) 17:21:04.26ID:YpOFfnix
>>219
もういい加減スレ違いだから消えてくれ
222デフォルトの名無しさん
2019/04/13(土) 19:21:24.16ID:mZFqlfzi
vector に格納されてる値から添え字の番号を取得するための最も手軽な方法はなんでしょうか

イテレータから添え字番号を取得することはできますが、あくまで値からやりたいです
223デフォルトの名無しさん
2019/04/13(土) 19:26:24.27ID:ujTcdvrD
格納してる値にインデックスの手がかりがないんだったら
findで探して結果のイテレータから取得するしかないな
224デフォルトの名無しさん
2019/04/13(土) 19:26:44.48ID:2fZ9oexv
>>222
findしてdistance
225デフォルトの名無しさん
2019/04/13(土) 19:31:01.29ID:mZFqlfzi
>>223-224
ありがとうございます
格納する値の範囲もサイズも小さいvectorなので、今回は辞書を作って対応しようと思います
226デフォルトの名無しさん
2019/04/13(土) 19:42:14.61ID:2fZ9oexv
>>225
そんな単純な検索なら3行くらいなんだから作ればいいのに
227デフォルトの名無しさん
2019/04/13(土) 20:12:30.52ID:mZFqlfzi
奇遇なことに辞書も三行くらいです
228デフォルトの名無しさん
2019/04/14(日) 01:05:39.34ID:dZAE6IVm
そら奇遇ですな。
229 ◆QZaw55cn4c
2019/04/14(日) 06:41:11.16ID:AVvjfIV7
>>200
とても興味を覚えました
私は、そろそろ言語間でライブラリも共用されるべきだと考えています
一つの記述体で各言語共通というのはさすがに難しいにせよ、
Java のライブラリと同等なもの(名前と機能が共通のもの)が C++ にもあってもいいんじゃないか?と数年前から妄想しています…
230デフォルトの名無しさん
2019/04/14(日) 07:17:55.90ID:/tPpXRHC
もうJavaのことは忘れて生きろ
231デフォルトの名無しさん
2019/04/14(日) 07:42:20.38ID:YohaqxbG
JavaとC++に共通インターフェースを作るのは反対。
車輪の再発明にしかならない。自由を奪うだけの愚策。
232 ◆QZaw55cn4c
2019/04/14(日) 07:51:31.17ID:AVvjfIV7
>>231
強要するのではなく、オプション(選択肢)として提供するのはどうでしょうか?
233デフォルトの名無しさん
2019/04/14(日) 08:04:00.89ID:YohaqxbG
>>232
共通ライブラリを使う側にとってはオプションであることは当然。
共通ライブラリを作る側の話をすべき。共通ライブラリの規格決定権者が増えすぎること自体が好ましくない。
これはEU諸国がトルコがEU参加することを拒否する感覚に近い。
234 ◆QZaw55cn4c
2019/04/14(日) 08:50:47.24ID:AVvjfIV7
>>233
私は EU には否定的(グローバリストの巣窟であり、普通選挙/自由選挙による合意形成をスキップするポジションを作って人を操作するからくり、トルコもたぶん目が覚めているのでは?)ですが、それはさておき、
すでにある java/classpath スケルトンを真似してしまおう、という低姿勢・低いプライドを貫くのであれば、規格策定者は基本要らなくなりませんか?だって真似するだけだし…
235デフォルトの名無しさん
2019/04/14(日) 08:59:21.33ID:k2b6YaL9
まだC++98しか知らないと、取り残されますか。
236デフォルトの名無しさん
2019/04/14(日) 09:09:36.38ID:YohaqxbG
まずは、Javaと瓜二つな C#、.NET、C++/CLIが今どうなっているか考えてみては。
237L
2019/04/14(日) 09:28:45.12ID:Y1IcINvd
>>229
ちょっと話しはズレるけど、あなたの賛同で嬉しくなったので、入手した耳寄りな
情報を書いておこうと思う。既に知ってる人も当然いると思うけど、
WebAssemblyで作ったようなWebAppliは、ブラウザのURL欄やタイトルバーなどが
表示されてしまうのが難点として残っていた。ところがなぜかElectronでは消せて
いたのでChromeではなくChromiumを使っているからかと思っていた。
ところが、manifest.json なるものを書いて、HTMLにそのファイルを使うように
書いておいて、display プロパティーを standalone やfullscreen にすると、
URL欄が消せるらしい。
238 ◆QZaw55cn4c
2019/04/14(日) 09:41:42.35ID:AVvjfIV7
>>237
もう時代はすっかり html/css/js ですね…
VSCode も Electron ですし…
239デフォルトの名無しさん
2019/04/14(日) 10:28:52.88ID:k2b6YaL9
質問を変えてみよう。
C++11やC++14のコードは、職場で取り入れられてますか。
240デフォルトの名無しさん
2019/04/14(日) 11:49:20.77ID:q+cUY/8y
>>239
ガンガン取りいれてるよ。

なにげにでかいのが日本語識別子の保証。適切に使うと可読性が笑っちゃうくらい上がるw
ヘッダーのプロトタイプ宣言とかが特におすすめかな。

あとchar16_t/char32_tも結構ありがたい。WindowsとUNIX系のOS間で同じ文字コードとして共通で使える型が以前はなかったからね。
20でようやく入るみたいだが、なぜchar8_tを入れかったのか(´・ω・`)

std::initializer_listもかなり便利。型安全で個数も分かる上に、引数の一番後ろじゃなくてもいいので、cの...と違って気軽に使える。

あとよく使うのは範囲for文と、イテレータの簡略化かな。いくつかの演算子をオーバーロードすれば良いだけだから、
結構気軽に範囲for文対応のイテレータを書ける。

ラムダ式も関数の引数に直接関数を埋め込んだりできて便利。
241 ◆QZaw55cn4c
2019/04/14(日) 12:36:24.13ID:AVvjfIV7
>>240
>char16_t/char32_tも結構ありがたい

確かに
char16_t と u"" がなければ win32api W 系とか途方に暮れていたとおもいます… http://2chb.net/r/tech/1434079972/53
242はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 12:43:45.83ID:+qOUcSLR
ガンガン最新を追うべきとまでは思わないけど、
C++11 は最低限度じゃないかなぁ。
243デフォルトの名無しさん
2019/04/14(日) 14:27:39.08ID:6Gooiv09
17便利すぎ
variant,visit,lambda,if constexpr
のコンボで捗る
244デフォルトの名無しさん
2019/04/14(日) 14:34:56.13ID:GSX89KOm
つーか今はもうC++11の機能は使わずにC++で書け!といわれても
やりきる自信がなくなった・・
245デフォルトの名無しさん
2019/04/14(日) 14:39:38.95ID:krJLkXqZ
古い環境だと最近のサンプルがビルドできなくて困る
246デフォルトの名無しさん
2019/04/14(日) 16:02:33.26ID:YQLb8Tsj
c++11とか名乗るから誤解されるんだよ。
c++++とかのがイメージ的に正しい。
247デフォルトの名無しさん
2019/04/14(日) 16:06:36.29ID:dZAE6IVm
C#ってことか。
248デフォルトの名無しさん
2019/04/14(日) 16:12:40.18ID:YQJCzKEv
repeat文って入らないの?
249はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 16:16:59.50ID:+qOUcSLR
>>248
どんな機能?
250デフォルトの名無しさん
2019/04/14(日) 16:20:53.89ID:YQJCzKEv
>>249
repeat(int i; n) で for(int i; i<n; i++) と同じ意味な機能
251デフォルトの名無しさん
2019/04/14(日) 16:22:55.01ID:6Gooiv09
>>250
そんなどうでも良いもののために予約語追加する意味って
その文法じゃ初期値すら変えられない
252デフォルトの名無しさん
2019/04/14(日) 16:24:45.44ID:6Gooiv09
初期値はi=0とかすればいいのか
でもそうなるとi=1にした場合何回ループするのか混乱しそう
253デフォルトの名無しさん
2019/04/14(日) 16:32:41.09ID:IovzG98E
>>229
QtとかGtk、wxとか色々有るじゃん。。。
入れるの面倒くさいなら、Power Builder(だっけ?)とかの有料開発環境はVSを除いてマルチプラットフォームなライブラリが売りだぞ。
254 ◆QZaw55cn4c
2019/04/14(日) 16:36:01.32ID:AVvjfIV7
>>253
Java の人も C# の人も c++ の人も python も ruby も一緒の名前で一緒の機能が使えたら,コストの中でも一番高くつく勉強コストを減らせるのではないでしょうか
255デフォルトの名無しさん
2019/04/14(日) 16:44:39.61ID:YQJCzKEv
>>251
Linuxのカーネルにrepeatマクロ大量にあるもん
256はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 16:52:53.22ID:+qOUcSLR
>>255
ならマクロでいいじゃねぇか。
257デフォルトの名無しさん
2019/04/14(日) 16:53:20.02ID:6Gooiv09
こんなので十分だろ
https://ideone.com/I6e8NZ
258デフォルトの名無しさん
2019/04/14(日) 16:59:12.33ID:6Gooiv09
>>254
wxでもQtでもメジャー言語のbinding位あるだろ
259デフォルトの名無しさん
2019/04/14(日) 17:09:53.36ID:IovzG98E
>>254
うん。
それはまさにそうで、だからQt,Gtk,wxあたりのメジャー所は色んな言語にラッパーがある。
260デフォルトの名無しさん
2019/04/14(日) 17:10:32.89ID:h7KNzBMl
webプログラマーなんですが、右辺値、fowardっていつ使うのか気になります
というかなんでそこまで、厳密に分ける必要があるのか 
業務で使ってる方、使用例を教えてください
261デフォルトの名無しさん
2019/04/14(日) 17:20:10.51ID:sCsh6GnA
右辺値というかムーブ関数の定義といらなくなるオブジェクトにstd::move付けとくのは絶対損にはならないからとりあえずやっとく
forwardはテンプレートライブラリ作るなら必須だけど自分では使ったことないなあ
262さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 17:25:45.47ID:86P3zzV7
コピーにコストがかかる場合は、std::swapやstd::moveのが早い場合があるからね。ムーヴはコピーじゃなくて引っ越しだから。
263デフォルトの名無しさん
2019/04/14(日) 17:27:07.70ID:YQLb8Tsj
まあ理論上はね。。そういう実装になってるかどうかはコード見ないとわからんけどね。
264デフォルトの名無しさん
2019/04/14(日) 17:29:38.84ID:6Gooiv09
基本的には高速化が目的でmove使わなくてもなんとかなるが、
所有権絡むとmoveは必須になる

forwardはtemplateで引数渡すときにmoveやら参照やらの完全転送する場合必須
265さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:16:04.21ID:86P3zzV7
ちょっと実際にやってみようか。コピーコンストラクタで十秒待つコードを書く。ムーヴコンストラクタとムーヴ代入でなにもしない。
この状態でstd::moveを使わないで代入すると十秒かかる。
266さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/04/14(日) 18:17:20.92ID:86P3zzV7
訂正。「コピー代入で十秒待つコードを追加」
267デフォルトの名無しさん
2019/04/14(日) 18:47:05.84ID:xCvd3oj/
>>264
>所有権絡むとmoveは必須
必須とまでは言えない
 T::T(const T& obj)
という通常のコピコンを定義して、コピコンの中でconst剥がししたら
とりあえず所有権の移動もmove無しで逝ける
268はちみつ餃子 ◆8X2XSCHEME
2019/04/14(日) 18:50:44.06ID:+qOUcSLR
>>260
高速化のために出来るのは、アルゴリズムのレベルでの工夫を別にすれば、出来ることはショートカットだ。
高速化とは近道なんだよ。

場合分けが出来るなら、どうしてもやらなければならないこと、やらなくてもいいことを「区別」できる。
区別できるなら、やらなくてもいいことは省略できる。

言語での区別が無くても、たとえば C でも区別を陽に書けばムーブみたいなことだって、そりゃあ出来るけども、
そんなクソ面倒くさいことはしたくないので言語でのサポートがあるとありがたい。

まあ速度的にそこまで必要ないってのなら、区別を積極的に利用しなくてもかまわないよ。
でも、必要なときに出来る方法が用意されているとうれしいし、
C++ を使うときというのはそれなりに実行速度が必要なときだろうし。
269デフォルトの名無しさん
2019/04/14(日) 18:52:09.33ID:xCvd3oj/
とわいえmoveコンストラクタの方が意図が明確なコードが書けるから良い。
moveコンストラクタがふさわしい例っていやーつぎごケース。
class BarWithBigData {
  Foo* m_pBigData;
  BarWithBigData() : m_pBigData(new Foo[1000000000000] { }
  ~BarWithBigData() { delete[] m_pBigData; }
  BarWithBigData(BarWithBigData&& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
  Foo* refBigData() { return m_pBigData; }
};

ちなstd::arrayは使った無いから知らん

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1554124625/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part142 ->画像>5枚 」を見た人も見ています:

  ↓この板の人気?スレ↓(一覧)
 
関数型プログラミング言語Haskell Part30
なぜユニケージはアジャイルを理解してないのか?
プログラミングのお題スレ Part22
設計・命名スレ
JKです、プログラミング誰か教えてください
Zenn
【Electron】ハイブリッドアプリ開発総合【Cordova】
普通科高校高2プログラミング系志望
データ構造とか設計の説明ってどうすんの???
バーチャルVISUALAUDIOプレヤー総合
結局C++とRustってどっちが良いの? 2traits
Regular Expression(正規表現) Part15
nim
Pythonのお勉強 Part51
くだすれDelphi(超初心者用)その57
リファクタリングをただのコード修正と思ってる人へ
Excel VBA 質問スレ Part74
C言語なら俺に聞け 161
gotoのジャンプ先は行番号じゃなくてラベルが使える
個人開発者の雑談スレ
Vue vs React vs Angular vs Svelte Part.10
シェルスクリプト総合 その28
TDD/BDD テスティングフレームワーク xUnit/xSpec
teratailもりあがっtail? 78問目
Excel VBA 質問スレ Part77
C++ Builder vs C# どっちがいいか教えて
GPGPU#5
次世代言語23 Go Nim Rust Swift Kotlin TypeScript
VBSで便利なプログラムを作れスレ
02:30:10 up 6 days, 23:39, 1 user, load average: 96.77, 148.75, 244.15

in 6.7504858970642 sec @[email protected] on 091915