1 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:06.26 ID:Nt0XFA2s.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part147 https://mevius.5ch.net/test/read.cgi/tech/1576659413/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語)
2 名前:デフォルトの名無しさん [2020/01/31(金) 21:08:18.93 ID:88e+X9K2.net] >>2 2get乙。
3 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 21:13:28.27 ID:70BTs5bI.net] 前スレの>1000は有能
4 名前:デフォルトの名無しさん [2020/01/31(金) 21:28:55.62 ID:88e+X9K2.net] >>1 1get乙。
5 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 21:32:42.96 ID:aVH6lH01.net] gotoの話でもするか? それともマクロ? ハード絡みのところなんか俺的にはオモロイが
6 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 21:35:23.06 ID:yrj+fbAX.net] 前スレ999だけと循環してないよ 仮想アドレス使ったら必ずページフォルトするわけじゃない MMUの仕組みわかってる?
7 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 21:47:35.65 ID:aVH6lH01.net] こらこら、前スレ999は俺だぞ なりすましす
8 名前:んなカス [] [ここ壊れてます]
9 名前:デフォルトの名無しさん [2020/01/31(金) 21:48:10.26 ID:88e+X9K2.net] https://ja.cppreference.com/w/cpp/io/ios_base/sync_with_stdio これ使うとだいぶ早くなるらしいですよ。
10 名前:デフォルトの名無しさん [2020/01/31(金) 21:48:37.69 ID:88e+X9K2.net] じゃあ俺も前スレ999です。
11 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 21:59:36 ID:yrj+fbAX.net] >>7 999へのレスって意味ね 文脈で理解してほしいところだが で循環論法でないことわかった?
12 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 22:13:11.58 ID:HzrC4w9c.net] 環境を限定しないならこれ以上続けても無駄 全ての環境を知ってるヤツでない限り
13 名前:デフォルトの名無しさん [2020/01/31(金) 22:16:13.72 ID:88e+X9K2.net] すべての環境を知っている。
14 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 22:50:18.80 ID:aVH6lH01.net] >>10 全然わかんねえ! 何言ってんの?
15 名前:デフォルトの名無しさん [2020/01/31(金) 22:56:57.70 ID:88e+X9K2.net] >>13 俺はわかった。
16 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 22:58:17.72 ID:yrj+fbAX.net] >>13 どこが循環してるか言ってみなよ
17 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/01/31(金) 23:38:50 ID:r/XM8LG1.net] struct AutoDeleteFile { const WCHAR *m_file; AutoDeleteFile(const WCHAR *file) : m_file(file) { } ~AutoDeleteFile() { DeleteFileW(m_file); } };
18 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 23:42:29.75 ID:wt6xD5wE.net] それではおじいちゃんのaddress談義 続きをどうぞ
19 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 23:56:13.21 ID:v4E0eL1J.net] ともかく最初に思ってることがあって 要は荒らしてやろうと 今回は結構うまくいった方かな この前は 「std::deque には begin() end() clear() があるのに std::queue と std::stack にそれらが無いのは何故? 有ったほうが便利なのでは?」 って質問で大分いい感じにスレを流した そら、有ったほうが便利に違いないし、無いことに合理的な理由など無いわけだから荒れる そういう、荒れそうなネタ考えるのに毎回結構頭使う ただ、ちょっと前の goto のやつ、あれはダメ 初心者がワーワー騒いでるだけで、ほとんどのベテラン連中は静観してたと思う 俺の狙いはそれじゃない あと、妹大好きです
20 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 23:56:45.81 ID:v4E0eL1J.net] まぁ、もうすぐID変わるからね
21 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 00:02:42.91 ID:9soosqUN.net] ネタばらし興醒めだな C++erそうゆうとこだぞ
22 名前:デフォルトの名無しさん [2020/02/01(土) 00:03:19.42 ID:K9hiSYW1.net] なんだと!
23 名前:蟻人間 mailto:sage [2020/02/01(土) 00:05:22.38 ID:l1s2tvQy.net] 何か難しそうなC++コード、ここに貼ってくれよ。
24 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 00:37:10.49 ID:pUJoLXPw.net] はいはい狙った通りになった宣言ねw
25 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 00:41:09.21 ID:P+PaZ5tD.net] 全然荒れずにコテンパンにのされてたじゃん
26 名前:デフォルトの名無しさん [2020/02/01(土) 00:44:51.53 ID:K9hiSYW1.net] でも、もともと主張がおかしかったから、釣りだったのはホントじゃないの。
27 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 00:49:11.46 ID:pUJoLXPw.net] 釣りっていうかただの構ってちゃんな。何か深い考えがあるというわけでもないし。
28 名前:デフォルトの名無しさん [2020/02/01(土) 00:49:56.15 ID:K9hiSYW1.net] 釣りじゃなかったら相当痛い人だし。 釣りならちょっと痛い人で済むよ。
29 名前:デフォルトの名無しさん [2020/02/01(土) 00:52:13.74 ID:K9hiSYW1.net] ところで僕は自分の職業の板ってまったく見ないんだけど。 ここは職業プログラマが多いの?
30 名前:デフォルトの名無しさん [2020/02/01(土) 00:53:02.37 ID:K9hiSYW1.net] なんで見ないかというと得るものが全くないから。
31 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 01:09:30 ID:50MDw/OE.net] goto ふとん;
32 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 02:05:11.46 ID:efnE+DyP.net] わしも見ない あそこは仕事のグチを書きこむとこやん こっちは言語仕様のグチを書きこむとこや
33 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 02:37:59.97 ID:tav2AwxI.net] break break; bresk break break; break continue; こんな書き方ができたら嬉しい?
34 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 09:17:35.95 ID:9lmFlpKY.net] export importよりひどいw
35 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 10:06:12.21 ID:+WgC03YT.net] 途中friskみたいのも混じってるしな
36 名前: mailto:break 2; [2020/02/01(土) 10:09:42.57 ID:fiLTG5Nb.net] break 3;
37 名前:デフォルトの名無しさん [2020/02/01(土) 10:19:22.01 ID:Bc9LjLbW.net] ネアンデルタール人はホモサピエンスの基底クラスであったか。 ネアンデルタール人のDNA、アフリカの現生人類からも検出 新研究 https://www.cnn.co.jp/fringe/35148770.html 2020.01.31 Fri posted at 13:15 JST
38 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 11:58:10 ID:YFAnTUnh.net] 多重ループを抜ける方法 ループに名前は名前を考えるのがイヤ break [数字] は数えるのがイヤ 関数を分けてreturn はもっとイヤ 変数を使ってbreakで抜けるのは論外 でもgotoはなんとなくイヤ 全ての要望に答えたのが >>32
39 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:17:12 ID:pUJoLXPw.net] バカの要望を聞いてさらにロクでもない方向に行ってしまうっていう わかりやすい例を提供してくれてありがとう。
40 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:30:47.94 ID:+WgC03YT.net] 多重ループにする設計が悪い
41 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:31:58.09 ID:YFAnTUnh.net] ん? 皮肉のつもりで書いたんだけど 真面目な書き込みととらえられるとは思わなかった
42 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:34:39.38 ID:YFAnTUnh.net] 主に>>39 みたいなアホに対する皮肉
43 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:40:18.47 ID:+WgC03YT.net] は?オメェだろアホ
44 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 12:41:53.34 ID:pUJoLXPw.net] あえて説明してるところで恥ずかしいことになってる奴w
45 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 13:00:03 ID:TULylXcw.net] >>37 おれはおもしろいアイデアと思う 他に考えるとしたら やはり名前があった方が変更に強いと思うのでその線でいくと 大抵ループにはイテレータやカウンタが紐づいてるから それを使って for (auto& x : なんとか) { for (auto& y : なんとか) { .break x; } } とかどうだろ? for以外で使えないしforでも宣言空だとだめだけど 頻繁に使うわけじゃないだろうから妥協できるかなと
46 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 13:02:13 ID:YFAnTUnh.net] BASIC
47 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 13:03:32 ID:+WgC03YT.net] なにそのセンスの欠片もない気持ち悪いコード
48 名前:デフォルトの名無しさん [2020/02/01(土) 13:19:23.65 ID:fiLTG5Nb.net] while(){} や do{}while(); で使えないので却下
49 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 15:04:44.31 ID:7G0Z2VlM.net] for(int x = 0; i < ... ) { int y = 0; LOOP: a[x][y]... ++y; if(...){ break; /*多重ループ脱出*/ } goto LOOP; }
50 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 16:42:25 ID:hd+by06W.net] >>37 何個の break を書くのか、と break の後に書く数字は? で 結局のところ同じように数えなきゃならないでしょ。
51 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:21:08.52 ID:9BMLg08w.net] >>32 はcontinue
52 名前:を混ぜられるのが面白いけど、やるならこうだな。 break n; continue n; [] [ここ壊れてます]
53 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:34:30.73 ID:pUJoLXPw.net] こういうしょーもないシンタックスの話って馬鹿でもしやすいのが盛り上がる理由なんだろうな。
54 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:48:52.85 ID:YFAnTUnh.net] 特定の言語のスレ シンタックスを語らずに何を語る?
55 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:51:10.61 ID:YFAnTUnh.net] >>50 じゃあそれで
56 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:55:08.95 ID:YFAnTUnh.net] break 9; を数えたく無いとか言ってたヤツがいたけど そういう時は素直にgotoを使えば良い
57 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 17:55:47.26 ID:rsRLlL5x.net] てか継続が欲しい
58 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 18:08:11.40 ID:6nnXKMBq.net] >>55 C++ ではオブジェクトの寿命の管理と辻褄を合わせなきゃならないんだから full continuation は無理だぞ。
59 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:09:32.76 ID:YFAnTUnh.net] 継続とは?
60 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:12:05.70 ID:YFAnTUnh.net] setjmp のことか
61 名前:デフォルトの名無しさん [2020/02/01(土) 18:12:34.25 ID:Bc9LjLbW.net] ループに名前を付け、その名前で離脱や継続を行う。 ループA {
62 名前:デフォルトの名無しさん [2020/02/01(土) 18:16:20.88 ID:Bc9LjLbW.net] 途中で送信してしまった。面倒だから書き直さないが、 breakやcontinueはキーワードが紛らわしいのでPerlのlastとnextを拝借する。 last ループA; とか next ループA; みたいな感じ。
63 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:16:45.14 ID:YFAnTUnh.net] わざわざ名前を付けるならgotoで良いんでは?
64 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:18:49.32 ID:vKrtBnhX.net] gcc5ぐらいから一気にgcc10にしたらエラー表示とかデフォルトの警告とか色々変わっててわろた
65 名前:デフォルトの名無しさん [2020/02/01(土) 18:19:46.95 ID:Bc9LjLbW.net] >>61 まあね。だけどgotoはフリーダムすぎて良くないでしょ。
66 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:34:11.57 ID:YFAnTUnh.net] いや全然そう思わない gotoで何か不都合がある?
67 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 18:52:41.69 ID:pUJoLXPw.net] >>52 コンパイラ毎の最適化における癖とか、例外の実装についての差異なんかも語ってもいいんだぞ。
68 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 18:56:33.52 ID:6nnXKMBq.net] >>63 goto は自由すぎるけども、ループを何段階も一気に抜けたいとかいう状況がすでにだいぶん自由だと思うぞ。 そういう状況が生まれたらもう駄目なんだよ。 ごちゃごちゃとした使い分けを考えるよりおとなしく goto した方が「そこが悪い」ってのが目立って良い。
69 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:01:47.00 ID:YFAnTUnh.net] 一番使いたいのは2段break 行列や画像など2次元構造では当たり前のように2重ループになる 2重ループを抜けたい状況は設計が悪い と思う感覚が全く理解できない
70 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:01:49.68 ID:TULylXcw.net] 構造化を壊さないことを保証した仕組みで脱出したいってことでしょ
71 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:04:12.92 ID:YFAnTUnh.net] 2次元構造の2個のループを抜ける為に 非常に関連のある2個のループを別関数に分ける この方が設計が悪い というのがおれの感覚
72 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:07:14.52 ID:JWECbGc7.net] >>67 gotoは悪、多重ループは悪、みたいなどこかで聞いたルールを杓子定規に常に遵守すべき絶対ルールのように考える人が少なからずいるんだろうね。声が大きいだけかもしれないけど。
73 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:09:12.42 ID:PjJtYhAX.net] gotoの利用にコンパイラの補佐があればよかったのに
74 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:10:50.63 ID:PjJtYhAX.net] 中カッコ、変数の有効範囲含め スコープ内に飛び込むジャンプを一切禁止、前方のみと決めれば なかなか直観的でわかりやすいキーワード だとおもうのに
75 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:19:24.65 ID:YFAnTUnh.net] 一切禁止とか言うから それが絶対だと初心者が思って思考停止する この典型がgoto 使った方が良い時は使う 再帰も生ポもグローバル変数も多重継承も多重ループも
76 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 19:25:00.72 ID:6nnXKMBq.net] >>67 ここでワイが「悪い」って言ってるのは使うなとか別の方法がとれるとかいうほどの強い意味じゃなくてさ、 気を付けなきゃならないポイントとして目立ってもらわなきゃ困るって程度の意味。 だけど、日常的にそこら中でそういうポイントがあるのならやっぱり悪いとは思うけど……。
77 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:26:16.45 ID:j/qpVk5O.net] 二重ループの脱出は [&]{ for(){ for(){ return; } }}(); で結論出たはずだが
78 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:29:49 ID:YFAnTUnh.net] これはひどい
79 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:44:49 ID:PjJtYhAX.net] それオーバーヘッドかからんの?
80 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:47:58 ID:j/qpVk5O.net] 関数オブジェクトはまともなコンパイラならインライン展開される
81 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:48:45 ID:7G0Z2VlM.net] 贅沢言いすぎだね 素のPascalなんてreturnすら無いからね もはやどうやってプログラムを書いたらいいか分からないレベル
82 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:53:54 ID:7G0Z2VlM.net] Pascalは完璧な構造化言語を目指したから 入口と出口を常に一つずつにするというポリシーがあって それゆえreturnが無いんだよね returnがあると出口があちこちに散らばるので 構造化じゃない、汚い、という考え なお、breakは有るもよう
83 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 19:58:58 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw 0; } }catch(...){} }}();
84 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/01(土) 20:02:08 ID:6nnXKMBq.net] 抽象的なレベルで考えたら break は 「残りの文が if 式で囲まれていると見なして暗黙のフラグを設定する (そのフラグは暗黙にループの終了条件でもある)」 とも考えられるから、構文糖だといえば構造化は壊れていない。 だけどなぁ、プログラムは人が書くものだし、人にとってどう見えるかも大事なんだよな。 そこらへんは見方によってどうとでも理屈を付けられてしまう。
85 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:04:46 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw 2; } } }catch(int d) {printf("%d段階ジャンプしたお¥n",d);} }();
86 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:10:07 ID:tav2AwxI.net] >>82 break 2 も gotoでループを抜けるのも同じ
87 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:24:42 ID:iBA7Xa3w.net] >>83 それは最悪 throw 3; って書いてもチェックされないし
88 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:47:35 ID:BhmlSyWc.net] >>67 3重ループは? 4重ループは? なんで2だけなの?
89 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:52:34 ID:TULylXcw.net] たまに国語力が心配になるやつがいるよな
90 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:53:59 ID:+WgC03YT.net] [&]{ try{ for(){ for(){ throw "リレミト"; } } }catch(const char*s) {printf("%sの呪文を唱えた¥n",s);} }();
91 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 20:56:56 ID:BhmlSyWc.net] >>87 答えられないならレスしないで下さい ウザいだけです
92 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:07:19.54 ID:vKrtBnhX.net] for () { for () { goto done; } } done: どう考えてもこちらのほうが綺麗
93 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:09:23.19 ID:BhmlSyWc.net] >>90 だな 必要になったことを変に偽装する悪癖を治すべき病人多すぎ
94 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 21:14:53.51 ID:6nnXKMBq.net] ほんまになぁ。 そんな簡単なことをラベル付き break だのなんだのって面倒なだけとしか思えぬ。 もう構造化は破綻してるんだからおとなしく goto しとけよな!
95 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:19:44 ID:dP/tym/A.net] >>89 日本語が不得意みたいなので英語で説明しますね Double loop frequently appears to treat a two dimension structure such as matrix or image data, so "break from double loop"is used by programmers related mathematical or visual product. >>67 states that is good reason and s not always bad design.
96 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:22:30 ID:BhmlSyWc.net] >>93 意味わかんね なんでそんなことするの? アホだから? それともバカだから?
97 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:25:42.92 ID:dP/tym/A.net] >>94 It's purely kindness for non-Japanese speaker. Did you not like it?
98 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:26:06.76 ID:tav2AwxI.net] >>92 構造化的には breakも途中でreturnもgotoでループを抜けるのも同じだよ
99 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:26:27.45 ID:BhmlSyWc.net] Пожалуйста, говорите по-японски.
100 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:29:34.25 ID:dP/tym/A.net] なんだロシア人か Я не понимаю >>67 , потому что я не понимаю японский?
101 名前:デフォルトの名無しさん mailto:sage [2020/02/01(土) 21:32:56.91 ID:tav2AwxI.net]
102 名前:はちみつ餃子 mailto:sage [2020/02/01(土) 21:34:56.10 ID:6nnXKMBq.net] >>96 同じだからそれ以上に新しい文法を持ち込んでもそれほど綺麗にならんって! ということを言いたい。