- 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/ (日本語)
- 161 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 02:49:52.74 ID:LC7cWz9a.net]
- 老害が多いから
- 162 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 03:26:54 ID:EDNK6zQt.net]
- そういう機能要望みたいなのここでやる意味ある?
C++Slackでやった方がよくない?
- 163 名前:デフォルトの名無しさん [2020/02/02(日) 03:45:22 ID:mzCY/+E0.net]
- 英語は敷居が高いよ。
- 164 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 05:06:46.10 ID:DTIMfhpJ.net]
- ,,-―--、
|:::::::::::::;;;ノ |::::::::::( 」 <もう構造化は破綻してるんだからおとなしく goto しとけよな! ノノノ ヽ_l ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | バ | '、/\ / / / `./| | カ | |\ / \ ヽ| lゝ | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
- 165 名前:デフォルトの名無しさん [2020/02/02(日) 06:40:45 ID:mzCY/+E0.net]
- じゃあswitchも要らないって事じゃないか。
- 166 名前:◆QZaw55cn4c mailto:sage [2020/02/02(日) 06:51:18 ID:9jRHEnns.net]
- >>149
break n なんて間抜けの極みだと思いますね java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100
- 167 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:37:33 ID:SWo7Ruqh
]
- [ここ壊れてます]
- 168 名前:.net mailto: >>136
Cはgoto殺すために進化してねえよ Cのgotoが関数外に飛べないのはスタック巻戻しのような仕掛けが複雑になりすぎるからで 構造化プログラミングで否定されるからという理由ではない 構造化プログラミングで否定される制御構造を持たないことにするなら breakやlongjmpは存在できないはずだ [] - [ここ壊れてます]
- 169 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:44:05 ID:pBPOCWQ5.net]
- 結論が先にあって理由が後付けだから支離滅裂、一貫性の欠片もない事を書く
もはや宗教
- 170 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 07:46:45 ID:SWo7Ruqh.net]
- ほんと、宗教だね
洗脳されてるやつは強固に思考停止していて 何を言おうが馬の耳に念仏だ
- 171 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:06:14 ID:SWo7Ruqh.net]
- >>159
根底がわかってねえやつが多いからだよ 古典的な基本がわかってねえやつは若造と爺のどっちに多いだろうね 頓珍漢なことを書いて袋叩きにされたからって逆恨みする精神性なやつはどっちに多いだろうね
- 172 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:18:25 ID:9aZda2U6.net]
- break labelでいいんじゃね
gotoと同じだが、labelがbreak的な位置にない場合コンパイルエラーになれば良い
- 173 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 08:27:24 ID:DTIMfhpJ.net]
- label貼るくらいならgoto使う
- 174 名前:デフォルトの名無しさん [2020/02/02(日) 09:22:07 ID:mzCY/+E0.net]
- gotoは便利なswitchだからね。
便利すぎるわこれ。 これからも積極的に使っていこうと思います。
- 175 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 09:40:59.69 ID:7b/FZYuN.net]
- さすがにgotoでジャンプテーブル化の最適化までやる処理系は
まれだと思う
- 176 名前:デフォルトの名無しさん [2020/02/02(日) 09:43:27.45 ID:mzCY/+E0.net]
- アドレス直接指定なのに、テーブル必要ないんじゃないの。
テーブル必要ない分、switchより有利なんじゃないかと思いました。
- 177 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 09:51:12.60 ID:7b/FZYuN.net]
- (条件分岐無しの素のgotoだけでどうやってswitchの便利な代替品にするつもりなのやら…
- 178 名前:デフォルトの名無しさん [2020/02/02(日) 09:53:50.90 ID:mzCY/+E0.net]
- 頑張ってひねり出した!!
けどウンコにしか見えない。 納得できるものを頼む。
- 179 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 09:55:31.36 ID:0Gqmr542.net]
- >>175
お前が何をいってるのか、何を考えてるのか理解できないのに、お前を納得させられる奴なんていないぞw
- 180 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 10:10:20.38 ID:o79zkFFu.net]
- お尻にラベルつけて break ラベル; がいいとか言ってる奴は構造化の意味がわかってなさ過ぎ
ラベルは飛び先じゃなくてループに付けて break ラベル; でそのループから抜けるんだよ なので break ラベル が使える言語はたいていループの頭にラベルをつけるようになってる あと break レベル数 とか言ってる老害は早く滅びろ
- 181 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 10:28:45.43 ID:DTIMfhpJ.net]
- 名前使うならこんな感じか
void main(){ auto scope1 { for(;;){ for(){ break scope1; } } }
- 182 名前:デフォルトの名無しさん [2020/02/02(日) 10:29:18.43 ID:mzCY/+E0.net]
- >>176
俺自身何を言っているのかよくわからないのだが。
- 183 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 10:31:44.19 ID:DTIMfhpJ.net]
- もしくは、forの直後
void main(){ for(;;)scope1{ for(;;){ break scope1; } } }
- 184 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 10:58:10 ID:MNdu0823.net]
- void main()の時点で読む気失せた
- 185 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 11:16:46.30 ID:DTIMfhpJ.net]
- んだこんにゃろ
- 186 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 11:22:39.21 ID:D8WvcGqJ.net]
- ループの先頭にラベルを書くくらいなら
gotoの方が分かりやすい
- 187 名前:デフォルトの名無しさん [2020/02/02(日) 11:25:45 ID:mzCY/+E0.net]
- あの、スレとは全然関係ないんだけど。
Boostでデバッグとリリース判別するマクロってありますか? イテレータを1億回ほど回すのでデバッグだけテストを迂回したいんですが。
- 188 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 11:30:31.96 ID:9aZda2U6.net]
- なぜboost?
- 189 名前:デフォルトの名無しさん [2020/02/02(日) 11:34:47.86 ID:mzCY/+E0.net]
- NDEBUGを知らなかったからです。
おまえらおせーよ。
- 190 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 11:39:04.55 ID:SWo7Ruqh.net]
- NDEBUGってISO/IEC9899やん
おまえさんがboostっていうから レスポンス鈍かったんだよ
- 191 名前:デフォルトの名無しさん [2020/02/02(日) 11:48:10 ID:mzCY/+E0.net]
- だよね。
そうだと思いました。
- 192 名前:デフォルトの名無しさん [2020/02/02(日) 11:49:31 ID:mzCY/+E0.net]
- 今度からはよく考えて質問しようと思います。
- 193 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:38:02 ID:rWwvB4I9.net]
- 今の一重ループを抜けるときの普通のbreakにはラベルを付けないのに
多重ループを抜けるためのbreakにはラベルが無いと読みにくくなるっていう 発想というか対称性というか整合性というか必然性が全く見えないんだが 今ラベル無しの一重breakで誰も発狂することもなく普通に使えているのに 多重breakになった瞬間にラベルが無きゃダメってなるのはなんか弱い 同じことを二回書いたけども ラベル無しでも別に普通に読めるでしょ、今まで読めてるんだから 大体ラベル付けるんならgotoと手間自体は変わりないしな
- 194 名前:デフォルトの名無しさん [2020/02/02(日) 14:40:18 ID:mzCY/+E0.net]
- 今多発今多動ラ大
読み解けなかった。
- 195 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:41:51 ID:gkoi3ncl.net]
- >>190
同意
- 196 名前:デフォルトの名無しさん [2020/02/02(日) 14:43:14 ID:mzCY/+E0.net]
- え、わかるんだ。
すげー。
- 197 名前:デフォルトの名無しさん [2020/02/02(日) 14:47:27 ID:gXxB23XL.net]
- 下方向にだけ飛べるgoto相当機能があればgotoは要らなくなるんじゃない?
- 198 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:53:57 ID:7b/FZYuN.net]
- >>190は、Cにgoto <label>とbreakがあるのになぜCはbreak nを設けるところまで踏み込まなかったのか、とか
break <n>で即値<n>に行き当たったコード閲覧者が行き先を知るために何をせねばならないかとか、 考えた方が良いので は…
- 199 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:55:47 ID:0Gqmr542.net]
- >>190
break nを勧めている人? 対象が1段なのと複数段とでは大きなギャップがあるでしょ。単純に対称性があると言えるものではないと思う。 ラベルつけるならgotoと手間が変わらないというのは同意。ただ、重要なのは手間が減ることではなく、複数段のループの外に出ることが明示されることだから、gotoと意味が混同されず同じ程度の手間でできる記法があるならそれは嬉しい。
- 200 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:56:57 ID:EDNK6zQt.net]
- 現実のC++について話せ
ここで新機能の導入について議論しても無駄だ フォーラムでやれ
- 201 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 14:57:45 ID:gkoi3ncl.net]
- 手間が減ることは重要だよ
ラベル名を考える手間をかけて良いならgotoで良い
- 202 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:01:24.88 ID:rWwvB4I9.net]
- 大体だよ、多重ループはbreakで抜けれないので、仕方なくgoto使うときの
そのgotoを使う都合で必要になった、そのラベルをだよ じゃーブロックにラベルをつけましょう、ってなんでそーなんだよ 元々のbreakにはラベルなんかねーのに breakにラベルが無くて混乱したやつ居るか? ご飯が無いからパンを食べてた状況なのに すり替わってパンありきになって、パンが無きゃ話にならないとか言い出す始末 別にパン(ラベル)なんかなくても、ご飯があるならご飯食べろよ ラヘルラベルって、そのラベルがどこ由来か考えてみろよ、gotoだろ? もう一度言うが、もともとのbreakにはラベルなんかないし、それでみんな普通に過ごせてるし、混乱も起きてない ただ、gotoで抜けるためには文法上/機能上ラベルが必要だったねってだけで、そこに着目しても仕方がない 本質的には無くても別に困らない
- 203 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:05:16.61 ID:jVWLSRwc.net]
- ソースコードチェック目的でプログラム読むとき、gotoが出てきたら
そのgotoの使用方法が問題ないものなのか、いちいちチェックしないといけない。 breakならループ抜けるという意図が明白なので、チェックしなくてよい。
- 204 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:11:47.92 ID:rWwvB4I9.net]
- そんなに名前が無いと発狂するんならもうgoto使えば?って思うし
なんなら関数化して正式に名前付ければって思うし そこまでしたくないってときにbreak nが便利なわけだ やりたいことは「多重ループから抜けたい」であって 「名前を付けたい」ではない!!
- 205 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:11:53.90 ID:gkoi3ncl.net]
- 関数コールも問題のないコールかどうかチェックしないといけないから
使わない方が良い
- 206 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:14:22.99 ID:EDNK6zQt.net]
- それならもうポインタもグローバル変数もマルチスレッドも大量のチェックが必要だから使ってはいけないってことで
- 207 名前: mailto:sage [2020/02/02(日) 15:14:36.78 ID:Rn0kkYyt.net]
- >>199
私と認識が似ていますね >>137 >goto とか break とか continue とか、他の言語(javaとか)でもいろいろ小手先的に弄られているけれども、それに何の意味があるのかいつも不思議におもいますね
- 208 名前:
>>164 java にはラベル付き break が存在して、ほとんど goto です https://www.sejuku.net/blog/20100 [] - [ここ壊れてます]
- 209 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:15:16.61 ID:7b/FZYuN.net]
- 現行のC/C++にはgoto <label>がある一方、break <n>は無い
もしbreak <n>の追加がgoto <label>の実装より難しかったからやらなかったのだとしたら、 break <n>の飛び先がgoto <label>の飛び先より簡単にワカルから優れているという主張は根拠を失う break <n>はわかりにくいか、さもなくばgoto <label>と同等なんである
- 210 名前:デフォルトの名無しさん [2020/02/02(日) 15:16:38.00 ID:mzCY/+E0.net]
- constがスレッドセーフなのも困った。
- 211 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:24:46.36 ID:jpTipLln.net]
- >>201
現実ありえないのは重々承知したうえで書くけど 100重ループを脱出するとき数を数えたくないだろうなって思うじゃん ほかにも3重ループとかで2ndと3rdのループから共通の脱出先ラベルにもできるわけじゃん 文法を拡張する前提ならそこまで想定すべきだと思うね 粗野な即値の数字じゃなくて意味ごとに名前をつけられるようにしてきたのが プログラミング言語の進化の歴史なのでおれは自然だと思うよ というかそういう観点からラベル付きbreakというのは他の言語にはあるわけで で今話してるのはもっと書きやすく読みやすくできないかというトピックでしょ break Nは使えるだろうけど洗練されてない感じ
- 212 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 15:27:11.67 ID:gkoi3ncl.net]
- break [n] はラベル名を考えなくて良い利点がある
使えるなら使いたい ラベル名を考える必要があるならgotoで良い ループの先頭で名前を付けるのはgotoより見づらいから使わない
- 213 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:01:27 ID:o79zkFFu.net]
- break n とか言ってる奴は何故か>>150をスルーしてて笑うわ
- 214 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:07:52 ID:nz0OxFB3.net]
- 他の人は「マジックナンバー」だと思わなかったからでは。
- 215 名前:デフォルトの名無しさん [2020/02/02(日) 16:20:03 ID:gXxB23XL.net]
- foobarやhogeを超える人気なダミー文字列を考えたほうがよほど建設的だぞ、君たち。
- 216 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:35:55 ID:SWo7Ruqh.net]
- break 5; //C
GOTO 5 : REM BASIC
- 217 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:37:04 ID:gkoi3ncl.net]
- マジックナンバーがイヤなら
break break;
- 218 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:50:03 ID:DTIMfhpJ.net]
- 関数で置き換える
引数がめんどうならラムダで置き換える returnが多重breakの代わりになる
- 219 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 16:58:55 ID:SWo7Ruqh.net]
- >>214
多重ループを単一関数に書くって前提だね
- 220 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 17:03:09 ID:7b/FZYuN.net]
- >引数がめんどうならラムダで置き換える ←New!
これは場合による for (i=0; i<INT_MAX; i++) { for (j=0; j<INT_MAX; j++) { (何がしかの処理) } } を for (i=0; i<INT_MAX; i++) { for (j=0; j<INT_MAX; j++) { ((何がしかの処理)を行うラムダ式fを定義) f(); } } とするのではご利益が無いが、 ((何がしかの処理)を行うラムダ式fを定義) for (i=0; i<INT_MAX; i++) { for (j=0; j<INT_MAX; j++) { f(); } } とするのではラムダ式定義時点でループ内の変数を参照できないから場合によっては詰む 結局f()は引数がぞろぞろ並ばねばならない
- 221 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 17:05:11 ID:+9zyTEwm.net]
- >>216
>>75
- 222 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 17:06:58 ID:7b/FZYuN.net]
- >>217
左様 それがラムダ式を適用して解決づべき適切な場合である(キリ
- 223 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 17:15:36 ID:SWo7Ruqh.net]
- ジーオーティーオーというスペルでなければ
制御構造はそのままでいいと言うクソ論法
- 224 名前:デフォルトの名無しさん [2020/02/02(日) 17:52:12 ID:mzCY/+E0.net]
- スレとはあまり関係ないんだけど、nodiscard属性を無視するにはどうしたらいいですか?
- 225 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 17:59:47 ID:MNdu0823.net]
- 変数で受けといてその変数をガン無視すればいいんじゃないの
未使用変数の警告出るだろうけど
- 226 名前:デフォルトの名無しさん [2020/02/02(日) 18:00:14 ID:mzCY/+E0.net]
- やってみます。
アリガト。
- 227 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 18:11:02 ID:o79zkFFu.net]
- >>210
お前の言う「他の人」はマジックナンバーの意味わかってないってことか? このスレ見てたらありえなくもないかと思えてきたわw
- 228 名前:デフォルトの名無しさん [2020/02/02(日) 18:13:54 ID:mzCY/+E0.net]
- あと三日くらいしたらお前より出来るようになってるから。
- 229 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 18:24:38 ID:jpTipLln.net]
- >>220
(void)func();
- 230 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 18:28:22 ID:x1m+isRG.net]
- >>208
昔のBASICは、行番号を勝手に付けてくれていたのでgotoでもラベル名を考えなくて済んだのでとても便利だった。
- 231 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 18:30:04 ID:x1m+isRG.net]
- >>226
なお、アセンブラでは行番号がなかったのでラベル名を考える必要があったが、 意味のあるラベル名を考え出すのは大変だったので、分かり易い場所以外は、 多くの人が、lab1: lab2: lab3: のような連番を使う傾向があった。
- 232 名前:デフォルトの名無しさん [2020/02/02(日) 18:30:14 ID:mzCY/+E0.net]
- >>225
メモっときます。 ありがと。
- 233 名前:◆QZaw55cn4c mailto:sage [2020/02/02(日) 18:31:42 ID:Rn0kkYyt.net]
- >>226
>昔のBASICは、行番号を勝手に auto 文だったかな…
- 234 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 19:36:27.12 ID:7b/FZYuN.net]
- VB6には行番号は無かった
- 235 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 20:26:55 ID:GV9CDSqK.net]
- みんなってc++で何を作ってるの?
ゲーム?
- 236 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 21:07:54.17 ID:YP+sfqkD.net]
- 何も作ってないやつがほとんどだろ
- 237 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 21:15:29.52 ID:GV9CDSqK.net]
- すまん俺の聞き方が悪かったのかもしれん
最近プログラミングの勉強始めて、各言語の用途とか調べたんだけど、ここでも一応聞いてみたかったの 何を作ってるって言うより、どんな開発に携わってるかっていうのを聞きたかった
- 238 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 21:21:43.96 ID:DTIMfhpJ.net]
- テキストエディター
3Dモデラー メーラー
- 239 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 21:25:09.08 ID:vTjBAXNr.net]
- 競技プログラミング
- 240 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 21:39:16 ID:GV9CDSqK.net]
- アプリ開発にも使われるのかー
あざした
- 241 名前:デフォルトの名無しさん [2020/02/02(日) 22:06:04 ID:mzCY/+E0.net]
- いまダブルアレイやってる。
- 242 名前:デフォルトの名無しさん [2020/02/02(日) 22:08:30 ID:mzCY/+E0.net]
- 検索はstd::setやstd::unorderd_setより速いけど、挿入が一桁遅い。
静的構築が速いというので、それもやってみたけど、2/3くらいにしかならなかった。
- 243 名前:デフォルトの名無しさん [2020/02/02(日) 22:10:09 ID:mzCY/+E0.net]
- 検索はstd::setの10倍くらい早いな。
- 244 名前:デフォルトの名無しさん mailto:sage [2020/02/02(日) 22:15:25 ID:0Gqmr542.net]
- >>239
相談ができたらまた来い
- 245 名前:デフォルトの名無しさん [2020/02/02(日) 22:54:22 ID:mzCY/+E0.net]
- >>240
よろしくお願いします。
- 246 名前:◆QZaw55cn4c mailto:sage [2020/02/02(日) 23:01:19 ID:Rn0kkYyt.net]
- 初学者的な質問です、よろしくお願いいたします。
バイナリーファイルを std::fstream f; f.open(filename, std::ios::in | std::ios::out | std::ios::binary); でオープンし、同一ファイルのオープン中に f.read(), f.seekg() でガンガン読むと同時に f.write(), f.seekp() でガンガン書き込む を試しているのですが、seekg(), tellg() と seekp() tellp() は名前は別でもあるにもかかわらず、実はファイルポインタの実体は両者で同一なのでは? という疑いが発生しました。つまり、seekg()/tellg() と seekp()/tellp() とは独立でない、と推測しています ?この解釈で正しいですか? ?こういうのは、C++ iostream レファレンスのどこを見て洞察するべきなのでしょうか? 実際のお題は相変わらずエラトステネスのふるいです https://ideone.com/6Ww9nq
- 247 名前: mailto:sage [2020/02/02(日) 23:18:14.73 ID:Rn0kkYyt.net]
- >>231,233
私は今のところエラトステネスの篩にご執心、という体たらくです…
- 248 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 00:01:01 ID:8riGTZSm.net]
- エラトステネスのふるいで
なんでファイルのリードが必要?
- 249 名前:◆QZaw55cn4c mailto:sage [2020/02/03(月) 00:22:49 ID:X2PbBOAI.net]
- >>244
結構昔から www.asahi-net.or.jp/~KC2H-MSM/pbsb/pbsbm006.htm にとても興味を持っていたのです、二つの隣り合った素数の差を「素数のギャップ」と呼ぶことにしたとき、 『素数のギャップが取りうる値の頻度。はじめは2、4が多いが、そのうち、6の方が多くなる。』 『6がチャンピオンの座を降りるのはいつか。』 『少なくとも 10^14 以下では6がトップであり、それ以降、いつ、6以外の数がトップになるかは、知られていない。』 10^14 までの数であっても全部、篩としてメモリに載せられないので、さてどうしたものかと思案中です、最終的には年スパンでずっと計算させ続けるのに耐えられるようにしたい、と
- 250 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 00:38:27 ID:e9E2NTEb.net]
- その問題だけなら
2次キャッシュに収まるくらいに分けてふるえば速い 間隔も大して大きくならないので ヒストグラムはオンメモリで済む スレッドも簡単に分割出来るので 論理コア数と同じだけスレッドを作って回す
- 251 名前:◆QZaw55cn4c mailto:sage [2020/02/03(月) 00:44:34 ID:X2PbBOAI.net]
- >>246
コメントありがとうございます >間隔も大して大きくならないのでヒストグラムはオンメモリで済む 確かに 10^10 まででも最大 354 というのには驚きました、案外密に分布しているんですね >2次キャッシュに収まるくらいに分けてふるえば速い constexpr unsigned int windowSize_Default = 30 * 5000000; はでかすぎ、ですか いただいたアイディアは、どれも私には難易度が高いのですが、ぼちぼち書いていきます…
- 252 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 00:44:55 ID:e9E2NTEb.net]
- AVXレジスタを使って小さな素数の倍数を消して
ビット命令で大きな素数の倍数を消す 大きな素数の倍数は210ずつ処理する 昔素数の数を数えるプログラムを書いたことがあって 記憶に残ってる範囲ではこんな感じ
- 253 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 00:55:53 ID:jdU9ROmC.net]
- >>229
100 WIDTH 80,25:CONSOLE 0,25,0,1:SCREEN 1:CLS 3 110 XXX 120 XXX 130 IF XXX = XXX GOTO 110 のようなもので、最初に入れるときは自分で行番号も手で打つのが基本ではありました。 115 YYY と入れると、110と120の間に行が挿入されると言う仕組みです。 それだと9個以上は挿入できなくなるので RENUM 命令を使うと行番号を自動的に 振り直すことができました。その場合、GOTOやGOSUBの行番号も連動して変わる 仕組みです。
- 254 名前:◆QZaw55cn4c mailto:sage [2020/02/03(月) 00:55:55 ID:X2PbBOAI.net]
- >>248
コメントありがとうございます! >大きな素数の倍数は210ずつ処理する 私は、2*3*5 = 30 でわりと満足していましたが、2*3*5*7=210 まで拡張されたのですか!?うーむ…
- 255 名前:◆QZaw55cn4c mailto:sage [2020/02/03(月) 00:57:46 ID:X2PbBOAI.net]
- >>249
mon に入って、プログラムタイトルのコメントの行番号を手打ちで全部 0 にする、とか… どうでもいい話でごめんなさい…
- 256 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 01:52:57 ID:YoBHNt10.net]
- 素数は、6n ± 1 か。
6n + 1, 6n + 5 だけ 6n + 3 は、3の倍数だから、素数じゃない
- 257 名前:252 mailto:sage [2020/02/03(月) 01:58:12 ID:YoBHNt10.net]
- A = 6n + 1, B = 6n + 5 とすると、
AA の並びなら、差は6 AB なら、4 BA なら、2 BB なら、6 A,B になる確率がランダムとすると、6 になる確率が2倍!
- 258 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/02/03(月) 11:14:43 ID:HBzF0G80.net]
- >>242
たぶんこの一文。 > A joint file position is maintained for both the input sequence and the output sequence. N3337 だと 27.9.1.1 の第 3 段落にある。 あくまでも std::basic_filebuf ではそうなってるってだけなので、 ストリームバッファ全般に言えるわけではなくて、 独立した位置情報を持つようなものも作れないわけではない。 FILE の fseek のラッピングとして実装することを想定したんじゃないかなぁ。
- 259 名前:デフォルトの名無しさん mailto:sage [2020/02/03(月) 12:59:28 ID:jOrmfTQL.net]
- >>250
ビット命令が48個続くだけ それほど大変じゃない 今だともっと
- 260 名前:良い命令があるかも []
- [ここ壊れてます]
- 261 名前:◆QZaw55cn4c mailto:sage [2020/02/03(月) 20:59:04 ID:X2PbBOAI.net]
- >>254
コメントありがとうございます。いまいちよくわかっていない iostream. の全体像を掴めるよう、いただいたヒントも頼りに潜ってみます >FILE の fseek のラッピングとして実装することを想定したんじゃないかなぁ。 fseek() が 64bit オフセットならいいのですが あるいは win32api::SetEndOfFile() のような、オフセットを指定して trunc する方法があればいいのですが >>242 のバイナリファイルは単に uint64_t な素数を突っ込んでいるものですが、ある日末尾が中途半端にちょん切れてしまったのです…
|

|