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


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

C++相談室 part153



1 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:18:20.00 ID:i4F+i14Y.net]
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/

テンプレおしまい

281 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 06:35:44.42 ID:e/dVAB4j.net]
コンパイラを実装してみれば嫌でもワカル

282 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 07:44:07.32 ID:+ySY8JLF.net]
そんな極端なキチガイみたいなこと言うな!
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい

283 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 09:07:32.28 ID:CqLBM1Q2.net]
>>273
この人達>>277>>278の言う事を真に受けるのなら、組み込み開発をやるといい。
アセンブラレベルでC++が理解できる。
コンストラクタ、デストラクタがどのようなタイミングで呼ばれるのか、グローバル変数、ローカル変数はどのようなメモリ領域を使うのか、ヒープ領域の挙動...経験を積むと自然にC++の細かい挙動が理解できる。

そういうミクロな話じゃない?
なら、常にC++の最新企画の仕様を調べよ。
入門書に書かれていない便利な機能が色々あるぞ。

そういえば質問内容は完全に理解したいだったな。じゃあ、どっちもやれ。

284 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:13:18.70 ID:e/dVAB4j.net]
完全に理解と型安全には正直ゴールがあるかどうか疑わしい

285 名前:デフォルトの名無しさん [2020/10/18(日) 11:52:18.14 ID:H1xH1BRx.net]
>>279
そういう話になるから結局C++じゃなくてCからやれって話になるんだよ
C++は有害

286 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 11:54:54.20 ID:CqLBM1Q2.net]
>>281
どこに有害要素があるのかわからん。

287 名前:デフォルトの名無しさん [2020/10/18(日) 14:45:22.41 ID:5IG+e1ti.net]
>>279
そうしてソフト構築能力皆無な
C++博士ができあがったのだった

288 名前:279 mailto:sage [2020/10/18(日) 15:23:40.89 ID:Erm+FeMo.net]
> そうしてソフト構築能力皆無な
> C++博士ができあがったのだった

まぁ、C++を完全に理解したところでっていうね。
そんな暇あれば別言語を学んだり、フレームワークの使い方を学んだりDDDやTDDとか学べって話だわな。

289 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 20:08:20.51 ID:347vI+AY.net]
オブジェクト指向プログラミングと言っても、各コンポーネントというかプログラムの最小単位は多くの場合手続き型で記述することになるよな?
どこからどこまでを「最小単位」と見なすか、という問に対する基準というかガイドラインを知りたいな(筆者の主観が混じるとしても)



290 名前:デフォルトの名無しさん [2020/10/18(日) 21:04:28.67 ID:oU6L/1KQ.net]
この時代に生きててSNS発信を頑張らないやつはアホだ。
https://www.youtube.com/watch?v=TPMNmuWQm_o
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc

291 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:05:46.61 ID:e/dVAB4j.net]
ソフトウェアの良い設計というのは
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス

292 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:10:04.50 ID:N2+RrN1t.net]
>>287
あらゆる仕事はスーパーマンがやれば全て解決という
結局何も言ってない空論

現場でマジこれ言ってるやつは求人にクリプトン星人と書いている
人事屋としての究極の無能

293 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:13:31.38 ID:OvLc2vD2.net]
>>285
正直言うと、当たり前のように使われる手続き型という言葉がピンと来ない。

オブジェクト指向におけるソースコードの適切な分割方法を知りたいってこと?

294 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:20:59.62 ID:OvLc2vD2.net]
抽象レイヤーから具象レイヤーまで順番に話を進めていく方が俺は好きだがな。
一言目で無能呼ばわりするのはどうかと。

295 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:26:52.52 ID:e/dVAB4j.net]
>>288
早くうまく書けた奴に次の仕事もやらせるのが一番弊害が少ない
理解や気づきの機会は外から与えることはできるが
それがどう理解や吸収につながるかとなると当人の資質や性向のファクターが大きいすぐる

296 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:36:12.84 ID:OvLc2vD2.n ]
[ここ壊れてます]

297 名前:et mailto: >>287

> ソフトウェアの良い設計というのは
> 結果的に破綻も漏れも無く抽象化できていればおk

そうだね。ただ、具体的にどんなノウハウを与えれば、>>288の言うスーパーマンを生み出すかってのが次の疑問だろうな。

自分はOOP、TDDあたりのノウハウが身につけば余裕だと思っているが。
[]
[ここ壊れてます]

298 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:42:13.49 ID:e/dVAB4j.net]
OOPは物事を整理する仕組みは提供してくれるが
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略

んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、

299 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:21:54.75 ID:OvLc2vD2.net]
>>293

> OOPは物事を整理する仕組みは提供してくれるが
> どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ

その通り。だからこそ、そのセンスを磨かせるためにTDDもセットで紹介してみた。
まず、自分の設計が正しいか妥当性確認する手段も無いと間違ったオブジェクト指向が身に付く恐れがあるからね。

結局のところ、個々のセンスを磨かせないと駄目だが...センスを磨かせる環境を整えるのはリーダーの役割だと思う。
何もない状態でセンスで何とかせよ、よりは改善が期待できるよ。



300 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 00:20:11.11 ID:lLBStDOZ.net]
コンパイラの都合というよりかはcとの互換性とランタイム速度優先のための仕様によるものだろう。
てかむしろもっとコンパイラの都合考えたらもう少しまともな仕様になっとるわ。

301 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 05:23:08.92 ID:f5AfjsGE.net]
スーパーマンはある種の天才で、体系的に天才を教育する方法はないと思う。特に今現在の教育は全体の平均値を上げる事に主眼を置いているから。

大多数がほどほど幸せになる方法としてある程度うまくいってたけど、極少数が全体に絶対的な影響を及ぼすソフトウェアの世界だと効率の悪さが目立ってくるよね。

天才を見つけておいて必要な時に協力してもらうしかないんじゃないかな。全てにおいて天才はいないし来てもくれないので、得意分野では天才的みたいな奴と仲良くしておくぐらいか

302 名前:デフォルトの名無しさん [2020/10/19(月) 11:06:36.21 ID:4f6/Swqm.net]
体系的に天才を教育する方法
ってのは実は簡単で、C++をやらせればいい

303 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 11:15:17.99 ID:8zry6OWB.net]
それは教育する方法ではなく
多数の中から天才を見つける方法なのでは?

304 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 11:37:24.11 ID:VFLM6HTy.net]
選ばれても来るかどうかは天才次第

305 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 12:11:42.92 ID:0OpHGeV7.net]
プログラムの才能のある人材を発掘する方法は、以前だとLispかHaskellをやらせるのが定番だったけど今はどうなのかね?

306 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 12:44:51.59 ID:QMGC8XAt.net]
まずクソ企業で天才が居座るメリット無くね?
誰かが頑張ってくれるだろうみたいな雑魚集団と仕事したくねーわ。

307 名前:デフォルトの名無しさん [2020/10/19(月) 13:49:59.16 ID:asy7wTux.net]
>>296
天才とは言っていない
ttp://equallove-2017.blog.jp/archives/24499215.html
ttp://equallove-2017.blog.jp/archives/24508935.html
ttps://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白

308 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 15:44:35.47 ID:99pu8OZG.net]
>>301
誰かが頑張ってくれるだろうみたいな雑魚がいない企業をおまえさんは知っているの?

309 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 20:56:03.32 ID:lLBStDOZ.net]
残念ながらGAFAでもその種の馬鹿はいる。



310 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 00:14:11.70 ID:0Qd32UHv.net]
君たち C++ の話をしろ

311 名前:デフォルトの名無しさん [2020/10/20(火) 03:00:21.68 ID:C47XLKZf.net]
deleteで解放しようとするとたまに落ちるバグがあるのですが
try〜catchで囲っても、やっぱ落ちます。
これって例外で処理することはできないんでしょうか?
それともやばいバグ過ぎてつかまえられないだけなのでしょうか?

312 名前:デフォルトの名無しさん [2020/10/20(火) 03:05:40.63 ID:U9bI1hKI.net]
投げない例外は捕まえられないのでは?

313 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:09:48.67 ID:C47XLKZf.net]
>>307
これじゃダメなんでしょうか?
すみませんC++よくわかってなくて…

try{
delete p;
}catch(...){
std::cerr << "error!" << std::endl;
}

314 名前:デフォルトの名無しさん [2020/10/20(火) 03:14:10.05 ID:U9bI1hKI.net]
>>308
pのデストラクタの中で何かが起きていて、そこで例外が投げられないから補足できないのでは?

それと経験的に、再現性の無いバグは、十中八九、未定義の記憶域を読むことで発生する。

315 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:23:38.12 ID:NaQDrxzK.net]
丼なスパゲティーコードをメンテしてるか気になる

316 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:27:44.66 ID:C47XLKZf.net]
>>309
デストラクタは何もないので
どこかでメモリ処理がおかしくなってるんでしょうね…
一旦、動くようにしてみたかったのですが、もうちょっと調べてみます。
ありがとうございました。

317 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:36:12.53 ID:NaQDrxzK.net]
そういうときに役に立つのがprintfデバッグだろ
どの工程で起こったのかある程度目星がつく

318 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:45:58.59 ID:C47XLKZf.net]
>>321
継承元の親クラスを何個も辿ってよく調べたら
コンストラクタの中で怪しいポインタにアクセスしている個所がありました。
おそらくこれが原因だと思います。
皆さん有難うございました。

319 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 07:34:58.90 ID:OBwoowsU.net]
デストラクタとdelete演算子はデフォルトでnoexceptなんで、
例外発生時点で異常終了してしまい、try〜catchじゃ捕まえられないそうだ。
https://cpprefjp.github.io/lang/cpp11/noexcept.html



320 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 07:48:57.86 ID:wzOsKsv0.net]
そういう問題じゃねえよ
不定のポインタは検出不能だ

321 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 08:40:05.01 ID:OBwoowsU.net]
いや、今回の問題の解決のために書いたわけではなくて、
>>308のように書いても無駄だと伝えるために書いた。
そのあたり明示せずに書き込んですまん。

322 名前:デフォルトの名無しさん [2020/10/20(火) 11:34:12.27 ID:pHiz9StD.net]
atexit()
exit()
で捕捉出来ないかな

323 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 11:51:22.81 ID:uu0FmVn9.net]
デバッガに頼るのは甘え
プロはprintfだけで正しくデバッグする!

324 名前:デフォルトの名無しさん [2020/10/20(火) 11:56:25.10 ID:pHiz9StD.net]
プロは logger 使うし
百歩譲っても使うのは fprintf の方

325 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:10:32.17 ID:wzOsKsv0.net]
printfが使える環境ならな
そうでない場面がごまんとあるから
選択肢は多いに越したことはない

326 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:21:42.91 ID:NaQDrxzK.net]
シリアルモニタくらいは用意できるだろ

327 名前:デフォルトの名無しさん [2020/10/20(火) 13:21:52.61 ID:vcQhkuUZ.net]
基本的にprintfデバッグの延長
制度化体系化されたprintfデバッグがログ取り

loggerはより高度なprintfデバッグであり、その基本がprintfデバッグになる
この変数を眺めりゃ万事OK という直感が涵養される

loggerの出力先が10万キロ離れたプリンタなこともある

328 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:23:45.82 ID:wzOsKsv0.net]
オシロ使ったりもする

329 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:26:30.76 ID:C+6cO9mm.net]
路地穴は使うよね



330 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:28:29.10 ID:56eYC1pE.net]
スペアナくらいは普通使うよね

331 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:24:10.56 ID:wzOsKsv0.net]
無線屋さん?

332 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:27:50.64 ID:Y3GT62kx.net]
C#を作ったアンダース・ヘルスバーグもデバッガのステップ実行よりもprintfを使うってインタビューで言ってたな

333 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:34:50.28 ID:kixGkAna.net]
尻穴は使うよね

334 名前:デフォルトの名無しさん [2020/10/20(火) 17:41:32.21 ID:AdA8N6MK.net]
C++23のdraftが公開されてた
wg21.link/n4868

335 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 17:48:19.32 ID:wzOsKsv0.net]
>>329
情報ありがとう

336 名前: mailto:sage [2020/10/20(火) 22:08:32.52 ID:glKVTYwZ.net]
>>300
C のポインタ、特に関数ポインタ、とか
リカーシブ、とかで十分でしょう

337 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 00:07:59.13 ID:HJxHMNRz.net]
尻カーブ?

338 名前:デフォルトの名無しさん [2020/10/21(水) 11:15:30.61 ID:xBgAWF1Y.net]
シッタカブリ

339 名前:デフォルトの名無しさん [2020/10/21(水) 11:18:26.05 ID:F4fghCXJ.net]
printfデバッグなんてあり得んけどな。



340 名前: mailto:sage [2020/10/21(水) 11:45:48.97 ID:SYSvovlW.net]
>>334
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね

341 名前:デフォルトの名無しさん [2020/10/21(水) 11:52:32.13 ID:xBgAWF1Y.net]
printf デバッグは完成後に printf の行を消すと動かなくなったりするω

342 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:15:19.02 ID:EPxGxCCv.net]
関数化やクラス化でプログラムを小さくするわけで、あんまり関係ないな
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下

343 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:41:52.63 ID:BgzupaSs.net]
デバッグOffして弊害残すヤツは動作の仕組み把握出来てないだけだろ
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才

344 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 23:09:27.50 ID:oE8Yb73v.net]
非同期で動くブツ同士の通信はprintfデバッグ大活躍なのでは…
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル

printf消去忘れについては条件コンパイルを使えば良いし、
Ad-hocな追加ならいかに大量にやってもソースコード管理システムで安全に消すこともできるわけやし、

345 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 00:49:05.87 ID:VEHOj23m.net]
未定義動作踏んでるときとかにprintfを呼び出すことでたまたま動くようにできたりする
ということか

346 名前:デフォルトの名無しさん [2020/10/22(木) 10:43:36.11 ID:vPWH9GQz.net]
>本当に受け取ったのかがすぐワカル

buffer flush しないと判らんし
flush すると勝手に改行する環境とかあるし
そこまで便利ってほどでもなくね
nonbuffered しろってか

347 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 10:47:06.06 ID:ZfML18uZ.net]
ここまでの話をまとめると
やはりprintfデバッグが最強、ということですね

348 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:25:12.96 ID:QhFI+vyp.net]
#ifdef DEBUG
 #define PUTCHAR(a) (putchar(a), fputc(a, _fpDbg))
#else
 #define PUTCHAR(a) (putchar(a))
#endif
PUTCHAR(*ptr++);
みたいなことをやれば デバッグ時だけ*ptr++ が二回評価されて結果は変わってしまう。

349 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:29:38.65 ID:PrgepFj3.net]
>>343
インライン関数に置き換えられるだろ
少しは頭使え



350 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:30:03.14 ID:Pdn6awLx.net]
デバッグ関係ねーじゃん

351 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:31:48.09 ID:QhFI+vyp.net]
>>344
そんなことは当たり前。
IQが低い人と話すとこれだから困る。

352 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:34:55.42 ID:PrgepFj3.net]
>>346
わかってるならインラインで書けよ池沼

353 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:38:34.09 ID:QhFI+vyp.net]
>>347
駄目な例を敢えて書いたんだ。
どうしてそれが分からないの、あなた達には?
IQが高い人には駄目な例が単なる例として出されたのだと分かるのに
ここの人達にはそれがわからない。

354 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:39:39.22 ID:3l9/RVrp.net]
>>339
非同期なアプリでprintf使うとタイミングが変わることがあるから安心できんな
デバッガよりは遥かに良いけど

355 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:41:58.22 ID:QhFI+vyp.net]
>>336
「printf デバッグは完成後に printf の行を消すと動かなくなったりするω」
と書いていたが、>>340が指摘した理由だけではないので、
そうなる他の理由の1例を>>343で書いた。

356 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:45:00.97 ID:QhFI+vyp.net]
これが考える力なんだよ。
マスコミを含めて「知識知識」と言う人が多いが、生まれつきの頭が悪いと
>>344 >>347 のような馬鹿な発想しか出来ないのでどうにもなら無い。
俺に比べれば、おまえが池沼の癖に。

357 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:48:35.56 ID:t0UpjLw/.net]
マクロを使う必要性が全く感じられなくてリアリティがない

358 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 13:11:57.24 ID:PrgepFj3.net]
>>351
おまえ自分のこと頭おかしいと思わないならかなり進んだ病気だな

359 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 14:13:12.96 ID:+Chcwfvy.net]
>>353
精神病院に行け。



360 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 16:17:21.51 ID:t0UpjLw/.net]
C++の話しねえやつは出てけ

361 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 17:13:27.21 ID:Ztx90rC8.net]
C++ラーメン次郎うめえ

362 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 18:56:55.19 ID:N0tQIHiY.net]
>>350
たぶんみんなは
そりゃマクロ使えば何でもありありだろ
そんなことでドヤるとかバカじゃねーの
って思ってる…

363 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 19:00:31.57 ID:wCIm4hGG.net]
>>335
printfデバッグを肯定するとは
ロートルの吹きだまり感かなりある

364 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 19:08:50.28 ID:lftkiv5C.net]
printfごときで騒いでる方が精神いかれてんだろ。。

365 名前:デフォルトの名無しさん [2020/10/22(木) 19:11:08.49 ID:dQkQeqlj.net]
今はJTAGがあるので、そんなにお金がかからない。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。

366 名前:デフォルトの名無しさん [2020/10/22(木) 19:15:22.48 ID:dQkQeqlj.net]
お前たちは農民に戻れ。
ハイ解散。

367 名前: mailto:sage [2020/10/22(木) 20:52:46.17 ID:RiQFyYLu.net]
>>360
私のマザーボードの JTAG/IEEE1149.1 はどれですか?

368 名前:デフォルトの名無しさん [2020/10/22(木) 21:09:21.98 ID:dQkQeqlj.net]
>>362
OS開発の場合は、専用のボードを用いることを視野に入れる。
それが無理なら、中韓に任せて撤退するべし。

369 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 23:42:23.12 ID:PrgepFj3.net]
#ifdef DEBUG
 #define PUTCHAR(a) do{auto b=a;putchar(b), fputc(b, _fpDbg);}while(0)
#else
 #define PUTCHAR(a) (putchar(a))
#endif
死ねザコw



370 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 08:10:45.22 ID:DuAJkWLf.net]
センズリマクロ

371 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:27:51.26 ID:mEDgqyfG.net]
>>364
else節もコピーしろザコw

372 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:34:55.69 ID:wQpWPNJn.net]
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。

373 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:38:30.14 ID:DuAJkWLf.net]
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」

374 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:48:55.12 ID:wQpWPNJn.net]
inline関数や、>>364のやり方が分かった上で教師は言っている。
それとも、おまえらの通った学校の教師はそんなことも分からない
くらい程度が低かったのか?
どこの学校だよ。

375 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 13:33:06.99 ID:g1Zoxl1Q.net]
ここは教室じゃねぇんだよバカが
とっととキエロ

376 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 13:52:00.54 ID:DuAJkWLf.net]
俺が通った学校の教師か
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな

377 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 15:17:01.62 ID:vvEFmscd.net]
へー、Cにはマクロないんだ?

378 名前: mailto:sage [2020/10/23(金) 16:10:04.88 ID:HRhvOpQY.net]
>>372
#define マクロはありますが、lisp 様仕様マクロはありません

379 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 16:52:36.06 ID:GtGn5ZF1.net]
c++の文句をいって
cの話を延々はじめる
そしてどっちも言い尽くされた話

printfデバッグやってるじじいの特徴



380 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 16:57:39.47 ID:DuAJkWLf.net]
>>372
C++が世に出る前っていつ頃かわかってる?
その頃のCを化学のおじいちゃん先生がやってると思ったの?
おまえさんでさえK&R Cなんか使えるのか?

381 名前:デフォルトの名無しさん [2020/10/23(金) 17:12:38.69 ID:2f10zgGH.net]
DxLib は printfDx で printf 推奨ω

382 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 17:55:43.35 ID:vvEFmscd.net]
>>371 ではC++はまだ世に出てなかったからマクロの使い方は知らなかっただろうと言ってるのに
>>375 では化学のおじいちゃん先生がCなんてやってるわけないだろうと言っている

それではC++が世に出ててもその頃のC++なんておじいちゃん先生はやらなかったのでは。
だとすると >>371 はいったい何が言いたかったのか…

383 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:21:43.75 ID:DuAJkWLf.net]
>>377
同一人物なんだが君は何に見えたのかな??

384 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:22:37.35 ID:DuAJkWLf.net]
で、君はK&R Cは使えるのか?

385 名前: mailto:sage [2020/10/23(金) 20:23:29.32 ID:IQ0Nf1Vk.net]
>>379
K&R1 か K&R2 かを指定してください

386 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:32:42.02 ID:DuAJkWLf.net]
もちろん1よ
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは

387 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 00:28:14.62 ID:5I5noegP.net]
>>341
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い

388 名前:はちみつ餃子 mailto:sage [2020/10/24(土) 02:46:57.76 ID:yf0wmlMH.net]
非同期な処理を観察するってのは非同期な処理が「失敗しているかもしれない」のを見つけ出さなきゃいけないってことだよね。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。

信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。

389 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 06:18:58.62 ID:S/SsQhb2.net]
printfが再入可能でないってどゆこと? strtokみたいに状態を持つのか?



390 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:34:42.41 ID:H3Ix9ZgH.net]
スレッドセーフとリエントラントってどう違うの?

391 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:40:39.80 ID:VP+yyMyu.net]
単一スレッドでも再帰なんかで再入は発生しうる
関数内でクリティカルセクションなどを使ってスレッド同期するようにしていても状態を持つ作りだと同一スレッドからの再入で異常になることはある

392 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:44:50.93 ID:VP+yyMyu.net]
Cランタイムは通常スレッドセーフだよね
だから複数スレッドでprintfを読んだりerrnoを参照してもよい
Windowsの場合、_beginthreadで作成したスレッドはCランタイム安全、CreateThreadで作成したスレッドはCランタイム安全ではないとかいう話もあった

393 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 11:13:00.25 ID:aZOaF4i3.net]
>>385
今、リエントラント(再入可能)という言葉は余り聞かなくなっているが、
ハードウェアに密着したプログラムを書くときに、ハードウェア割り込みの
割り込みルーチンがまだ終わってないタイミングで、同じ割り込みが生じ、
同じルーチンが再帰的に呼び出されることがあり、そのような呼び出しに
対応しているものを「リエントラント」と呼ぶことがあった。
ただし、そのようなプログラムは複雑になりがちなので、ハードウェア
割り込みが生じ、割り込みルーチンがまだ終わってないタイミングで、
同じ割り込みを発生させる原因がもう一度発生しても、割り込みルーチン自体を
呼び出さないようにする手法が使われることが多かった、というか、
その様にプログラムすることが標準とされ、そのためにプログラマブル割り込み
コントローラなるものが、その役割を果たすモードを持っており、それが通常、
有効な状態にされていた。

394 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 11:21:13.53 ID:aZOaF4i3.net]
>>388
一方、単一スレッドプログラムの場合、mallocの中からmallocが再帰的に呼び出される
ことはそもそもない。printfも同様。
なので、複数スレッドが動作している場合でも、各スレッドにおいては、
mallocやprintfが再帰的に呼び出されることはない。
そして、mallocを作る場合、Heapに関する重要データを読み書きする時、クリティカルセクション
のようなもので囲って、1つのスレッドだけが読み書きできるようにするような手法が使われる。
この場合、その区間を実行しているのは、最大で1スレッドのみであり、複数スレッドが
同時に実行することはない。
もちろん、malloc自体は同時に複数のスレッドが呼び出しても良いが、malloc内部で重要データ
の読み書きが行なわれるのは、必ず1スレッドのみで、それ以外のスレッドは待機させられる。

割り込みハンドラをリエントラントにする場合には、このようなクリティカルセクション的な
やり方は絶対に使えない。
まず、割り込みハンドラは、実際に実行しているのは1スレッドと言えば1スレッド。
割り込み自体が、1コアしかなかったZ80などにおいても有った概念でもあるし、それは当然であるが。

395 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 12:26:35.65 ID:w2qFem8L.net]
おじいちゃん
スレタイ読もうか

396 名前:デフォルトの名無しさん [2020/10/24(土) 12:29:55.83 ID:+GevKgJx.net]
coutデバッグと言うべきってか

397 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 12:34:34.81 ID:UCFHvZt3.net]
>>388
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった

398 名前:デフォルトの名無しさん [2020/10/24(土) 14:30:45.75 ID:ZbhxKyMw.net]
ちゅうことはスレッドセーフなloggerが全部同じファイルにログを書き込むんだろ
これもうそのまんま出力に逐一印字させた方がいいんじゃね

399 名前:デフォルトの名無しさん [2020/10/24(土) 15:33:28.19 ID:H3Ix9ZgH.net]
>>391
いや、厳密にはstd::coutデバッグというべき(ドヤ



400 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:35:14.21 ID:LXBNuCv6.net]
printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ

もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな

401 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:37:01.80 ID:LXBNuCv6.net]
ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい

402 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:38:11.89 ID:cYR5fjBG.net]
保障にはならないが〜
実際にはたいていのケースで〜

こういうの一番困る

403 名前:デフォルトの名無しさん [2020/10/24(土) 17:06:18.74 ID:ZbhxKyMw.net]
printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる

404 名前:デフォルトの名無しさん [2020/10/24(土) 17:47:23.40 ID:H3Ix9ZgH.net]
非同期シグナル安全な関数のリストにprintfがない・・・
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html

405 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 17:57:44.41 ID:lGAQOfIr.net]
自前でロックすりゃいいだろ

406 名前:デフォルトの名無しさん [2020/10/24(土) 18:01:02.56 ID:H3Ix9ZgH.net]
printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?

407 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:10:47.63 ID:lGAQOfIr.net]
なら自前のprintf作ればいいだろ
標準に頼りきるバカが

408 名前: mailto:sage [2020/10/24(土) 18:13:44.58 ID:sM3RwuUT.net]
>>402
>自前のprintf作ればいい
こういう台詞は、その能力の欠けたものが得てして言いがちなことだよなあ‥‥と

409 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:32:15.74 ID:lGAQOfIr.net]
己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな



410 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:55:26.18 ID:W2/6It6m.net]
>>404
ワイらがジャップだとしたら
お前はいったい何なんだよ

411 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:34:38.35 ID:kvu4j0jg.net]
>>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw

412 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:40:13.77 ID:LXBNuCv6.net]
割り込みルーチンの中からprintfを読んだら危

413 名前:ッなのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;

OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
[]
[ここ壊れてます]

414 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:44:20.88 ID:LXBNuCv6.net]
割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート

415 名前:384 mailto:sage [2020/10/25(日) 08:15:28.48 ID:B8Qi0Gue.net]
聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・

416 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 08:36:53.97 ID:fEg6VUML.net]
stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、

417 名前:デフォルトの名無しさん [2020/10/25(日) 10:46:14.61 ID:zd7LSfWt.net]
printfデバッグでダメならputデバッグでいいじゃん

418 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:40:46.63 ID:luVqTFHx.net]
printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ

419 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 20:01:20.88 ID:9N87g439.net]
こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。



420 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:03:02.20 ID:1nczmGPR.net]
お金払われればやるよ

421 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:23:32.01 ID:2LDrYrw3.net]
金もらわないとデバッグしないの?
つまらない人生だね

422 名前:デフォルトの名無しさん [2020/10/27(火) 23:25:33.33 ID:IA9V1GzZ.net]
そんなに楽しい事ならお前がやれば?

423 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 13:38:51.49 ID:6icraQaZ.net]
やらないならクソみたいなこと言ってないで黙ってりゃいいのに

424 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:00:21.64 ID:a3TqMSUE.net]
普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前

お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない

425 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:20:56.34 ID:XBU5yUok.net]
1レスの中で矛盾していくスタイル嫌いじゃない

成果に対して報酬があるならお金のためにバグ潰す

時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない

426 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:50:59.10 ID:K+lW0Fsg.net]
いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね

427 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 21:57:28.94 ID:bY6aZzj9.net]
つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット

428 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 22:56:44.64 ID:a3TqMSUE.net]
ここってサラリーマンが多いのね

429 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 23:22:28.00 ID:58wSuA1P.net]
そんなん公然と拒否するか
0から作り直すかの二択だろ



430 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 05:18:26.87 ID:A02IsQiB.net]
>>421
そういう状況はママあるけど
> お金払われればやるよ
って言う状況とは違うだろ

431 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 08:31:38.61 ID:VBEUGOAK.net]
>>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ

432 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:25:24.71 ID:wtO1e/xm.net]
>>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。

433 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:03:30.35 ID:Wx+7ZgRN.net]
C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?

434 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:17:54.24 ID:V+g0QAOl.net]
まずPython処理系を書きます

435 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:26:39.96 ID:XbvTe/rK.net]
内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない

436 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 08:18:43.66 ID:ooe1U4VR.net]
つtransform & lambda

437 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 09:52:48.93 ID:5giIBuWJ.net]
std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });

きっとforのほうが読みやすくて速いと思う

438 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 10:04:53.11 ID:73xlUHi2.net]
あとはvalarrayとかな

439 名前:デフォルトの名無しさん [2020/10/30(金) 10:06:43.70 ID:uffCAw9U.net]
表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね

むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの



440 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 10:22:13.62 ID:73xlUHi2.net]
インタープリターよりは速いよ

441 名前:デフォルトの名無しさん [2020/10/30(金) 11:34:39.85 ID:7MkyV1Cp.net]
https://cpprefjp.github.io/reference/tuple/apply.html

442 名前:デフォルトの名無しさん [2020/10/30(金) 11:37:53.83 ID:7MkyV1Cp.net]
https://www.fluentcpp.com/2020/02/07/transform-adaptor-equivalent-in-cpp/

443 名前:デフォルトの名無しさん [2020/10/30(金) 11:41:09.18 ID:7MkyV1Cp.net]
>>433
ループ分解されて要素分コード増えてる可能性もあるな

444 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 13:24:53.40 ID:Z0VCec0D.net]
forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。

445 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 00:26:11.33 ID:T4Ek6w2r.net]
ヒエッ…、、OpenMPし放題…!

446 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:21:18.11 ID:iuijWT2g.net]
競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?

447 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:26:15.37 ID:Ncbqgsya.net]
>>440
それの速度が競プロで問題になることなんてないだろう。
そんなこと気にするよりアルゴリズムの計算量のオーダーを小さくするとか枝刈りをしっかりするとか有意義な方に頭を使った方がいい。

448 名前:デフォルトの名無しさん [2020/11/01(日) 15:26:18.66 ID:BdB3gM+x.net]
unsignedですか?

449 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:36:25.10 ID:f5GbRfBo.net]
simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない



450 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:38:18.92 ID:Lkejt9vc.net]
>>440
数値のビット数が解っているなら高速化できる

451 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:49:40.49 ID:Lkejt9vc.net]
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
return i>1?i-1:0;

452 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:50:59.41 ID:Lkejt9vc.net]
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
ちょっと間違えた
return i>0?i-1:0;

453 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:00:31.30 ID:Lkejt9vc.net]
>>440
elifのあとはなにを返すんだや?
モロに中途半端やないかいワレ

454 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:02:44.45 ID:h5xlMYDq.net]
つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:

455 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:10:40.93 ID:h5xlMYDq.net]
SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…

456 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:21:41.23 ID:PTqWSgE4.net]
>>440
アセンブラだったら、
 sub eax,1
 jnb lab1
 xor eax,eax
lab1:
 ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
 i = 0;
}
return i;
とか。

457 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 21:20:20.31 ID:f5GbRfBo.net]
クロック数は蛇足でしょ

458 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:07:30.49 ID:gRIt+Ld+.net]
減算が必ず実行されるのはもったいない

... and eax,eax
... jz f@
... dec eax
@@:
... ret

459 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:12:12.57 ID:gRIt+Ld+.net]
test ってあったかな...



460 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:32:16.35 ID:h5xlMYDq.net]
and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費

ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど

461 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:26:45.06 ID:dW4oDZpY.net]
そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら

462 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 01:48:22.41 ID:U5Xnw0i6.net]
sub eax,1
adc eax,0
でなんとかなんないの?

463 名前:デフォルトの名無しさん [2020/11/02(月) 14:18:33.78 ID:WhiKrslV.net]
>>450
一瞬でも < 0 になったらまずい環境なら
if(--i < 0) はダメ

464 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 15:41:23.80 ID:OFRBeKTl.net]
>>452
減算を行う場合の方が頻度が高いと予想されるので、>>450の方がその場合に
命令数が少なくなるので平均速度は速い。

465 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 15:44:36.12 ID:OFRBeKTl.net]
>>456
そのコードは凄い。

466 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 16:02:50.72 ID:sYYC+nm2.net]
>>456
キャリーちゃんか

467 名前:デフォルトの名無しさん [2020/11/04(水) 00:22:15.96 ID:eR5jspY1.net]
Macで環境構築どうすればいいですか
適当に記事あさればいいですか

468 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:32:44.91 ID:pJnXfGcc.net]
yes

469 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 08:22:43.71 ID:3PEz6xa2.net]
>>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。



470 名前:デフォルトの名無しさん [2020/11/04(水) 20:11:40.32 ID:X2fHUOCE.net]
自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。

471 名前:デフォルトの名無しさん [2020/11/04(水) 20:26:01.44 ID:X2fHUOCE.net]
464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。

472 名前:蟻人間 mailto:sage [2020/11/04(水) 20:30:16.22 ID:tdZ4i2Gl.net]
thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実

473 名前:フだと思う。 []
[ここ壊れてます]

474 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:50:15.92 ID:H9SHlq4g.net]
難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ

475 名前:デフォルトの名無しさん [2020/11/04(水) 21:35:20.66 ID:rY/M/1xY.net]
struct S1;

using V1 = std::variant<S1>;

struct S1
{
  std::vector<V1> m_v;
};

これ合法?

476 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 21:39:36.00 ID:occL3fQ7.net]
ダメ

477 名前:デフォルトの名無しさん [2020/11/04(水) 21:44:35.56 ID:rY/M/1xY.net]
主要3コンパイラでコンパイル出来るうえ
https://python5.com/q/djlpoyyw
紹介してる人が居る。

478 名前:デフォルトの名無しさん [2020/11/04(水) 22:56:42.61 ID:rY/M/1xY.net]
駄目な根拠わかりませんか?

479 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 00:49:04.74 ID:WV05kVNu.net]
>>468
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.



480 名前:デフォルトの名無しさん [2020/11/05(木) 01:14:10.93 ID:E+L4EB1M.net]
C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。

これはどう解釈すればいいのかな?

481 名前:デフォルトの名無しさん [2020/11/05(木) 01:20:36.91 ID:E+L4EB1M.net]
これが合法なら良かったんだけど、どうも無理っぽいな。

482 名前:デフォルトの名無しさん [2020/11/05(木) 01:46:23.37 ID:E+L4EB1M.net]
using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。

ってことでいいよね?

483 名前:デフォルトの名無しさん [2020/11/05(木) 01:54:08.91 ID:E+L4EB1M.net]
boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?

484 名前:デフォルトの名無しさん [2020/11/05(木) 02:27:49.98 ID:tM7hzUED.net]
>>463
ありがとうございます。
Mojaveあたりです。

485 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 16:04:48.24 ID:cCU0l/b0.net]
コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?

こんなん
: apple(apple)

486 名前:はちみつ餃子 mailto:sage [2020/11/06(金) 16:58:12.08 ID:O5a96eYY.net]
>>478
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。

487 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 17:39:09.77 ID:gsFmAuV5.net]
Foo::Foo(const Fruit& apple)
: apple(apple),
 banana(apple),
 orange(this.apple) // できない
{

}
が問題無いのか左様か、

いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…


488 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 17:53:59.86 ID:gsFmAuV5.net]
Foo::apple、Foo::banana、Foo::orangeではなくて
Foo::m_apple、Foo::m_banana、Foo::m_orangeとしておけば悩む必要は無い
ヘッダファイルでもこの順で宣言したとして、

Foo::Foo(const Fruit& apple)
: m_apple(apple),
 m_banana(apple),
 m_orange(m_apple) // できる
{

}
でおk

489 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 17:56:49.27 ID:24XfCTPm.net]
>>480
普通に出来るやで。 this->apple の間違いじゃろ。

メンバの初期化順は (初期化リストの順序と関係なく) クラス定義内でデータメンバを書いた順序なので気を付けてな。



490 名前:デフォルトの名無しさん [2020/11/07(土) 17:57:34.44 ID:CPm1qeuk.net]
this
javascriptのやりすぎで脳が壊れたか

491 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 18:00:03.51 ID:24XfCTPm.net]
>>481
名前を同じにしてもうたらまずいケースがあるやないけということを >>480 は言ってるので、
名前変えればいいよってのは的外れ。

492 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 18:13:54.67 ID:gsFmAuV5.net]
>orange(this->apple)
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳

493 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 18:30:43.14 ID:2NiwF/8v.net]
みなさまthx
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…

494 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 20:28:30.69 ID:CTlV0YTN.net]
>>485
いや、エラーだろ

495 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:09:33.18 ID:gsFmAuV5.net]
warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
やもーん

496 名前:デフォルトの名無しさん [2020/11/07(土) 22:24:32.33 ID:CdQvP3Xl.net]
みんなC++でなにしてるの

497 名前:デフォルトの名無しさん [2020/11/07(土) 22:24:57.26 ID:9rEAH6th.net]
polymorphic_allocator対応ですね。

498 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:55:56.65 ID:8rmSPqJO.net]
>>489
c++仕様のお勉強。マウントかますためだけにお勉強。

499 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:11:57.20 ID:yroa9NTK.net]
ジョークに聞こえるがまじでそういうやつがいるからな



500 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 23:39:31.38 ID:24XfCTPm.net]
>>485
念のため規格の当該箇所を探してみたら this についてわざわざ脚注で書いてあったわ。
https://timsong-cpp.github.io/cppwp/n3337/class.base.init#12
初期化順序はくれぐれも気を付けんとあかんけど、this が駄目ということはないのは間違いない。

501 名前:デフォルトの名無しさん [2020/11/07(土) 23:42:39.92 ID:9rEAH6th.net]
おせーな。
5分で探して来い。

502 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 18:09:43.36 ID:FszncLid.net]
VC++って今でも最先端のシステムでも使われていますか?

503 名前: mailto:sage [2020/11/14(土) 18:57:11.05 ID:ovQs8svh.net]
>>495
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど

504 名前: mailto:sage [2020/11/14(土) 18:58:45.49 ID:ovQs8svh.net]
mfc42.dll
の内部バージョン違いに、ほとほと懲りたらしいです……

505 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:03:42.05 ID:liKT9ZZB.net]
あれはひどかったな

506 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:21:56.26 ID:IHUe5vhA.net]
>あれはひどかったな
ちょっなんで??
DLLにstd::vector<T>やstd::string<T>とか渡そうとした???

507 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:23:33.64 ID:liKT9ZZB.net]
仕様が違うものを同じファイル名にするなって話
ISO/IEC14882のライブラリは全く無関係

508 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:25:17.74 ID:IHUe5vhA.net]
手製DLLへのデータ渡しににはchar[]とか基本型onlyとして
CRTをスタティックリンクしたらランタイムのインストールすら不要
で完全解決…!

全要素手製でコントロールできればの話ではある


509 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:37:00.66 ID:liKT9ZZB.net]
なんか話になってないな
つまらんからやめる



510 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:41:20.95 ID:wQlu6eHI.net]
std::string<T>て

511 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:56:02.78 ID:IHUe5vhA.net]
CRTではなくてこの場合MFCをスタティックリンクしたらやったスマンコ、

512 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:36:52.05 ID:YXN+C+qx.net]
>>496
ありがとうございます

513 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:45:20.15 ID:z250o8Kw.net]
VC++ってことはプラットフォームはWindows固定か
Windows前提ならC++使い続ける理由は特にないね

514 名前:デフォルトの名無しさん [2020/11/15(日) 14:27:41.73 ID:1NoBqfO6.net]
MFCなんか使うからだろ
自己責任

515 名前:デフォルトの名無しさん [2020/11/15(日) 15:39:12.99 ID:ZF6xjL9s.net]
webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?

516 名前:デフォルトの名無しさん [2020/11/15(日) 16:01:31.41 ID:fUqPXTtq.net]
ツールはReactかVueですね。

517 名前:デフォルトの名無しさん [2020/11/15(日) 16:32:14.80 ID:U+/Dwi3J.net]
マルチ禁止

518 名前: mailto:sage [2020/11/15(日) 21:02:27.25 ID:XnBy/n8J.net]
>>510
そのマルチポスト禁止っていうのは fj の時代ならまだしも、2ch に当てはまるのですか?
マルチポストとクロスポストの違いはなんですか?

519 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 21:29:20.86 ID:UQYtdYHl.net]
自分の頭で考えることを放棄したマニュアル人間



520 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 21:57:12.59 ID:9LlY7wvz.net]
いまは2chは無いんだよおっさん

521 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 22:32:36.77 ID:UQYtdYHl.net]
くだらねえ突っ込みだな
それで誰かはっとする奴がいるとでも思っているなら
どうしようもねえバカ野郎だ

522 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 23:02:36.34 ID:QB7zB470.net]
なんにせよスレチなんで

523 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 23:22:10.25 ID:AQ/HY5jp.net]
>>511
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ

524 名前: mailto:sage [2020/11/15(日) 23:35:29.19 ID:XnBy/n8J.net]
>>516
確かにその感情は理解できます

525 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:15:05.39 ID:tkpwZn9D.net]
>>508
windowsだけで動けば満足ならメモリ読み書き関連はwinapi
デバッガ、逆アセ関連は pythonによるバイナリ解析技法 とかそれに似たような本読めば少しは載っていると思います。

526 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 04:42:45.86 ID:tkpwZn9D.net]
スレを全く読まないで反射で答えてしまいました。
今気付きました、すみませんでした。

527 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 06:44:11.49 ID:OL16ghBV.net]
>>516
心が狭い、というかてめーの都合だろそれ
勝手にイラついてろよ、こっちにゃ関係ねえわ

528 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 07:50:58.47 ID:u3jXok4q.net]
>>520
マルチするのはお前の都合だろ。人の時間を無駄に使わすな

529 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 07:59:26.89 ID:OL16ghBV.net]
互いにてめーの都合だからな
知らん馬の骨に命令すんな
何様のつもりだ



530 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:01:26.23 ID:QRq3yxwv.net]
時間を無駄に使うって>>516みたいな話?
他で解決済みだったら無駄になるって意味がよくわからん。回答したらちゃんと感謝してほしいとか?

531 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:05:45.08 ID:OL16ghBV.net]
ここは技術板なのに
クロスポストできるシステムを作ろうともしない
フリーライダーが吠えてるだけだ

532 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:26:08.12 ID:GdRLcc7O.net]
bool GoToHell(bool gotoTravel, bool gotoEat)
{
return (gotoTravel || gotoEat);
}

533 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 09:04:54.68 ID:T8j9su4c.net]
>>522
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw

534 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 10:24:06.29 ID:OL16ghBV.net]
>>526
だからどうした?
ぐうの音も出なくてそんなくだらんことぬかしたか?

535 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:03:12.40 ID:2ijHHLJY.net]
ぐう😪

536 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:23:44.07 ID:hTDmnJOp.net]
腹ペコかよ

537 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:36:22.45 ID:OL16ghBV.net]
勝負あったな
これからもマルチであろうが何であろうが
どこにどんな投稿をしようが口出しは無用だ
収穫ゼロでご苦労だったな

538 名前:デフォルトの名無しさん [2020/11/16(月) 12:57:31.91 ID:sF1WJXNT.net]
仮に百歩万歩譲ってクロスポストの機能が無いからマルチを許すとしても
マルチ投稿にはオリジナルのスレとレス番へのリンクの同時投稿を義務付けるべき

539 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 13:00:20.03 ID:OL16ghBV.net]
義務違反したらどうなるんだ?
実効性のない俺ルールを勝手に吠えてろセンズリこき野郎



540 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 13:07:05.30 ID:BvdXplQc.net]
義務ではないよ
答えの付かない質問だけが残ってるのって寂しくない?
質問に答えが付かないって認識が定着しちゃうとコミュニティの衰弱にも繋がる
悲しいね

541 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 15:15:24.81 ID:OL16ghBV.net]
どう書けば回答が付きやすいかなんて
みんなそれぞれ考えてることだ

俺様が考えたベストな方法なんて誰も興味ねえんだよ
コミュニティの衰弱に繋がるキリッだっておバンバン

俺様が自分の頭で考えてるのはまだマシなほうで、
fj時代で頭の更新が止まったままの化石か
古代遺跡から発掘した碑文に洗脳されたバ…若者か知らんが
おおかたそういう手合いのマニュアル人間だろどーせ

542 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 16:33:15.96 ID:MWCEXPaa.net]
誰か教えてほしい。データベースの基本中の基本だと思うけどよくわからんです
数万の部品の名前があるとして簡単にa,b,c,d,eとする
すでに、c,b,a,eと登録されているところに新たにdを登録するとき、順番も大事で、
d,c,b,a,eとなります
ここで、cを削除したいとき、この順番だけで並んでいると数万のデータをひとつずつ一致確認していかなくてはいけないので
めちゃくちゃ時間がかかる。よってソートして順番もひもづけした
a4,b3,c2,d1,e5というのを作っておいて、cを削除するときはここから2分探索でcは2番目というのがわかるのでd,c,b,a,eの2番目のcを
削除するのと同時に、a4,b3,c2,d1,e5のc2も削除するとこちらはa4,b3,d1,e5となってしまう。でもこちらで欲しいのは
a3,b2,d1,e4で、つまり、2以上の数字は全部マイナス1して回らないといけなくなって、ここにまた時間もかかってしまう
これは新しいデータを登録するときも同じ原理でプラス1しないといけないです
もっとスマートないい方法はないでしょか

543 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 17:09:54.39 ID:OL16ghBV.net]
a4,b3,c2,d1,e5
↓わざわざこんなことしなくていいと思う
a3,b2,d1,e4

a4,b3,c0,d1,e5 さらには
43015 でいいじゃないか

544 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 17:40:46.63 ID:hTDmnJOp.net]
データベースは空き時間にデータをソートするからな
登録したてのデータはライトバックデフォだろ
で、参照数の多いデータを頭に持ってくる
木というかハッシュを何個かに分けて参照数の差で管理すればやり易い

545 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 18:17:01.54 ID:uQizIpoB.net]
そもそも既製RDBを使う話?それともデータベース的なものを自分で作る話?
そこハッキリしないと平行線だぞ

546 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 18:43:02.87 ID:MWCEXPaa.net]
>>536
では、
d,NULL,b,a,e
a4,b3,c0,d1,e5
としたあとに、新しいデータda(dとeの間)が来たとき、順番は
da,d,NULL,b,a,e
となりますが、ソートの方は
a4,b3,c0,d1,da??,e5
はどうなりますか?逆順にすればいいという話もありますがもっと本質的にいい方法はないかと
>>538
自分でプログラミングする話です
C++なので、アドレス参照の*x や**x みたいのを上手に使って出来ないかなあって

547 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:00:52.03 ID:uQizIpoB.net]
単に順序の管理用と名前検索用の赤黒木かなんかを作っとけばいいだけの話じゃないの?
違うの?

548 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:00:58.93 ID:Jgt25IWR.net]
例えば
map<id,parts> master; // パーツマスター
list<id> seq; // パーツの並び
map<id, list<id>::iterator> lookup// 各パーツのseq中の位置の参照テーブル
ってしておいて、seqに突っ込んだ要素はlookupに参照用の登録をする。

549 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:32:53.88 ID:Z6yFFWiy.net]
>>540
そう言うことやね
そもそも配列で要素削除したら詰める処理にめっちゃ時間かかるし



550 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:36:29.66 ID:oSwqK6E+.net]
>>535
「間に入れる」という操作が少ないのなら、ソート用のシリアル番号を項目に用意する。
頻繁に挿入操作するとしてもシリアル番号を有理数化して調整すればいい。

551 名前: mailto:まあ回答は無理でしょうが… [2020/11/16(月) 20:21:10.58 ID:K6OrqUDY.net]
>>537
RDBS はデフォではソートなんかしないし、ソートされたデータが欲しかったら INSERT/UPDATE/DELETE 時にすでにインデックスを張っておくように、あらかじめわざわざ指定するものだと思いますが
空き時間にバックグラウンドでソートする DB なんて聞いた事がないですね
よろしかったら、そういう DBS が何か教えていただけませんか?

552 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 20:33:56.43 ID:hTDmnJOp.net]
ソートじやねぇ
デフラグだ

553 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:12:03.78 ID:BvdXplQc.net]
>>544
ソートという言い方はちょっとおかしいけどそれに近いことをRDBはしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね

といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ

554 名前: mailto:sage [2020/11/16(月) 21:16:37.23 ID:K6OrqUDY.net]
>>546
コメントありがとうございます!
でも「インデックスを再配置する」タイミングは、やっぱり update/insert/delete のタイミングなんじゃないでしょうか?

555 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:25:44.06 ID:BvdXplQc.net]
充填率100%ならトランザクション中にリアルタイムで再配置するしかないけど
充填率100%未満ならその場でインデックスを再構築したりはしない
最近のRDBは行バージョンに対応してるからトランザクションログさえ書ければガンガンいくよ
実データファイルの書き換えは後回しにしても整合性保てるので

556 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:33:03.21 ID:hTDmnJOp.net]
だからそれがライトバックだろバカもんが

557 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:34:06.52 ID:OL16ghBV.net]
>>539
フルスペルからエントリ番号を引ける辞書か数学関数があればいいだろ

558 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:10:00.49 ID:2ijHHLJY.net]
エネルギー充填率120%!!

559 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 00:16:25.08 ID:UNFUL2Kr.net]
主キーでB-treeを構成する
PostgreSQLは明示的にバキュームする(B-treeの調整だけではないが

ところでB-treeってなんですか(・∀・)?



560 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 12:40:30.03 ID:PuHDpULa.net]
二分木、binary tree

b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い

561 名前:はちみつ餃子 mailto:sage [2020/11/17(火) 12:52:49.72 ID:lifPo1s+.net]
B木 (B-tree) は二分とは限らないよ。
ところでこのBはバランスのBかと思ってたんだけど
考案者とか関連会社の頭文字という説もあるみたいだね。

562 名前:デフォルトの名無しさん [2020/11/17(火) 13:16:51.60 ID:XfP96roT.net]
BinaryかBalanceかどっち?

563 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 13:40:13.56 ID:LFLSoNm5.net]
binaryじゃ二分になっちまうから違うな

564 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 13:40:16.49 ID:KFJ2cj0W.net]
発祥はわからんけど今となってはBalanced/Balancing Treeだろうな
日本語訳も平衡木だしね

565 名前:デフォルトの名無しさん [2020/11/17(火) 17:31:51.25 ID:gGBQNTu8.net]
定期的に最小完全ハッシュ関数を求めて置き換える。

566 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:20:00.69 ID:Tiv5/dm/.net]
B-Treeが平衡木に分類されることはあってもイコールじゃない。
平衡木というと代表的なのはAVL-Treeとかじゃね。

B-Treeの語源というと俺は broad を推したいが。
Bayer and McCreight never explained what, if anything, the B stands for: Boeing, balanced, broad, bushy, and Bayer have been suggested.

567 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:21:24.35 ID:LFLSoNm5.net]
完全ハッシュって、衝突が起こりえないってこと?
ハッシュの使い方の基本がわかってねえやつが考えることの典型だが

568 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 23:48:10.65 ID:UNFUL2Kr.net]
PostgreSQLのハッシュは衝突したら線形リストに収める的なやつだったはず…

569 名前:デフォルトの名無しさん [2020/11/18(水) 10:04:24.66 ID:fvU2iODC.net]
完全ハッシュ関数は簡単に作れる。

auto hash(auto a) { return a; }

最小であることが重要。



570 名前:デフォルトの名無しさん [2020/11/18(水) 10:11:34.00 ID:fvU2iODC.net]
constexprでコンパイル時に最小ハッシュ関数が静的に解決される。

これぞ神言語。

571 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 10:11:37.19 ID:hkPPdx4I.net]
まあIdentityも定義には嵌まるかな

572 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 10:57:38.49 ID:+eOywhWF.net]
>>562
ぷw

573 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 13:28:57.32 ID:oGkGNlvA.net]
確か、ハッシュが衝突した所を、h-tree に納めるものもあったような

Ruby のハッシュでは、データ数と共に、バケット数を増やしていく。
バケット数は、2 の累乗の次に現れる素数。
2^n + a, 2 <= n <= 30

8 + 3 = 11
16 + 3 = 19
32 + 5 = 37
64 + 3 = 67
128 + 3 = 131
256 + 27 = 283
512 + 9 = 521

データ数が、バケット数の5倍を超えると、ハッシュが再構成される。
再構成時には、極端に遅くなる

例えば、11 * 5 = 55 だから、データ数が56 個になると、バケット数が19 になる。
19 * 5 = 95 だから、データ数が96 個になると、バケット数が37 になる

574 名前:デフォルトの名無しさん [2020/11/18(水) 16:06:44.89 ID:fvU2iODC.net]
C++も結構風呂敷広げる系言語だけど、Haskellには負けてしまうなあ。

575 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:57:21.43 ID:v8HWKopj.net]
ハッシュ関数とハッシュテーブルの話がごっちゃになってる

576 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 21:45:14.61 ID:m5UtHFcK.net]
わてほんまによー言わんわ♪

577 名前:デフォルトの名無しさん [2020/11/18(水) 21:47:58.74 ID:fvU2iODC.net]
上げ。

578 名前:デフォルトの名無しさん [2020/11/18(水) 21:51:25.76 ID:fvU2iODC.net]
完全最小ハッシュ関数は、Nginxで使われてたんじゃなかったかな。
前に調査した時見たと思うわ。

579 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 16:43:55.07 ID:WhXHGWda.net]
Windows環境のVC++2010でマクロプログラムを作ってます。
CapsLock状態をプログラム上から直接変更する手段はありますか?
最悪仮想キーコードでシフト押下、Caps押下、離す、離すの4手で実現はできるのかなとは思いますが



580 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 16:49:03.01 ID:JmNduuKf.net]
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setkeyboardstate

581 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 17:05:17.17 ID:KM6YfWXc.net]
>>572
できなかったと思う
できたとしてもやるべきではない
CapsLock状態かどうかを調べることはできる
プログラムでAを入力するときCapsLock状態ならaを送る
CapsLock状態でないならShift+aを送る
なんてことをやったことある

582 名前:デフォルトの名無しさん [2020/11/20(金) 17:48:13.50 ID:2Xtms9kk.net]
質問するときくらい、あげていきましょうや。

583 名前:はちみつ餃子 mailto:sage [2020/11/20(金) 18:07:40.81 ID:QATBBV0x.net]
専用ブラウザでお気に入りスレを巡回するし、
スレ一覧を見るときもタイトルで検索かけるから
上がってるか下がってるかなんて見てないな。
見てる人ってそんなにいる?

584 名前:デフォルトの名無しさん [2020/11/20(金) 18:39:27.79 ID:2Xtms9kk.net]
専ブラってなんすか?

585 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 20:09:54.73 ID:8HnFa960.net]
むかし2chが検索からガンガン流入してた時代は意味あったけど
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の5chではほとんど意味ない文化だなage/sage

586 名前:デフォルトの名無しさん [2020/11/20(金) 23:20:16.49 ID:2Xtms9kk.net]
だったら、上げていきましょうや。

587 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 23:36:24.04 ID:tRQ7sQvu.net]
だが断る

588 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 08:35:59.33 ID:beyH0yOT.net]
LINEで既読スルーがどうたらと一喜一憂してるバ…若者をうらやましいと思ったことは只の一度もない
やたら何たら離れしまくり四六時中ゲームしかしなくなる廃人化傾向は嘆かわしい限りだ
老害で結構だ、言わせておくさ てめーらより人生楽しいぜ

589 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:06:30.33 ID:gA6oFLIj.net]
べつに老害とかいうてませんがな
たんじゅんに皆年寄なりましたな、いうてるだけで



590 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:09:50.16 ID:beyH0yOT.net]
ワード1つに噛みつく以外に言うことが何もねえってことか
少しくらいあれよ、これ以上絶望させてくれるな

591 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:12:51.55 ID:kTU0dCRJ.net]
おじいちゃん、こんなクソスレで何をそんなに息巻いてるのよ
お体に障りますよ

592 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:14:58.42 ID:R3A7NkyC.net]
>>581
マ板の40代スレに変なポエム書いてる奴がいたが、同じ臭いがする

593 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:18:51.83 ID:beyH0yOT.net]
ゴミばっか
ここム板だぜ
らしい話しろよ

594 名前:デフォルトの名無しさん [2020/11/21(土) 13:02:47.48 ID:t4UXk0gp.net]
したがって、上げていきましょうや。

595 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 01:10:01.54 ID:mIY2Yy/p.net]
>>573-574
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えがCapsLock状態なので、そこを制御したかったんですよね。
Shift押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます

596 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 14:11:14.57 ID:3aKbbyVM.net]
RTTIってどんな原理で実装されてるんですか?

597 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 14:26:33.97 ID:KUPbiAdd.net]
>>589
仮想関数と同じように、クラスごとにコンパイラがデータ生成して個々のオブジェクトから辿れるように埋め込む。

598 名前:デフォルトの名無しさん [2020/11/22(日) 14:33:39.46 ID:gdEBKvV8.net]
どんな高度なことをやってるように見えてても結局はC言語で実装してんの?

599 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 15:03:04.61 ID:h+lYxto0.net]
>>591
CPUが直接理解できるのはマシン語のみ。
そのマシン語に一対一に近い対応関係があるのはC言語。
だからどんな高度なことをやっているように見えてもほとんど全ての場合が
C言語で書ける。



600 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 15:51:20.82 ID:o/Js7Lov.net]
>>590
RTTI有効にしたらパフォーマンス落ちるっていうのをみたことあるけど
ただデータ(プログラム領域?)が増えるだけなら落ちなくない?

601 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 17:19:17.03 ID:LCd15qeF.net]
仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない

602 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 17:29:03.52 ID:2nm5SjZ0.net]
多態するならデストラクタが仮想のはずだから事実上は追加コストないんだよね

603 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 20:02:41.94 ID:L/uQBHM9.net]
ダイナミックにやりたいヤツ用

604 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 20:07:55.27 ID:BvpndlWI.net]
>>593
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。

605 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 23:24:02.57 ID:LCd15qeF.net]
RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る

606 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 06:50:21.21 ID:SrPyOTC6.net]
nested_exceptionで普通に使う

607 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 06:52:19.04 ID:SrPyOTC6.net]
単純にexceptionで捕獲した例外をsystem_errorとかで場合分けとかね
catchをオーバーロードするよりこっちのほうが融通が利く

608 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 21:12:23.11 ID:gAkTmGSN.net]
そんなコストを気にするほどランタイム速度要求の厳しいソフトなんかお前ら書かんだろ

609 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 22:39:23.22 ID:ryjND0ia.net]
多重ループの中のif文一個でも結構変わるしなあ



610 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 01:19:31.94 ID:IV+MkG/a.net]
>>602
確かに変わる。
大量のテキストファイルをパースする際の字句解析など、
今でもコードの1クロックの差で体感速度が現実に変わってくる。

611 名前:(u_・y) mailto:sage [2020/11/24(火) 16:34:51.81 ID:qTKKRlIf.net]
(u_・y)最近C++で作られた出来の良いアプリって存在するの?
(u_・y)もう世の中のほとんどがブラウザーとそのブラウザー上で動作するスクリプトで完結してる気するんだけど

612 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 16:55:08.02 ID:p7TzmKlx.net]
そのブラウザがC++製だろうがwwwww

613 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 17:52:32.94 ID:18TBNzSS.net]
サーバを増やすんじゃなくて、時代はもうクラウドなんですよ!

614 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 18:12:54.60 ID:zMf11be4.net]
やめなよ

615 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 21:44:11.65 ID:+m+UL9CA.net]
>>603
どんなストレージ使ってんの? []
[ここ壊れてます]

617 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 23:18:43.39 ID:EBaS3Lgi.net]
何色のパンツはいてんの?w

618 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 14:30:01.10 ID:yb7Sfyoy.net]
やめなよ

619 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 18:03:06.30 ID:GXxyf9BA.net]
噂によると、メモリモデルに辟易していた、りーぬす先生が、NEW見た瞬間メモリモデルこれでよくねー?病にかかったと聞いた。



620 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 20:24:34.76 ID:OwYFbtHk.net]
あんなにC++はfuckでshitだって言ってたのに?

621 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 20:27:03.84 ID:0vRedS2N.net]
>>611
抜かせや証拠出せ

622 名前:デフォルトの名無しさん [2020/11/26(木) 20:31:56.32 ID:rfhyh3I2.net]
今からC++勉強しようと思ってるんだけど江添本って評判いいの?

623 名前:はちみつ餃子 mailto:sage [2020/11/26(木) 21:31:52.07 ID:aL88M1qg.net]
>>614
「江添亮のC++入門」のことだよね。
評判は悪くはないと思うよ。
太っ腹なことに全文が github に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。

序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。

624 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 21:36:26.77 ID:A1DZUd8N.net]
>>615
どこのhubよ?

625 名前:はちみつ餃子 mailto:sage [2020/11/27(金) 11:50:52.05 ID:TefhHHJS.net]
>>616
ググれば上位に出てくるやん
https://ezoeryou.github.io/cpp-intro/

626 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 12:25:02.43 ID:4rNXQ0cM.net]
ほう

627 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 02:48:58.01 ID:G8gGytn9.net]
へー

628 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 03:32:38.65 ID:W53VNNYA.net]
ふーん

629 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:49:49.77 ID:/IOgDWl9.net]
可変引数テンプレートのコンストラクタだとコピーコンストラクタやムーブコンストラクタより優先順位高い事ある?



630 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 09:11:22.92 ID:KmyDCzB4.net]
template <class... aho>
boke(aho&&...);
boke(boke&&);
これでどっちが優先てこと?

631 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:55:46.81 ID:/HPnbUmI.net]
非テンプレ版→テンプレ特殊化→テンプレの順に優先

632 名前:621 [2020/11/28(土) 13:44:25.19 ID:/IOgDWl9.net]
これを実行すると可変引数が優先されてAhoが出る

https://ideone.com/ExRunF

633 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 14:33:28.98 ID:/HPnbUmI.net]
そのAhoはムーブじゃなくてbokeを作る時のデフォルトコンストラクトで出てる

634 名前:はちみつ餃子 mailto:sage [2020/11/28(土) 14:35:42.94 ID:gUqAhKBc.net]
>>624
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。

635 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:18:43.35 ID:/IOgDWl9.net]
ではこれで1が出るのは何故?

https://ideone.com/zW676W

636 名前:はちみつ餃子 mailto:sage [2020/11/28(土) 16:41:08.52 ID:gUqAhKBc.net]
>>627
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。

637 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:23:45.26 ID:/IOgDWl9.net]
>>628
可変引数の方をconst&にしたら解決した!ありがとうございます。

638 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:09:45.69 ID:2t4HVeMH.net]
またアホみたいな流れかおもたら
意外とちゃんとした質問応答の流れでビビった

639 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 15:54:55.38 ID:V2eyqU/t.net]
gdbのプロンプトでシェルの文法使う方法ある?
具体的にはfor文で配列を走査しながら内容をprintしたりしたい



640 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 21:49:00.34 ID:1uVg5H0L.net]
>>631
配列自体をprintするんじゃだめ?

641 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 01:32:17.93 ID:cCR9MlfF.net]
>>632
添字番号を併記したりかんたんな演算を行ったりしたかった

642 名前:デフォルトの名無しさん [2020/12/02(水) 05:03:16.50 ID:OLoYTJfY.net]
OSはOS X10.15.7でApple clang12.0.0のC++17指定です
vector<tuple<int, int, int>> T;
vector<pair<int, int>> P;
のような配列(stdは省略)を作成したのですが以下のような挙動になりました
P.emplace_back(i, j); //通る
P.push_back(i, j); //エラー
P.emplace_back({i, j); //エラー
P.push_back({i, j}); //通る
P.emplace_back(make_pair(i, j)); //通る
P.push_back(make_pair(i, j)); //通る
省略はしてますがtupleも大体同じです(i, jはint)
push_backが一時コンストラクトをムーブしてることやmake_pairやmake_tupleに
型の推論があることは調べたのですが上記のようになる理由が分かりませんでした
後clangとg++でどちらに合わせた方が標準的というのはあるのでしょうか
図々しくも質問が2つになってしまいましたがよろしくお願いします

643 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 11:08:47.58 ID:3dB9NeQy.net]
>>634
「上記のよう」と言われても、どの挙動に疑問を感じてるのかわからない。
「clangとg++」の質問も、ここで誰かに「ある」とか「ない」とか言われて何の意味があると思ってるのかわからない。

644 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 11:20:44.01 ID:CcFfxv7q.net]
>>634
まず君がemplace_backとpush_backの違いをどう理解しているのか、自分の言葉で説明してみよう
話はそれからだ

645 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 11:59:18.46 ID:wCsCmSK2.net]
>>634
そういう言語仕様だからそうなるとしか言えない。
たぶん必要な情報は
 ・ emplace_back ( https://cpprefjp.github.io/reference/vector/vector/emplace_back.html )
 ・ push_back ( https://cpprefjp.github.io/reference/vector/vector/push_back.html )
 ・ 一様初期化 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
かな。

言語仕様に沿っていれば普通は gcc でも clang でも問題は起きない。
たまには処理系のバグってことも無くはないが、
どちらかで問題が起きるなら書いたプログラムのどこかが間違ってる疑いのほうが濃い。

個別の事情によってはコンパイラをどちらかに固定することもあるかもしれないが、
理想としてはどちらでも良いようになっているほうが好ましくはある。

646 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 15:48:13.91 ID:wCsCmSK2.net]
>>631
シェルというか Python か Guile は使える。
https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html#Python-API

647 名前:デフォルトの名無しさん [2020/12/02(水) 21:51:44.10 ID:3RyObk2q.net]
プログラミング初心者でC++で競馬予想ソフトを作ってみたいんだけどC++はそういうのに向かないんですかね?
スクレイピングってやつはC++でできないのか?

648 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:26:25.03 ID:FHuLcrq8.net]
できるけどC++はWebやテキスト処理が得意とはいい難いから別の言語の方がいいかも

649 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:45:20.94 ID:9+QNoiNo.net]
テキストはc♯のが向いてる



650 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:49:07.36 ID:1SGYvOuK.net]
>>638
対話モードのPythonインタプリタ上でgdbを動かせるということですか?

651 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 22:59:56.90 ID:wCsCmSK2.net]
>>642
gdb のコマンドとして Python スクリプトが使えるという話。

652 名前:デフォルトの名無しさん [2020/12/02(水) 23:31:37.18 ID:3RyObk2q.net]
ありがとうございました!

653 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 23:51:03.60 ID:1SGYvOuK.net]
>>643
スクリプトかぁ
対話的にやりたいですけどわかりました
ありがとうございます

654 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 23:55:00.77 ID:wCsCmSK2.net]
>>645
対話的にもできるよ。

655 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 23:56:36.23 ID:9+QNoiNo.net]
pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ

656 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 00:11:32.72 ID:MFKNATAf.net]
>>646
ありがとうございます
なんか便利さの割にドキュメント少ない気がしますけど勉強します

657 名前:デフォルトの名無しさん [2020/12/03(木) 06:42:09.17 ID:w/MpdpQO.net]
勉強するぞ!勉強するぞ!勉強するぞ!


C++には似合わないような気が。

658 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 11:49:30.18 ID:4DIFtwYV.net]
>>649
どういう意味だ?
1. C++erならそれくらい勉強せずに使いこなせ
2. あるがままを受け入れろ。状況を変えようとするな
3. Pythonを便利と言うな

どれ?

659 名前:デフォルトの名無しさん [2020/12/03(木) 22:01:01.64 ID:anyYWQoy.net]
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
https://news.yahoo.co.jp/articles/b9d5e3b84e4aa78fab64d3eb8e0c02f72911287e
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
https://www.businessinsider.jp/post-175983
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
https://prtimes.jp/main/html/rd/p/000000023.000021544.html
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
https://thebridge.jp/2019/08/gift-ec-tanp-raised-500m-yen-from-gcp
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
https://project.nikkeibp.co.jp/behealth/atcl/feature/00005/012100006/
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
https://www.biz.ne.jp/subject/blog/2004433/
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
https://itpropartners.com/blog/1657/
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
https://www.official.or.jp/internet-entrepreneurship-success/



660 名前:デフォルトの名無しさん [2020/12/04(金) 14:40:55.75 ID:rp0tCaVB.net]
>>637
返信遅れて申し訳ありません、読んで色々試したら何となくですが理由見えてきました
一番為になった回答です…本当にありがとうございました

661 名前:はちみつ餃子 mailto:sage [2020/12/05(土) 00:49:53.38 ID:rsyXPWsW.net]
>>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。

662 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 08:56:44.63 ID:F3hjf/ak.net]
最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず

663 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 10:34:50.44 ID:T+MIshnP.net]
C++11以降はSTL前提で学んだほうが理解しやすい

664 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:14:52.77 ID:pZ+vMW1v.net]
STLとそうじゃないものの境界ってなに?

665 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:17:08.79 ID:i8LYHGeY.net]
そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。

666 名前:デフォルトの名無しさん [2020/12/05(土) 11:41:24.32 ID:f0cq7ZxN.net]
C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。

667 名前:デフォルトの名無しさん [2020/12/05(土) 11:42:36.00 ID:f0cq7ZxN.net]
STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。

668 名前:デフォルトの名無しさん [2020/12/05(土) 11:47:59.12 ID:f0cq7ZxN.net]
目からうろこですよ。
まじ鱗。

669 名前:デフォルトの名無しさん [2020/12/05(土) 11:53:54.60 ID:f0cq7ZxN.net]
ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。



670 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:09:38.13 ID:WVFX1CVk.net]
unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象

671 名前:デフォルトの名無しさん [2020/12/05(土) 12:15:33.65 ID:f0cq7ZxN.net]
なんじゃそりゃ。

672 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:22:29.71 ID:pZ+vMW1v.net]
コントかよ

673 名前:デフォルトの名無しさん [2020/12/05(土) 18:59:09.68 ID:ynooL14Y.net]
>>634
pairが初期化子リストによるコンストラクタを持たないから

c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
https://stackoverflow.com/questions/33207232/emplace-back-not-working-with-stdvectorstdmapint-int?answertab=votes#tab-top

似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる

この箇所あたりがそれ
https://cpprefjp.github.io/reference/map/map/op_constructor.html

map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から

https://cpprefjp.github.io/reference/utility/pair/op_constructor.html
pairのコンストラクタにはinitializer_listは出てこない

674 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 19:10:24.03 ID:F+hw3W9u.net]
>>662
御意

675 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 03:41:22.30 ID:hI81p89D.net]
>>665
違うと思うぞ

676 名前:デフォルトの名無しさん [2020/12/06(日) 08:19:51.08 ID:tzyWxjgm.net]
じゃあ、多数決で決めましょうや。

677 名前:デフォルトの名無しさん [2020/12/06(日) 11:09:55.43 ID:sjTPCZjA.net]
>>667
違うんだったら何が正解だ?

678 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:55:38.68 ID:hI81p89D.net]
>>669
単純にemplace_backはコンストラクタに渡す引数を、push_backは生成済みの実体を受け取るという違いを
>>634が分かってないだけだろ

ついでに言えば、pairにinitializer_listを受け取るコンストラクタがあっても
emplaceは可変長テンプレート引数だから、推定に失敗してどっちにしてもエラーになる
多分。

679 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 20:44:18.72 ID:efO/t6By.net]
visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?



680 名前:デフォルトの名無しさん [2020/12/08(火) 21:02:15.62 ID:O6ovwbXJ.net]
上の方に
#include<filesystem>
と書く

681 名前:デフォルトの名無しさん [2020/12/09(水) 01:24:22.81 ID:WuZTb4kZ.net]
なんだそりゃあ?!

682 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 06:50:42.80 ID:OrjjObtT.net]
>>671
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>

using namespace std;
using namespace std::filesystem;

int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64

683 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 08:05:49.03 ID:TKgHvdMy.net]
>>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。

日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。

684 名前:デフォルトの名無しさん [2020/12/09(水) 09:04:33.91 ID:bCzZQrOf.net]
脱線路運動。

685 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:22:39.32 ID:1g8P/X2h.net]
c++でRSSリーダー作れましゅか?

686 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 04:12:37.43 ID:64ZS/1bZ.net]
はい

687 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 11:52:25.92 ID:83or1IML.net]
RSSなんてもう誰も使ってないだろ
フィードしてるサイトなんてありゅ?

688 名前:はちみつ餃子 mailto:sage [2020/12/13(日) 13:34:03.99 ID:hv54fxHN.net]
ブログホスティングサイトの系統だと RSS を提供してないところとかあんまりないと思うが。

689 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 16:01:14.17 ID:WlKHswnl.net]
ていうかあちこちの言語スレで同じ事聞くのやめなさい



690 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 19:00:34.80 ID:mjvV58cu.net]
std::vectorのメンバ関数にfind()とかrfind()がないのはなんでですかね?
string::find()みたいにあってもよさそうな気がするんですが・・・

691 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 19:10:08.09 ID:iTp2tyae.net]
>>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?

692 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 09:25:27.40 ID:rqj48Chi.net]
>>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい

693 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:10:21.94 ID:qBOs25Ot.net]
UTF8とかだと単純に同じバイト値探せばいいわけじゃないからstringは特殊化してるんだよ

694 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:19:55.29 ID:PHBBuZ6n.net]
>何でもかんでもメンバに突っ込むのは悪い設計だからだ
こういう考え方いかにもCから入りましたって感じだな

695 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:21:51.75 ID:gbeRTgGG.net]
UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた

696 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:36:54.46 ID:8mWx/Grk.net]
>>687
短い系列は特に、部分列が一致したからといっても、
デコードした時にその文字かどうかは保証出来ないんじゃ?

697 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 14:01:10.21 ID:gbeRTgGG.net]
std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring

698 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 14:23:23.61 ID:rqj48Chi.net]
>>686


699 名前:翌唐汲オていいか?
それともやめとくか?
[]
[ここ壊れてます]



700 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:06:36.42 ID:cCubMtK6.net]
>>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ

701 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:37:15.21 ID:pcemzeew.net]
>>690
質問主ですが、是非ともkwskしてくだしあ

702 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:39:59.71 ID:4y27nUGT.net]
utf16はサロゲートペアちょんぎらないようにしないとな

703 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 20:33:42.18 ID:DseQeO8W.net]
合字とか異体字セレクタとかもな
文字を扱うというのは大変なんだ

704 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 21:47:00.55 ID:F7+1e89x.net]
>>688
1バイト目とそれ以降は重ならないからそういうことは起こらないはず

705 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 22:25:44.23 ID:jc1ZwvrK.net]
そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈

706 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 06:17:15.68 ID:vxgFSXGy.net]
>>696
だよね
std::stringのfindは要素を探すんじゃなくて、
要素(char)の連なり=部分文字列を探すもので
vectorとかのコンテナのそれとは異質だし蛇足とは思えない

707 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 08:58:52.32 ID:O+yPS5En.net]
>>692
了解

>>686
kwsk

708 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 09:05:13.62 ID:9tcp04F0.net]
まぁ汎用的というか、stlのアルゴリズムはほとんどが全コンテナに対して共通のコードに出来るからそうしてる(グローバルな関数にしてる)んじゃないかね
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる

709 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 10:59:12.23 ID:zkq7HUY5.net]
アドホック多相とパラメトリック多相の違い。



710 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:28:07.30 ID:Hv+rjawS.net]
データ構造とアルゴリズムを合わせたものがクラスでありオブジェクト指向言語の特徴の1つと教わった
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか

711 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:50:27.11 ID:uK3tjXUx.net]
beginとendをペアで指定しないといけないポインタ的iteratorのせいで外部化せざるを得なかったという方が正しいんじゃないですかね

712 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:58:03.72 ID:cXvwu3qd.net]
↓のサイトでも外人が同じ議論してるね
誰か要約してください
https://stackoverrun.com/ja/q/4020758

Why does std::string have a find member function while std::vector and friends don't have it?
Is there anything wrong with using std::find on the string?

713 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 13:09:55.17 ID:zkq7HUY5.net]
>>701
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。

714 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:27:14.81 ID:j60AFdVm.net]
C++ってカプセル化できるんでしたっけ?

715 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:34:22.28 ID:KCK/bj61.net]
抜け道があるかって意味なら、java等もカプセル化できないってことになるけど

716 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:45:31.91 ID:O+yPS5En.net]
>>701
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ

C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある

717 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:50:56.36 ID:j60AFdVm.net]
>>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ

718 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:54:21.41 ID:vzlQaAwm.net]
>>708
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?

719 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:55:52.62 ID:KCK/bj61.net]
なる。
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな



720 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 14:40:21.32 ID:O+yPS5En.net]
> 内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないと

これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん

721 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 15:35:04.62 ID:zkq7HUY5.net]
現実的な部分では運用でなんとかしてる部分はあるのも確かだが、
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。

722 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 16:36:11.97 ID:uK3tjXUx.net]
>>708
それってモジュール使えば解決できる問題じゃないんでしたっけ

723 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 18:14:53.45 ID:O+yPS5En.net]
>>712
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね

問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ

724 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 18:54:24.56 ID:G781YURu.net]
意義深い議論が展開されてるな

725 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 22:51:18.04 ID:IUrbfkPB.net]
C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、

やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、

726 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 22:58:46.39 ID:IUrbfkPB.net]
きちんとオブジェクト指向するんなら継承は全部virtualであるべきや
といってもC++だけにあてはまる批判ではないが

Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG

727 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:05:40.32 ID:L6k9APCP.net]
不毛な宗教戦争よ

728 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:25:11.55 ID:2c+prgNQ.net]
クラスベースオブジェクト指向はすべて似非オブジェクト指向
アランケイ「C++のオブジェクト指向?知らない子ですね…」

729 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 01:05:17.90 ID:X4tT/GwL.net]
>>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。



730 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 01:10:53.36 ID:YFuWJYb1.net]
>>717
え、その場合仮想関数ならDerived::Fooやろ?
非仮想とか値渡しならそうだけど

731 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 07:05:17.82 ID:iG8ucCJK.net]
非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど

732 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 07:08:07.45 ID:4VSV+Zch.net]
>>717
仮想継承の話かと思ったら
そうじゃないようだな

733 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 08:15:27.96 ID:61mx8GyZ.net]
>>720
「使った機能にあったコスト」だよ。
ゼロコストはあくまで機能を使わなかった場合の話。
cの機能しか使わなかったらcのコストしかかからないのが基本方針だろ。

734 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:41:30.12 ID:YFuWJYb1.net]
>>722
あぁそういうことか・・
ちょっと自分の常識からかけ離れてるから理解できんかった

735 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:49:46.67 ID:4VSV+Zch.net]
#include <charconv>
using namespace std;

int main()
{
char str[] = "123";
double dbl;
from_chars(str, str + 3, dbl);
}

Visual Studioでは通るんだけど、GCCではダメ
どうも戻りのfrom_chars_resultがテンプレートになってて推論に失敗してるようなんだけど
規格ドラフト見てもfrom_chars_resultがテンプレートだなんてどこにも書いてない

これGCCがおかしいんだよな?
バグレポ上がってたりする?

736 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:50:46.30 ID:4VSV+Zch.net]
バージョン書き忘れた
Visual Studio: 19.28.29334
GCC: 10.2.0

737 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 15:56:08.03 ID:UR7Dc4KD.net]
>>726
整数型だけしかサポートしてないよ

738 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 17:33:27.07 ID:4VSV+Zch.net]
>>728
23.20.1 Header <charconv> synopsisにはfloat, double, long doubleが挙がってるんだけど・・・
ああ、GCCがってことねthx

739 名前:デフォルトの名無しさん [2020/12/17(木) 22:56:50.01 ID:mqVedE2Y.net]
gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。



740 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 01:08:57.52 ID:CTNkAd3G.net]
>>726 「ダメ」がコンパイルエラーの意味ならエラーメッセージも挙げてよ。

741 名前:デフォルトの名無しさん [2020/12/18(金) 01:16:51.95 ID:UPU6Cu+L.net]
ダメコンは、ダメージコントロールの略ですよ。

742 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 05:02:08.68 ID:t+i2XnfT.net]
継承使うと密結合になり変更に弱くなるし(実行時のオーバーヘッドにもなりそう)
規約で縛るというSTLの実装には好感が持てる

743 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 06:51:33.39 ID:TZi3wQJw.net]
>>731
W:\>g++ g1.cpp
g1.cpp: In function 'int main()':
g1.cpp:8:33: error: no matching function for call to 'from_chars(char [4], char*, double&)'
8 | from_chars(str, str + 3, dbl);
| ^
In file included from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: candidate: 'template<class _Tp> std::__detail::__integer_from_chars_result_type<_Tp> std::from_chars(const char*, const char*, _Tp&, int)'
595 | from_chars(const char* __first, const char* __last, _Tp& __value,
| ^~~~~~~~~~
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: template argument deduction/substitution failed:
In file included from C:/msys64/mingw32/include/c++/10.2.0/charconv:40,
from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/type_traits: In substitution of 'template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::from_chars_result]':

まだまだ延々続くけど、こんくらいでいい?

744 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 09:49:45.23 ID:/2PllW9k.net]
>>727
vsでも2017update7は同様のエラーみたいだなぁ

745 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 11:01:15.84 ID:nIUIWdb5.net]
>>733
何言ってんだ継承使いまくりだぞ

746 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 11:36:27.07 ID:YAPYqYIf.net]
>>734
ココに上げろよ
https://pastebin.com/

747 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 12:09:40.31 ID:opBsRLFO.net]
オプションは無しなんだ

748 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:23:30.53 ID:2eIYLdZu.net]
n要素のvectorをm要素に変えたいときって中身はどうでも良いって思ってれば
vec = vector<int>(m);

vec.assign(m);

vec.resize(m);
もコスト変わらない?

749 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:30:32.59 ID:4UaQE5Dn.net]
バグバグ言語ランキングで見事PHPに勝利!
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/



750 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:40:56.80 ID:TZi3wQJw.net]
>>737
何がしたいの?
元ソース貼ってるからそっちでコピペして
手元のGCCでコンパイルしてみれば再現するはずだよ

751 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:47:38.37 ID:YAPYqYIf.net]
>>741
邪魔くさいからココに貼るなってんだよ

752 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 14:07:04.35 ID:TZi3wQJw.net]
それは731に言ってくれ
俺は知らん

753 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 14:33:16.19 ID:kYvjoJp5.net]
>>729
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。

754 名前:デフォルトの名無しさん [2020/12/18(金) 15:35:36.73 ID:A9pQAhpY.net]
>>729
23.20.1がHeader <charconv>のドラフトってどれだ?

755 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 15:37:59.88 ID:TZi3wQJw.net]
>>745
N4713

756 名前:デフォルトの名無しさん [2020/12/18(金) 15:50:56.91 ID:A9pQAhpY.net]
https://cpprefjp.github.io/reference/charconv.html
https://cpprefjp.github.io/reference/charconv/from_chars.html

webページ見れない理由あった?

>GCC: 8.0(整数のみ)
>Visual C++: 2017 update 7(整数のみ), update 9(full support)
俺ならこの二つ眺めて「GCCは未実装なんだなぁ」と思考停止して終わる

757 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 17:24:37.67 ID:TZi3wQJw.net]
>>747
そうか、思考停止するのか
よかったね

何だか色々と前提置いてるけど
俺は知らんよ、おまえさんの前提なんぞ
イヤミ口調のくせに脇が甘いな

758 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 17:28:32.84 ID:Mxkr6hqK.net]
priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?

759 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 18:26:15.74 ID:Xk0olBJ3.net]
template <typename T>
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;



760 名前:デフォルトの名無しさん [2020/12/18(金) 18:41:07.57 ID:UPU6Cu+L.net]
gccの場合、未実装でもスタブだけ存在する場合があるんですよね。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。

ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。

ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。

761 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 19:45:59.90 ID:PzyTX7K9.net]
始皇帝氏

762 名前:デフォルトの名無しさん [2020/12/18(金) 19:59:32.56 ID:A9pQAhpY.net]
>>748
ここ以外に各コンパイラでの実装具合が上手い事まとまってるサイトとかあんの?

763 名前:デフォルトの名無しさん [2020/12/18(金) 20:30:00.87 ID:A9pQAhpY.net]
コンパイラのサポート状況 (C++17) - cppreference.com
https://ja.cppreference.com/w/cpp/compiler_support/17

こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな

764 名前:デフォルトの名無しさん [2020/12/18(金) 20:48:34.81 ID:A9pQAhpY.net]
>>746
N4713のpdfとかどこをどう漁れば出てくんだ?
全然見つからないんだけど

765 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 20:52:41.57 ID:2rT2nv7x.net]
>>755
N4713 c++で検索したらトップに出てきたぞ。
普段どんな検索しているんだよ。

766 名前:デフォルトの名無しさん [2020/12/18(金) 20:53:49.00 ID:UPU6Cu+L.net]
https://github.com/cplusplus

ここで検索すればドラフトならみられますよ。
向こうも見てるだろうけど。

767 名前: mailto:sage [2020/12/18(金) 21:01:49.42 ID:ivKQNPRV.net]
>>751
関係ないけれども、gcc って今は C++ で記述されているんですよね
長い間私はそれをとても残念に思っています
オプティマイズは苦手であってもいいから C で記述されている C++ 処理系って存在するのでしょうか?

768 名前:デフォルトの名無しさん [2020/12/18(金) 21:12:10.66 ID:A9pQAhpY.net]
>>756
>>757
https://cpprefjp.github.io/international-standard.html
https://ja.cppreference.com/w/cpp/links
ここで紹介されている最終ワーキングドラフトでもない、

https://github.com/cplusplus/draft/tree/master/papers
こっちはたくさんあって何を選べばいいか分からない、

どうやってN4713のドラフトに行きついたんだ?

769 名前:デフォルトの名無しさん [2020/12/18(金) 21:20:36.71 ID:UPU6Cu+L.net]
おーけーぐーぐるえぬよんなないちさん、と言いました。



770 名前:デフォルトの名無しさん [2020/12/18(金) 21:37:45.97 ID:A9pQAhpY.net]
行き着いた、ってのは>>746の彼がだよ
どういう経緯で彼が「これこそが勉強すべきドラフトである」と結論したんだ?

771 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 22:07:42.21 ID:TZi3wQJw.net]
俺がN4713を見ていたことが、えらい気に入らない人がいるようだね
知らんがな
仮にwebページ見られなかったとして、どうやってN4713を落とせたのかとか
いちいち開陳せにゃならんの?

772 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 22:09:31.45 ID:XdXLiWO3.net]
>>722 >>725
差分プログラミングとかいう腐りきったプログラミングパラダイムでは
ハイディング上等なんだ、
そう思っていた時期が(ry

773 名前:デフォルトの名無しさん [2020/12/18(金) 22:11:14.08 ID:UPU6Cu+L.net]
こちらから見えるということは、向こうからも見えてるということです。
気を付けなされよ。

774 名前:デフォルトの名無しさん [2020/12/18(金) 23:08:30.12 ID:A9pQAhpY.net]
>>762
「ドラフトはこれを見ましょう」と大々的に紹介されてるわけでもなし、
落としたDLしたじゃなくて、どうしてそれを『選んだ』のかが不思議なんだよ
普通の経路じゃまず選べない

775 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 23:26:57.29 ID:yxlBLqeq.net]
c++ってやたうんちくばっか言う人多いよね
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある

776 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 23:29:15.18 ID:zfI8p5qO.net]
プログラマがうんちく言わないで何やるんだ?

777 名前:デフォルトの名無しさん [2020/12/18(金) 23:48:52.19 ID:A9pQAhpY.net]
これの話の続きなのか
なら不思議は解消だ
謎は全部解けた


C++相談室 part151
https://mevius.5ch.net/test/read.cgi/tech/1589424805/20

20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ

778 名前:デフォルトの名無しさん [2020/12/19(土) 00:02:31.33 ID:yZxXMpJa.net]
そんな昔のスレは関係ないのでは?

779 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:20:03.02 ID:0cb9HLXb.net]
>>766
こういうとこでの情報提供や議論はともかく、うんちくでマウント取りたがるのは自信の無さの裏返しだからねぇ



780 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:23:06.73 ID:sq702jvD.net]
うんちくがうっとおしくて、仕事なら自分が勝ってる!って思い込みたいだけなんじゃないの

781 名前:デフォルトの名無しさん [2020/12/19(土) 00:26:01.61 ID:yZxXMpJa.net]
図星つかれたからうんちくと言ってるのでは?

782 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:38:15.56 ID:x1EY5aRu.net]
スカトロスレ

783 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:42:57.09 ID:0cb9HLXb.net]
爆釣ww

784 名前:デフォルトの名無しさん [2020/12/19(土) 03:34:46.64 ID:yZxXMpJa.net]
この野郎。
ウンチクンめ。

785 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 06:01:48.82 ID:u3YcA1fK.net]
>>765
だから何?
俺がどのドラフトをDLするかを
いちいちあんたの承認とらにゃいかんの?
こっちゃ不思議がられても関係ないんで
いちいち申告してもらわなくていい

786 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 08:07:11.10 ID:vl/1bKki.net]
まあお茶でも飲んでカルシウム取ろう

787 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:17:03.91 ID:M1Nera9i.net]
お茶にはカルシウム入ってないだろほとんど

788 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:18:39.16 ID:dTYT78ol.net]
お茶とカルシウム入りウェハースでも食えばええやん

789 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:25:15.46 ID:cik2rIYa.net]
何のはなしやねん



790 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:23:01.76 ID:biviwPkb.net]
Ca++

791 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:26:14.15 ID:biviwPkb.net]
正式版は有料だがドラフトはタダで手に入るからヒジョーに得がたいが、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、

792 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:50:09.89 ID:B7wez7Ce.net]
よくわかりませんが、Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソというのと似た話ですか?

793 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 14:02:30.06 ID:biviwPkb.net]
Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソとなじったら
ドラフトの版が変わったらChromeの方がクソだった、みたいな

794 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 14:41:50.09 ID:+cK8B71a.net]
ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか

795 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:35:13.01 ID:dM4VNuuI.net]
C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?

796 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:41:15.86 ID:5blMWj9s.net]
>>786
まあその方がメモリ管理をミスを防ぎやすいからな
C++11以降だとまた世界が違うが

797 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:42:49.16 ID:x1EY5aRu.net]
どう世界が違うの?
いじわるしないで教えてよ

798 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:46:00.09 ID:dM4VNuuI.net]
メモリ管理の文化的な作法なのね。

799 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:47:02.46 ID:5blMWj9s.net]
>>788
スマートポインタが実用になったから、それでメモリ管理する方が文字通りスマートになった
だから、必要なら関数内部でメモリ確保する方法でもメモリ管理ミスが起こりにくい



800 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 19:25:11.20 ID:p4OhEmVF.net]
>>786
c++というかcの伝統だわな。
オブジェクトをヒープに置かなくていいという性能的なメリットもある。

801 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 19:59:05.03 ID:HGWooSzm.net]
Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束

vectorやstringをゴロッと返せば済む今はいい時代になったと思う

802 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 20:17:48.73 ID:vl/1bKki.net]
消費者が買い物袋用意するなんてレジ袋有料化みたいだな

803 名前:デフォルトの名無しさん [2020/12/19(土) 20:19:43.48 ID:yZxXMpJa.net]
右辺値参照のおかげですよ。

804 名前:デフォルトの名無しさん [2020/12/19(土) 21:06:02.20 ID:ISt3uDJM.net]
質問@:
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。

質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。

805 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 21:33:09.17 ID:HGWooSzm.net]
普通に質問しろ

806 名前:デフォルトの名無しさん [2020/12/19(土) 22:28:27.67 ID:yZxXMpJa.net]
>>795
アロケータの内部実装がどうなっていようとも、push_back()から戻った時にはデータは追加されているので、問題ないのでは?

std::vectorは末尾に0を追加したりしません。

807 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 22:39:50.71 ID:u3YcA1fK.net]
>>782
- 最新のドラフト
+ 正式版の規格

808 名前: []
[ここ壊れてます]

809 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 22:59:41.56 ID:vl/1bKki.net]
確かにCだと必要メモリの問い合わせの為に二度呼び出したり面倒でしたわ…



810 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 23:18:45.05 ID:biviwPkb.net]
>>798
正式版の規格票は金かかるやんけヽ(`Д´)ノ

811 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 23:20:05.98 ID:biviwPkb.net]
>std::vectorは末尾に0を追加したりしません。
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…

812 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 00:32:15.85 ID:zH6cQZTj.net]
誰もstringの話してないと思うが

813 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 07:06:06.65 ID:u5Xjtcw/.net]
>>801
msys64/mingw64/include/c++/10.2.0/bits/basic_string.h
ここに書いてあるぞ

814 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 09:47:23.01 ID:C7ljP8CG.net]
>>799
でも「直接メモリいじってる」て感覚があって好みだったなぁ
まあ自己満足でしかないのだけれど

815 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 10:51:49.27 ID:KSHt8d36.net]
今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで

816 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:14:31.35 ID:IFRd5RXQ.net]
>>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。

817 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:16:20.77 ID:B3eFXD ]
[ここ壊れてます]

818 名前:1J.net mailto: RAIIなんて今どきでもないだろ []
[ここ壊れてます]

819 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:27:39.08 ID:KSHt8d36.net]
そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど



820 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:52:43.58 ID:mkiVvOjR.net]
Finalizeが失敗する可能性があってエラーハンドリングしないといけない場合はあえてそうしているかもね

821 名前:デフォルトの名無しさん [2020/12/20(日) 13:25:24.04 ID:8M1CEzDz.net]
あえてね!

822 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:31:53.40 ID:1w6q/2mK.net]
というかスコープ内で完結しない、グローバルな状態を持つものならそうするやろ

823 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:48:55.12 ID:KSHt8d36.net]
グローバルバカかな?

824 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:52:50.85 ID:BqPIIXKk.net]
お前が挙げてたそういうライブラリがInitialize/Finalizeの中で何やってるか考えれば自ずと答えはでるだろ

825 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 14:05:47.98 ID:S1Ae4PMu.net]
グローバルな初期化と後始末ならInitialize/Finalizeとか明示的に呼ぶ設計のが一番闇が少ない
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー

826 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:00:32.48 ID:POdM0+je.net]
変数名で対象変数のポインタを取得してくる実装(リフレクション?)をしたいんですけど
対象変数をポインタテーブルとかに書き下すことなくコンパイル時に変数名リテラルと対応するポインタを自動生成することってできますか?

827 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:02:59.13 ID:POdM0+je.net]
対象変数はstructかclassのメンバ変数を想定しています

828 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:23:18.64 ID:B3eFXD1J.net]
直接には無理
目的次第だけど基本的にはプリプロ駆使して頑張るしかない

829 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 22:39:57.26 ID:pIq+bOjP.net]
まずC#処理系を書きます



830 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 22:49:36.29 ID:ZSjgwNod.net]
車輪がでかすぎる

831 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 23:37:12.93 ID:XnWb8UXr.net]
マップファイルから生成

832 名前:デフォルトの名無しさん [2020/12/21(月) 02:47:40.73 ID:HVkDagg+.net]
数値計算に興味がある方に聞きたいのですが、ベクトル演算はどのように実行していますか?
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです

833 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 03:43:19.44 ID:tQs5NvLs.net]
>>821
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い

834 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:49:04.92 ID:h5UrY03S.net]
>>821
時と場合による

835 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:49:33.35 ID:h5UrY03S.net]
ベクトル演算
ていうだけじゃ広すぎて

836 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:52:20.80 ID:XzTX0Cyb.net]
SVDとかするなら自前実装なんか無駄だからeigen使う。それ以外なら>>822 の通りだな。

837 名前:デフォルトの名無しさん [2020/12/21(月) 19:14:50.06 ID:5SN4/ItM.net]
みなさんありがとうございます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます

838 名前:デフォルトの名無しさん [2020/12/21(月) 20:22:43.20 ID:94n2fENi.net]
そりゃそうだろな
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う

そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある

後発の方が簡単に出来るというのは幻想

839 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 21:07:13.89 ID:HyYYfsZ0.net]
簡単なことは簡単に言え

既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな

あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー

こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い



840 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 23:35:19.34 ID:5SN4/ItM.net]
ヘッダファイルに
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?

841 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 23:51:47.03 ID:3sOyVj6l.net]
大昔(40年ぐらい前?)とかもんのすごい特殊な環境用のコンパイラはしらんが
今の普通のコンパイラではそれはコンパイル時に計算される

842 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 00:34:06.43 ID:M/dL4DYR.net]
>>829
コンパイル時に解決されてると思います

843 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 00:35:40.93 ID:M/dL4DYR.net]
すみません、830で回答されてましたね
畳み込み、とかで検索してみては

844 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 02:07:17.74 ID:bzbnZ90n.net]
>>826
Fortranでも基本的にblasとかlapackに投げるだけじゃないの?
しかもC/C++からFortranルーチン呼べるし

「FortranではやりやすかったがC/C++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい

845 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 06:36:52.20 ID:GAvzsgv/.net]
blasとかlapackがfortanで記述されてるからね
中身いじるような人がどれほどいるかはわからんけど

846 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 08:38:11.38 ID:+a9RX7vJ.net]
>>829
翻訳時
なぜなら1.0/3.0は定数式だからだ
これは昔とか今どきとか関係ない

847 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:08:43.07 ID:z2CQLL3J.net]
翻訳(interpret)ですか?
C++はコンパイル言語ではないのですか?

848 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:23:29.08 ID:Yt10VcGs.net]
翻訳(translate)でしょ。

849 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:26:00.82 ID:AY4u6Qzg.net]
コンパイラと構文解析とオートマトンって大学の授業でやったなぁ



850 名前:デフォルトの名無しさん [2020/12/22(火) 10:18:51.71 ID:hq0fof4K.net]
Cコンパイラ作ったよね。

851 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 12:04:28.60 ID:GAvzsgv/.net]
constexprとか中身がどうなってるのかもうわけわからん

852 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 16:28:31.76 ID:cQdMNR1v.net]
>>834
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが

853 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 23:28:55.02 ID:cWduRySe.net]
constexprともなるとどこまでコンパイル時計算してくれるかは
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが

854 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 23:41:36.57 ID:Yt10VcGs.net]
>>842
constexpr にまつわるルールはコンパイル時計算してくれる最低ラインを定めるもの。
どこまでコンパイル時計算してくれるかが処理系依存なのは初期のC言語から変わりないよ。

855 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 00:29:07.29 ID:0vtm2rCB.net]
constexpr指定したものはコンパイル計算でしょう?

856 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 01:06:37.35 ID:BffjS4vY.net]
>>844
コンパイル時評価可能(コンパイル時に評価するとは言っていない)

857 名前:はちみつ餃子 mailto:sage [2020/12/23(水) 02:19:42.25 ID:wEQUKH0P.net]
>>844
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。

定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。

実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。

858 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 06:16:15.13 ID:ZPrNOuha.net]
C++はまだ色々と足し続けてるのか
constexprはともかくconstinit, constevalて...

859 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 06:17:06.41 ID:ZPrNOuha.net]
まるで言語開発屋のおもちゃじゃねえか



860 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 08:41:53.85 ID:iOQdV6uo.net]
今頃気づいたのw

861 名前:はちみつ餃子 mailto:sage [2020/12/23(水) 09:20:18.63 ID:wEQUKH0P.net]
自動で呼び分けて欲しいと思うこともあれば
コンパイル時に限って欲しいことだってあるだろう。

862 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:37:56.48 ID:lj5PdyQr.net]
1秒間に1万回くらい数値判定の計算をしてるのですが
Xが3桁の時のみTrueを返すようなコードで一番速いのってどんなコードですかね?
愚直にif(1000>X>=100)でやるのと
if(10>X/100>=1)ではどっちが速いんでしょうか

863 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:39:04.22 ID:PgZc4XsV.net]
前者

864 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:43:53.01 ID:PgZc4XsV.net]
多くのコンパイラは以下に変形しそうな気がする
if (X-100u<900u)

後者をコンパイラが最適化するかどうかはコンパイラ次第

865 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:47:49.74 ID:PgZc4XsV.net]
PCなら1秒に1万回程度なら気にしなくて良い
8bitマイコンだとこの判定だけでも10個以上の命令になったり

866 名前:デフォルトの名無しさん [2020/12/23(水) 20:03:20.62 ID:rWjdGSAm.net]
長さ数十億のbool型配列用意すれば早いんじゃね
isDigit3[x] だけで出るじゃん

867 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 20:04:42.24 ID:psZzhFw3.net]
>>851
それ条件式が間違ってるだろ

868 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 21:04:06.12 ID:oO0RWe4j.net]
根本的には、速度って環境依存の性質だから、本当に重要な話なら実測で確かめるしかない。

一般論としては、現代のコンパイラはそこらの人間より賢いから、やりたいことを素直に書いて最適化を任せるのがいい。
わかってない人が余計なことをやると、かえって遅くなる可能性が高い。

計算量のオーダーを変えるような、アルゴリズムレベルの最適化なら意味があるんだけど。
小手先のテクニックは通用しないと思っていい。

869 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 22:00:42.78 ID:p3n5tJou.net]
>>850
いうてほんとに定数式になってくれないと困る場面で定数評価してくれない事態に出くわしてないんだよなぁ・・
constexprなクラスとか作ってればあるのかもしれんが



870 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 22:21:55.80 ID:JqE6cd4a.net]
最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか

871 名前:デフォルトの名無しさん [2020/12/23(水) 23:11:04.90 ID:pgaSoeQc.net]
typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?

872 名前:デフォルトの名無しさん [2020/12/23(水) 23:12:13.58 ID:pgaSoeQc.net]
ヘッダーに渡しても同じことか…相互参照してるんだった…

873 名前:デフォルトの名無しさん [2020/12/23(水) 23:13:21.42 ID:pgaSoeQc.net]
一応…間違えないように…ヘッダーに集約しておく…

874 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 23:13:34.29 ID:KqYWGLnc.net]
Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、

1秒間に、1,000万回ループ出来るようになる

875 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 23:43:55.33 ID:iOQdV6uo.net]
いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい

876 名前:デフォルトの名無しさん [2020/12/24(木) 06:19:28.22 ID:TzdYJrci.net]
サムソンを守るためのHuawei潰しという側面もある。

877 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 06:55:00.49 ID:fOK7nTKz.net]
んあ?

878 名前:デフォルトの名無しさん [2020/12/24(木) 06:58:51.74 ID:TzdYJrci.net]
文大統領がトランプ大統領に、Huaweiを潰すよう勧めたそうです。

879 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 07:53:25.30 ID:X8ie3AzF.net]
>>863
C++ならはじめから秒2000万回ループできるコードになる



880 名前:デフォルトの名無しさん [2020/12/24(木) 08:12:44.86 ID:TzdYJrci.net]
このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。

881 名前:はちみつ餃子 mailto:sage [2020/12/24(木) 10:18:24.14 ID:ys2W6z1g.net]
>>860
OK
https://timsong-cpp.github.io/cppwp/n3337/dcl.typedef#3

882 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 11:16:41.02 ID:h4Gph9I0.net]
>>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p

883 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 11:27:11.76 ID:h4Gph9I0.net]
>>871
途中で送ってもうたorz

((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。

単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz

つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。

884 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 17:12:04.54 ID:tg7gMCA8.net]
>>872
if ((unsigned)v - 100u < 900u)
のが早くない?

テーブルは論外だ
アドレス計算コストの方が高そうだし
ROMサイズやキャッシュ汚染などの悪影響がある

885 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 19:53:19.25 ID:9+0irhfK.net]
if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。

886 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 19:56:18.95 ID:VQIKvM0h.net]
そのくらいなら最適化に任せた方がいい気がするが……

887 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:38:01.43 ID:B83YCBUh.net]
比較がボトルネックってのは本当だろうかとは思わなくもない
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど

888 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:38:20.67 ID:X8ie3AzF.net]
整数の減算は非常に高速
条件分岐は遅いし分岐予測を汚染する

コンパイラの最適化を見てると良い
範囲判定は大抵>>873のようなコードになる

889 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:41:03.65 ID:X8ie3AzF.net]
コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い

コンパイラが最適化するから

x/100を比較するのは
意味的にも意味不明だし
速くなることもない



890 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:51:18.77 ID:X8ie3AzF.net]
ISRの最適化なら

レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある

小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする

891 名前:デフォルトの名無しさん [2020/12/25(金) 14:04:51.84 ID:L6KY61Ck.net]
バンク切り替えテクニックですか。
むかしのインターフェース誌っぽいですね。

892 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 17:40:14.36 ID:j6GWo/XP.net]
昔のテクニックが今でも有効

893 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:23:57.32 ID:KGl9PDWX.net]
template<size_t A, size_t B>
class tmp{};

template<size_t N>
void test(tmp<N, N>&){
std::cout << “A”;
}

template<size_t A, size_t B>
void test(tmp<A, B>&){
std::cout << “B”;
}

上のような関数があったときにtest(tmp<1,1>{});がどちらを呼ぶか規格で決まってる?

894 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 22:18:37.12 ID:9Tm+xBHp.net]
テンプレート引数が少ないtmp<N, N>の勝ち

895 名前:デフォルトの名無しさん [2020/12/26(土) 00:14:55.00 ID:biNpl0R5.net]
using FunctorType = std::function<void()>;
struct RecursiveMapperType;
using InternalMapperType = std::map<std::string, RecursiveMapperType>;
struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};

こういうコードをネットで見かけたんだけど
RecursiveMapperTypeを前方宣言してInternalMapperTypeを宣言
RecursiveMapperTypeをInternalMapperTypeを継承して作成していることのメリットがよくわからない。

struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>

だとだめなのだろうか?
誰か教えて下しあ

896 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 00:40:10.65 ID:3VlCU3bq.net]
>>884
上のコードと下のコードの RecursiveMapperType の定義はまったく同じに見えるんだけど、何が違うの?

897 名前:デフォルトの名無しさん [2020/12/26(土) 00:50:04.37 ID:biNpl0R5.net]
>>885 さん
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>

898 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 03:46:58.69 ID:fBIAR6pR.net]
ttps://ideone.com/Ou2BZq

899 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 15:10:58.71 ID:3VlCU3bq.net]
>>886
それじゃ全然機能が違うっていうかその RecursiveMap 何の役にも立たないでしょ。
元の RecursiveMapperType の機能が理解できてないだけか。



900 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 16:40:20.18 ID:vGzfsLf/.net]
再帰的な構造を定義したくて自分自身の型を含めたものを継承してるわけで
それを実現するには前方宣言するしかない
というね

901 名前:デフォルトの名無しさん [2020/12/26(土) 17:13:57.40 ID:UNoc468U.net]
再帰的なコンテナは、フィールドが出来た時点で破綻するのでは?

902 名前:デフォルトの名無しさん [2020/12/26(土) 18:07:48.30 ID:TLGOuMOF.net]
https://cpprefjp.github.io/reference/vector/vector.html
>不完全型を要素にする例 (C++17)

これの亜種

903 名前:デフォルトの名無しさん [2020/12/27(日) 06:31:05.42 ID:QkMmRpj8.net]
C++23に持ち越された契約は何が変わるんだろね。

904 名前:デフォルトの名無しさん [2020/12/27(日) 17:59:23.18 ID:wQ5c+q6H.net]
ありがとうございます。なんとなくイメージできました。

コードの設計ってまだよくわからないのですが、
再帰処理のためにこうするのって比較的普通なことなんですか?

905 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:23:25.49 ID:tp3tetyk.net]
>>893
知らんよ。
普通かどうかなんて気にしてどうするの?ここで名無しの誰かに yes/no 答えてもらって何か意味ある?

906 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:33:52.26 ID:7Rx7y5wp.net]
>>893
STLのクラスを継承して階層構造を実現するテクは応用編って感じがする
もっと基本的なやり方をするならデザパタのcompositeパターンを使う
とかかね

907 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:47:54.32 ID:7Rx7y5wp.net]
設計を学ぶならデザパタはひと通り見ておいて損はないぞ

908 名前:デフォルトの名無しさん [2020/12/27(日) 18:49:43.74 ID:QkMmRpj8.net]
ヘネパタ、パタヘネ、デザパタ。

909 名前:デフォルトの名無しさん [2020/12/27(日) 22:11:00.35 ID:QkMmRpj8.net]
newのコストは気にされますが、deleteのコストは見逃されがちです。



910 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 02:23:23.12 ID:ibU6N4ur.net]
あるクラスのコンストラクタのデフォルト引数を変更するときってどうしたらいいの?
オーバーロードすれば良い?

911 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:27:12.64 ID:7Z4wU2qk.net]
単純に変更じゃダメな理由は?
他のライブラリ?

912 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:33:40.98 ID:pesKZps1.net]
stlコンテナを継承するのはアウトだろ。
うまくやらないとデストラクタが呼ばれなくなっちゃうぞ

913 名前:デフォルトの名無しさん [2020/12/28(月) 09:00:44.26 ID:i4NtF28F.net]
じゃあうまくやりましょうや。

914 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:44:51.94 ID:bVWPeYFg.net]
そもそもC++ではデストラクタを仮想にしてないってことは「継承すんなよ」って宣言だからなぁ

915 名前:デフォルトの名無しさん [2020/12/28(月) 09:55:45.06 ID:W/k+iOkV.net]
なんで継承しないようにしたか意見表明文みたいなモンはどっかにあるのか?

916 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 10:20:49.88 ID:ErVwTltE.net]
仮想関数化するとしない場合に比べて余分なコストがかかるから、必要な理由がない限り基本的にそれは避けるということじゃないかな

917 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 10:32:20.80 ID:4OiRlqvR.net]
C++は1クロックでも速く動作させるために非仮想関数をデフォルトにしたのは理解できる
Javaは動作速度よりもオブジェクト指向の継承動作の一貫性を重視してすべて仮想関数にした、これも時代を考えれば理解できる
C#もJavaと同じくデフォルトを仮想関数にしておいて欲しかったのだが、C#はC++を尊重してデフォルト非仮想関数なんだよね
これはちょっと残念

918 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 11:33:10.90 ID:s2RdB6EU.net]
継承して機能追加っていうのがオブジェクト指向的にもどうかと思うね

919 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 12:34:23.27 ID:QmdcnH/3.net]
finalキーワードがこの時代にあれば間違いなく付けただろうな
文句言ってる奴はガイジ



920 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 12:42:44.62 ID:UEnoPUHl.net]
>>903
継承すんな、は言いすぎ。
private継承なら問題ないと思うけど。実際たまに使われているし。

921 名前:はちみつ餃子 mailto:sage [2020/12/28(月) 13:19:25.85 ID:N6A7dpOQ.net]
デストラクタが仮想ではないものを継承したときの具体的な問題は
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。

設計的に綺麗かどうかはまた別の話だけど。

shared_ptr が (デストラクタが仮想でなくても) 元の型のデストラクタを呼んでくれたりするんで、
場合によってはそういう設計もアリということなんだと思う。

922 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 14:12:57.70 ID:02+J4aSB.net]
>>910
デストラクタが仮想なものを継承してもスライシングは起こりうるよね?そこは関係なくね?
https://en.wikipedia.org/wiki/Object_slicing
> In C++ programming, object slicing occurs when an object of a subclass type
> is copied to an object of superclass type: the superclass copy will not have
> any of the member variables defined in the subclass. ...

923 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 17:31:09.93 ID:V+A6vVBD.net]
C++自由すぎてしんどいな
後方互換性と引き換えに払った代償か

924 名前:はちみつ餃子 mailto:sage [2020/12/28(月) 17:46:19.93 ID:N6A7dpOQ.net]
>>911
スライシング自体は起こるけど、それで予想外のことやメモリ管理の矛盾は起こり難い。

925 名前:デフォルトの名無しさん [2020/12/28(月) 17:50:37.04 ID:i4NtF28F.net]
自由に羽ばたける翼。

926 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:06:08.49 ID:V+A6vVBD.net]
自由すぎて困る部分はLinterを併用することで勝手に回避しろってことかな

927 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:37:15.29 ID:v+s+VlFU.net]
だってCの設計思想が「人間を信用する」だもん
セキュリティが重視される現代的な言語のベースとしては致命的に合ってないんだよね

928 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:40:02.12 ID:02+J4aSB.net]
>>913
やっぱり関係がわからない。
デストラクタが仮想ではないものを継承したときに限ってスライシングが予想外のことや
メモリ管理の矛盾につがなる例をひとつでいいから見えてもらえない?

929 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:40:41.01 ID:02+J4aSB.net]
s/見えてもらえない?/見せてもらえない?/



930 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:07:39.46 ID:bVWPeYFg.net]
A <|- B, C みたいなときにB, CをnewしてA*として管理しようとすると破棄の時にAのデストラクタしか呼ばれない

931 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:09:58.26 ID:UEnoPUHl.net]
>>911
仮想でないデストラクタが話題のスコープなのに、スライシングにスコープを移したら議論にならないでしょ。

911) デストラクタが仮想なものを継承する→スライシングになるものが存在する
という命題は
910) デストラクタが仮想ではないものを継承する→スライシングになるものが存在する
という命題と矛盾するわけではない(両立する)ので、その議論はあんまり意味がない。

932 名前:デフォルトの名無しさん [2020/12/28(月) 19:14:08.97 ID:i4NtF28F.net]
スライシング・オプティマイザーとかどうよ?

933 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:36:49.42 ID:02+J4aSB.net]
>>910
> スライシングが起こらないように使う分には問題はない。
ここもおかしいんだよね。

デストラクタが仮想ではないものを継承して派生クラスのオブジェクトを new で作って
基底クラスのポインタを通して delete したら未定義動作になるわけだけど、
これはスライシングを起こしていなくても問題になる。

「派生クラスのオブジェクトを new で作って基底クラスのポインタを通して delete」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。

934 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:43:43.44 ID:592FfNkQ.net]
>>900
変更ってどうやるの?
毎回好きな引数を与えよってこと?
面倒なので、自分の好きな引数を自分のコードの中ではデフォルトにできれば良いのにと思ったのだが、こういう考えは間違っていますか

935 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:51:33.62 ID:7Z4wU2qk.net]
>>923
make関数作るのはダメなん?

936 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:59:11.40 ID:v+s+VlFU.net]
デストラクタはpublic仮想かprotected非仮想かpublic非仮想finalのどれかにしろ
っていう一般的結論でよくね

937 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:21:17.65 ID:sYj4+JXZ.net]
>>925
自分で書くときはそう
標準のコンテナのように既存のクラスがそうでなかったら?が発端だからなぁ

個人的には仮想デストラクタがなければ継承はしない
(一部のイディオムを除けば)private継承にするくらいなら委譲する。

938 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:54:56.73 ID:wzipnhb8.net]
デストラクタがprotected:であっても非仮想なら継承したらアウトなんじゃ…
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で

939 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:57:44.66 ID:dWPs/bUX.net]
>>924
オブジェクトを作るための関数を作ってはどうかという意味ですか?
確かにそれで良いのでそうします



940 名前:デフォルトの名無しさん [2020/12/29(火) 07:11:18.52 ID:2gsaGKLd.net]
相称型プログラミング。

941 名前:デフォルトの名無しさん [2020/12/29(火) 07:28:15.94 ID:2gsaGKLd.net]
いま私大事なこと言いましたよ。

942 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:37:07.18 ID:H8QGk97F.net]
プログラミング学びには来ないだろ
こんな途上国に

943 名前:デフォルトの名無しさん [2020/12/29(火) 07:38:50.44 ID:2gsaGKLd.net]
【CSS規格、読書感想文】
CSSがアイデアであった段階からスクリプト言語で実装され、初の大規模採用であったネットスケープにおいてもJavascriptによって実装されていたため、規格そのものがC/C++で効率的になるよう設計されていない。※
現行の規格に対して効率的な実装を施したとしても、将来の規格バージョンで維持できると限らないため、結局、スクリプト言語と同様の非効率を許容することになる。
これはつまり、ほとんどのシンボルを動的に確保することを意味する。

※HTML5規格は、C/C++で効率的に実装できるように仕組まれている。

944 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:48:03.75 ID:UwKcs/oz.net]
なるほどねー
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう

945 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:49:27.20 ID:oaU8v0Mt.net]
>>927
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく

946 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 08:05:44.29 ID:vWMLZNcx.net]
>>927
型消去とsmart ptr実装で調べるよろし。

947 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 09:18:16.16 ID:qLyTNuLW.net]
定期的に話題になるけど、基底のデストラクタにvirtualが必要なのは
基底型のポインタでdeleteするときだけな
末端のデストラクタさえ呼べれば、次に呼ぶ基底の型は分かりきってるからね

別の言い方をすれば、常に末端の型のポインタをdeleteする分には、virtualなデストラクタなんか要らんということ

948 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 11:55:36.33 ID:So4DneUg.net]
ポリモーフィズムの旨味が消えるw

949 名前:デフォルトの名無しさん [2020/12/29(火) 12:13:46.12 ID:2gsaGKLd.net]
ポリリズムから出汁をとったみたいないい方しますね。



950 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 13:15:00.89 ID:m86wB2y9.net]
まあ普通は末端の型を意識しなくて済むからこそ派生の旨味がある訳で

951 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 14:33:08.60 ID:kdP0thHS.net]
>>936
その点については誰もが一度は通る勘違いだよなw
最初はわけも分からず機械的にvirtualつけて回ってたわ

952 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 20:19:15.83 ID:EiaQ+UBu.net]
うっせえ知っとったわ素でまちがえただけじゃわ!ヽ(`Д´)ノウワーン

953 名前:の名無しさん mailto:sage [2020/12/31(木) 05:29:21.52 ID:/Sdg/sCQ.net]
struct A { virtual void Delete() { delete this; } };
struct B : A { void Delete() { delete this; } };
こうなってりゃ別にいらんな

954 名前:デフォルトの名無しさん [2020/12/31(木) 11:50:06.55 ID:zS3i4lwe.net]
>>795 の同期とか奇妙な質問に思うけど、Javaからくるとそうなるんだな。

955 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 12:23:37.15 ID:3Es5+lkr.net]
javaにだって非同期でメモリ確保するコンテナなんてないでしょ

956 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 13:41:11.66 ID:lvvsunYH.net]
>>942
おとなしく virtual ~A() とするのにくらべて何のメリットも無いな。

957 名前:デフォルトの名無しさん [2020/12/31(木) 13:43:11.73 ID:zS3i4lwe.net]
deleteのコストは、ほんと気にされないな。

958 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:24:44.84 ID:eCxLbtN/.net]
「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

959 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:31:08.20 ID:7G3T5w7B.net]
>>947
母語で曖昧さの無い表記ができますか?



960 名前:蟻人間 mailto:age [2020/12/31(木) 15:40:19.22 ID:+0BPso5e.net]
>>950

> 「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

「「a=1 かつ b=1」以外なら実行」なら、
if (!(a == 1 && b == 1)) { 実行(); }

「a=1 かつ「b=1以外」なら実行」なら、
if (a == 1 && b != 1) { 実行(); }

961 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:47:49.87 ID:eCxLbtN/.net]
>>949
THX
「a=1 かつ b=1」以外なら実行、でした。
私が950でレスするのもお見通しですか?w

962 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 18:57:49.39 ID:/Sdg/sCQ.net]
>>945
ただの押しつけだな
うるせーバカ

963 名前:デフォルトの名無しさん [2021/01/01(金) 05:08:27.95 ID:FlWhKtLF.net]
CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。

964 名前: mailto:sage [2021/01/01(金) 18:05:25.39 ID:a5HWfmXn.net]
>>792
それはちょっと古臭いお馬鹿な手法でしょう

正しいやりかたは、
・呼び出し側が呼び出され側に格納エリアを提供する‥‥@
・呼び出し側が確保するべきサイズは@の前に別途問い合わせする

965 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 18:33:17.97 ID:1DPP279V.net]
いずれにしろ面倒

966 名前:デフォルトの名無しさん [2021/01/02(土) 00:08:04.41 ID:f21yM1/d.net]
CにはCで
#define APPBUFSZ (十分でかい整数値)
void foo() {
  char buf[APPBUFSZ];     // buf[]はスタック上にとられる配列(重要
  if (!func(buf, sizeof(buf))) {  // 第2引数は要素数の意味とするならsizeof(buf) / sizeof([0])
    バッファサイズ不足等のエラー
  }
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない

967 名前:デフォルトの名無しさん [2021/01/02(土) 00:11:12.76 ID:f21yM1/d.net]
CSSはDOMの一部でありかつ意味と表記の分離の必要からCSSになった
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象

968 名前: mailto:sage [2021/01/02(土) 00:53:58.35 ID:wp0Bo1A/.net]
>>955
kwsk
ちょっとよくわからない‥

969 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 02:21:09.41 ID:dR/zQLwh.net]
>>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな



970 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 09:15:42.80 ID:hdbwvBU0.net]
>>955
何が黄金なのかさっぱりわからんが…
どこでそれが黄金パターンとされているかの出典だけでも頼む

971 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 09:25:20.55 ID:TBL/2gAq.net]
定番は>>953だろう。
事前にサイズを求めるコストがバカにならないという場合だけ別案を検討するくらいで。

972 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 10:59:35.93 ID:dR/zQLwh.net]
大抵の場合は「事前にサイズを求める」=やり直しになりそうなんだけど

973 名前:デフォルトの名無しさん [2021/01/02(土) 11:29:31.77 ID:f21yM1/d.net]
>>958
左様よほど意図しない事象でも起きない限りエラー処理に行かないぐらい大き目にとる
スタック上に領域をとる場合、時間コストも空間コストもゼロとみなせるからそれで構わない
再帰呼び出しのようなきわめて深い関数呼び出し階層になるときぐらいしか問題は生じない
というわけで、プログラミングしたいこと/すべきことに対するちょっとした洞察と
アーキテクチャーに関する理解さえあれば、言うほど非効率でも不合理でもないことがわかるはず…

974 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 11:39:10.82 ID:YOqoG5bU.net]
>953
確保すべきサイズを問い合わせたときと確保して呼び出した時に必要サイズが変わっていないか気になって夜しか眠れない
(リトライしてもリトライ回数が適切かどうか気になって布団以外で眠れない)

975 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 19:19:34.45 ID:TRpAMVE2.net]
std::make_sharedにインターフェースクラスを継承したクラスを渡したいんですがエラーになりました
これは生ポインタ使えと言うことでしょうか?
https://ideone.com/QUYTgX

976 名前:蟻人間 mailto:age [2021/01/02(土) 19:28:29.87 ID:VBbIup1J.net]
>>964
https://programming-place.net/ppp/contents/cpp/language/029.html#pure_virtual_destractor

977 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 19:32:19.38 ID:TRpAMVE2.net]
>>965
デストラクタとコンストラクタの定義書いたらコンパイルできました
どうもありがとう

978 名前:デフォルトの名無しさん [2021/01/03(日) 08:55:49.95 ID:tz0lNZPE.net]
chromiumのソースみると全面的にstd::unique_ptrを使ってるので、少なくともC++11 以降。

979 名前:デフォルトの名無しさん [2021/01/03(日) 09:00:31.13 ID:tz0lNZPE.net]
レンダリングコアチーム29名中3名が日本人。



980 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:01:40.32 ID:A/6DePqP.net]
newしたクラスをdeleteすればクラス内で保持した変数のメモリも自動的に解放されるのでしょうか? 

981 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:08:46.33 ID:I3Vvl19p.net]
>>969
「クラス内で保持」の仕方による。
deleteに伴って各メンバ変数のデストラクタが呼び出されるので、自動的に解放されるようにすることはできる。

982 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:31:09.41 ID:A/6DePqP.net]
ポインタの参照先は解放されないとかですかね?

983 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 15:46:52.70 ID:ytOMOpf7.net]
所有してるメモリなら解放されて欲しいけど借用してるメモリは解放されちゃ困るででょ

984 名前:デフォルトの名無しさん [2021/01/04(月) 03:53:19.91 ID:wIiDK2+4.net]
借りてる金を誰かが返してくれるなら良いお話では?

985 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 06:10:53.50 ID:FFXfDp9J.net]
>>971
スマポ使ったら?

986 名前:デフォルトの名無しさん [2021/01/04(月) 19:46:23.01 ID:0C4iSsrn.net]
めちゃくちゃ初歩的な質問で申し訳ないのですが文字で「"」を出力したい場合はどうするのですか?
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…

987 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 19:50:08.29 ID:0tciJGtx.net]
えすけぇぷ

988 名前:蟻人間 mailto:age [2021/01/04(月) 19:52:06.94 ID:RRkyDjZk.net]
バックスラッシュor
半角の円記号
を使う

989 名前: mailto:sage [2021/01/04(月) 19:53:04.44 ID:SE/uzuCD.net]
>>975
https://ideone.com/X6MCOB



990 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 02:42:04.01 ID:GBNfOfsJ.net]
https://ideone.com/37sNvH
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!

991 名前: mailto:sage [2021/01/05(火) 02:46:08.54 ID:SOx0PxdD.net]
>>979
https://ideone.com/pxsVp1

992 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 07:30:58.94 ID:rKfNNjQV.net]
>>975
cout << R"(cout<<"これ→"←"<<endl;)";

993 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 08:35:13.05 ID:JJaPBKYs.net]
cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な

994 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 09:02:10.14 ID:x+1hwr2M.net]
>>979
macでよくハマるw

995 名前:デフォルトの名無しさん [2021/01/06(水) 09:32:04.26 ID:UTmmPnLW.net]
HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。

996 名前:デフォルトの名無しさん [2021/01/07(木) 01:07:21.92 ID:DfoUdJtt.net]
次スレ下さい。

997 名前:デフォルトの名無しさん [2021/01/07(木) 14:22:12.51 ID:Oosx0PB6.net]
c++で出力出来ない文字とかあるんですか?
>>981
この書き方ならなんでも出力出来るんですかね?
cout<<"これ→"←"endl;)と出力したい時
cout << R"(cout<<"これ→"←"<<endl;))";
でもいけるんですか?
)が気になりますが…

998 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 15:10:50.98 ID:9QJGSme0.net]
>>986
それを言ってるのが>>982だよ

999 名前:デフォルトの名無しさん [2021/01/07(木) 19:34:55.01 ID:5FPBrit1.net]
>>987
すいません出来ました
fuckという単語なので嘘かと思ってスルーしていました
>>982
ありがとうございます



1000 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 03:01:05.78 ID:cNGMO0JS.net]
>>947
cppは論理演算子が少ないからに優しくないから先のレスのようにチマチマ等価な冗長な論理を書くしかないのが面倒だよね…
not-andなんだからnand演算子(=joint denial(↑)、論理用語)で書けりゃいいのに(もちろん裸cppで

1001 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 05:11:49.99 ID:wkJPfkff.net]
C++界隈のオッサンは普通に4文字とか猥語とかバンバン使ってちゃんとした説明するから気をつけろ

1002 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 05:14:48.68 ID:gKD5AY0L.net]
template <typename A, typename B>
inline constexpr
bool nand(A&& a, B&& b)
{
return !(A == 1 && B == 1);
}

1003 名前:デフォルトの名無しさん [2021/01/08(金) 08:15:42.48 ID:lmjqKHzd.net]
プリプロセッサで演算子増やせないかな?
無理かな?

1004 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 08:24:11.24 ID:gKD5AY0L.net]
マクロの識別子は英数字下線だけだかんな
あ、でも英数字下線の演算子もどきならできるね

template <typename R, typename A>
R Static_cast(A&& a) { return a; }

1005 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 16:15:23.09 ID:qfyOgjuE.net]
プリプロセッサを自作すればいいんじゃないかな

1006 名前:はちみつ餃子 mailto:sage [2021/01/08(金) 16:18:48.68 ID:PuoTeu6a.net]
そんなに演算子を増やしたいか?
関数でそんなに不都合には感じないが。

1007 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:33:21.91 ID:z+YKoOzo.net]
NANDが演算子で書けたからって別に理解しやすくもないので、いらない

1008 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:38:26.63 ID:3K68IyDv.net]
どもるがん知らない人がいると聞いて

1009 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:40:30.13 ID:/42fFLGa.net]
演算子は色々と使えると便利だぞ



1010 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:43:20.57 ID:VopvKl3G.net]
質問良いですか?

1011 名前:デフォルトの名無しさん [2021/01/08(金) 17:46:32.46 ID:CQCRa+nu.net]
1000

1012 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 18時間 28分 12秒

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






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

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

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