1 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 09:05:42.21 ID:mJKRg6iz0.net] 次スレを立てる時は本文の1行目に以下を追加して下さい。 !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part133 mevius.5ch.net/test/read.cgi/tech/1511509970/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
652 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:19:55.18 ID:L/3+Hz1H0.net] 飛躍じゃねえ実話だよ ずいぶん昔、社内BBSでそれ系のことを言い出したやつが 偉い人から突っ込まれてた
653 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:35:58.25 ID:MwJCRjiPd.net] プロとか言い出してる人がいるけど、それこそ飛躍では?
654 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:40:08.58 ID:y6ADsCAy0.net] プログラムの話題から外れてきていると思いませんか?
655 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:48:14.13 ID:uMO7yRavM.net] >>614 だからわかりきってるかどうかは人によって違うって話 プログラムの前に日本語の勉強しろよ w
656 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:48:33.76 ID:2oR7xNCJ0.net] まぁコスト次第で可読性を犠牲にするケースもあるだろうけど この場合はメモリ食う訳でも処理遅くなる訳でもソースの構造が変わる訳でもない 86400でも十分分かりやすいかも知れんが60*60*24なら更に分かりやすくなる どっちが良いかなんて議論の余地無いよね
657 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:50:15.11 ID:L/3+Hz1H0.net] >>631 別にプロでなくてもいいんだけどさ おまえさんなりに、同じプロジェクトにいて欲しくない足手まといが どのくらいから下というのはあるだろ
658 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:54:56.26 ID:uMO7yRavM.net] >>626 > 16を2*2*2*2っていちいち書く人はいないでしょ > まぁ1<<4って書けと言われるかもしれんが 状況次第だろ 場合分けの条件が4個あって各々2状態をとるとかなら2*2*2*2って書くかもしれない 下から4ビット目のマスクが欲しいなら1<<4って書くこともある
659 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 18:58:33.90 ID:2oR7xNCJ0.net] >>636 ビットフィールド使えば?
660 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:09:24.20 ID:L/3+Hz1H0.net] シフト使うな、ビットフィールドで書け なんて言われると、俺は相手にもよるが逆らいそう
661 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 19:37:46.29 ID:uMO7yRavM.net] >>637 ビットフィールドは割り付け順序が処理系定義だったりしたからあまり使ったことがない
662 名前:デフォルトの名無しさん mailto:sage [2018/03/14(水) 21:26:40.49 ID:kWAHqA+uM.net] たまには2進リテラルちゃんのことも思い出してあげてください
663 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 06:36:14.64 ID:F+InEeO+0.net] 議論の本筋(1日の秒数として即値で86400と書くことの是非)とはさらに離れるけど、 ビットシフトを使う定数は常にカッコで囲んでくれ。 res = a + 1<<4 + b; res = a +(1<<4)+ b;
664 名前:デフォルトの名無しさん [2018/03/15(木) 07:15:43.22 .net] >>641 3つ以上の項があると静的解析ツールで怒られるから res = (a +(1<<4))+ b; と書く
665 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 08:58:15.76 ID:x1WHRaDf0.net] >>641 下のつもりで上書いたらただのバグじゃん
666 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 09:19:10.68 ID:3Ym40JOm0.net] 算術と混用するときは結合順位に注意せよ、というだけのことを いちいち必ずだ!ルールだ!と金切り声で吠えついてくるやつはウザい
667 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 09:55:31.41 ID:LkpAylTJM.net] >>642 可読性悪くしてかえって品質低下招きそうな指摘だな
668 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 13:29:47.33 ID:O2sRH7tT0.net] vectorをつなげる際、copyが良いとか、insertを使えとか色々書いてあるのですが、どれが良いのでしょうか?
669 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 13:54:37.80 ID:XNo6/02A0.net] あらかじめ領域を広げておく必要があるけどinsertの方がチェックが入らない分速い
670 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:23:48.90 ID:9f/t5+6G0.net] reserveしてinsertだな
671 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 15:36:42.69 ID:q9z+dA6Ga.net] insertの直前にreserveって意味あるのか?
672 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 16:32:16.09 ID:XNo6/02A0.net] reserveは終端のポインタが更新されないからresizeじゃないとだめ
673 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 16:57:46.96 ID:R5/WYUtW0.net] reserveしてback_inserterでcopy
674 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:05:27.14 ID:QEAEy0DH0.net] >>648 insertはサイズチェックしてるでしょ。 >>649 iteratorを2つ受け取るタイプのinsertなら意味あるんじゃね? >>650 resizeは不味いだろ。
675 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:09:09.32 ID:QEAEy0DH0.net] >>652 アンカしくった。 サイズチェックの指摘は>>647 向け
676 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:21:30.23 ID:XNo6/02A0.net] ごめんinsertとcopy逆だった
677 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 17:28:15.72 ID:q9z+dA6Ga.net] >>652 insertの中で追加数数えてreserveと同じことしてるでしょ まさかループで一個ずつ挿入なんて実装はあるまい
678 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 19:10:49.64 ID:QEAEy0DH0.net] >>655 失礼。挿入位置のiteratorもあるから、3つ受け取るタイプの誤り。
679 名前:デフォルトの名無しさん [2018/03/15(木) 22:07:51.82 ID:dQGk6ayHa.net] cpprefjpの任意の式によるSFINAEの頁でdecltype(a + b, bool())と記載されているコードがあるんだけれど、 このa+b, bool()はラムダ式? 該当頁 https://cpprefjp.github.io/lang/cpp11/range_based_for.html
680 名前:デフォルトの名無しさん [2018/03/15(木) 22:09:23.09 ID:dQGk6ayHa.net] アドレス間違えた https://cpprefjp.github.io/lang/cpp11/sfinae_expressions.html
681 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:15:55.91 ID:3Ym40JOm0.net] ラムダ式が[で始まらないことってあるのか?
682 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:41:44.53 ID:ubsUN4Yb0.net] >>657 カンマ演算子とdecltypeでコンパイル時に評価される decltypeの中身を左から順に評価し、結果は一番右の型が帰る この場合はa+bの型が評価出来ればbool、できなければSFINAE
683 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 22:41:47.80 ID:XNo6/02A0.net] >>657 >a + b a + bが可能かどうか調べる >, 次の式を評価する >bool() bool型の初期値を返す つまりdecltype(a + b, bool())はa + bでSFINAEをしつつカンマ演算子でdecltypeにbool型の値を与えて返り値の型をbool型にしている
684 名前:デフォルトの名無しさん [2018/03/15(木) 22:57:18.20 ID:dQGk6ayHa.net] decltypeで,も使えたんですね。一番右の型が帰るということはdecltype(a+b,a-b,a*b,a/b,bool())とかしてもよさそう。。。 自分ではその機能を説明してるページを見つけれませんでした。 ありがとうございます。
685 名前:はちみつ餃子 mailto:sage [2018/03/15(木) 23:50:51.42 ID:VBbQqJBt0.net] >>660-661 それで良いのか。 いいこと知った。 いちいち enable_if をしとったわ。
686 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 07:54:12.89 ID:UGENGinrd.net] decltypeって実行時の型を得れる?
687 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 09:23:42.20 ID:Qbg0TjKpa.net] >>656 a.reserve(a.size()+b.size()); a.insert(a.end(),b.begin(),b.end()); こんな感じのことをやるのかと思ったんだけど、これ意味ないでしょ?
688 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:04:08.28 ID:SYp9l/ZId.net] >>664 declとはdeclareの略であることを考えると
689 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:17:31.56 ID:g2YO+i2m0.net] a.reserve(a.size()+b.size()); copy(b.begin(),b.end(),back_inserter(a));
690 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 15:36:10.69 ID:0r9PteXTM.net] >>665 random iteratorの場合の特殊化実装がありました。ごめんなさい
691 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 18:08:23.55 ID:Al45BtF0p.net] >>662 decltype comma trickでググれ
692 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 20:56:30.80 ID:DBylbaSH0.net] まあoperator,()が定義されてるとまずいんだけどな
693 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:50:10.89 ID:OQSUItjMd] codepad.org/C8t9k4fD ソース自体をプログラムに読み込ませると #includ で止まってしまうんですけど何が問題でしょうか
694 名前:デフォルトの名無しさん [2018/03/19(月) 18:07:03.75 ID:/U1oheuNa.net] インスタンスにdeleteかけたとき、メンバ変数が破壊されるのとデストラクタが実行されるのはどっちが先? 今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがあるから、破壊されるのが先なんだろうか?
695 名前:はちみつ餃子 mailto:sage [2018/03/19(月) 18:15:15.06 ID:RG1qd9Pc0.net] >>672 原則としては構築の逆順って覚えておくと間違えない。
696 名前: mailto:sage [2018/03/19(月) 18:33:44.24 ID:lFWK67Qs0.net] >>672 delete this; とかしてませんか、これは基本的に避けたほうがいい
697 名前:片山博文MZ mailto:sage [2018/03/19(月) 18:43:06.07 ID:SpFx62hRd.net] >>674 に同意。確保と破棄は生ポインタを触らずに自動化した方がいい。スマートポインタとかコンテナとか。 二回deleteを避けるためにポインタにNULLを代入する技もある。
698 名前:デフォルトの名無しさん [2018/03/19(月) 21:03:24.06 ID:kCg91IvDa.net] そろそろNULLは駆逐してnullptrに移行させたい
699 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:46:40.23 ID:jnDGFLZz0.net] >今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがある へ〜んなの ていうかメモリを壊しているかすでにdeleteされた死骸を再deleteしてるとしか、 >二回deleteを避けるためにポインタにNULLを代入 OpenCVのC言語インターフェースのやつ、
700 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 22:57:33.17 ID:cmSuhSLP0.net] C++勉強中の者です。 codepad.org/C8t9k4fD ソース自体をプログラムに読み込ませると #includ で止まってしまいます。 Cのfgets()のようには使えないのでしょうか。
701 名前:デフォルトの名無しさん [2018/03/19(月) 23:06:01.35 .net] >>678 According to the C++ reference en.cppreference.com/w/cpp/io/basic_istream/getline getline sets the ios::fail when count-1 characters have been extracted. You would have to call filein.clear(); in between the getline() calls.
702 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:26:45.72 ID:cmSuhSLP0.net] >>679 区切り文字を読まないとfail状態になってそれ以降は失敗し続けるので止まってしまうということですかね
703 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:27:24.60 ID:jnDGFLZz0.net] std::getline()は読み込んだ文字列に改行文字を含めないから 行末まできちんと読んだのか 文字数カウントのせいで読み込みが行の途中でぶちきれたのか 直ちにはわからないといいうアホウな仕様 判別には結局std::basic_istream<T>::unget()の助けが要る C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ ※ 個人の感想です
704 名前:デフォルトの名無しさん mailto:sage [2018/03/19(月) 23:28:25.97 ID:jnDGFLZz0.net] 訂正 △: C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ ◎: C++標準ライブラリのうちストリーム関連だけは本当に腐っているからC言語のを使いなしゃれ
705 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:02:22.15 ID:mI6/gPTY0.net] 入出力はCもC++もクソまみれだからなぁ ちょっとコンソール出力を整形しようとして、あの肥溜めのクソくだらない落とし穴地獄にいちいち付き合わされた結果 プログラミングそのものが嫌いになる人達が山のようにいるのが本当に残念だ
706 名前:デフォルトの名無しさん [2018/03/20(火) 01:12:22.56 ID:PXcTmg8I0.net] いるか?
707 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:20:34.94 ID:mI6/gPTY0.net] 自分が知ってる昔はいっぱいいたけど 最近だとスクリプト言語から先に入るから減ってるのかね?
708 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 01:21:52.68 ID:N1yoGURK0.net] オブジェクトの外部表現を型ごとに定義できる iostream は悪くない設計だと思うんだけどなぁ。
709 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 01:41:51.26 ID:PjVFN34O0.net] ローカライズに向いてない。 打鍵数が倍増どころじゃない。 モダン言語はみなprintfライクだしねー
710 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 02:48:01.36 ID:PXcTmg8I0.net] printf()は便利ではあるが桁を揃えて出す時に面倒になることもある。 特にこの頃は UTF-8 で漢字混ざりだと文字幅とバイト数または文字数が一致しない。 そもそもそんなものの一致をあてにすること自体が間違いかも知れないが、Unicode には一応 HALF WIDTH, FULL WIDTH 等があるんだから何とかしてこれを生かした フォーマッタが欲しいところではある。
711 名前:デフォルトの名無しさん [2018/03/20(火) 06:49:53.60 ID:eswqOupsM.net] >>673 >>674 あるクラスがあって、その中でスレッド立ててるの それでクラスのデストラクタが呼ばれたら、メンバ変数のスレッドポインタをつかってスレッドcancel->joinってやろうとしてて それでjoin呼ぶあたりで落ちるんだよね 作られた逆順ってことはデストラクタのほうが先に実行かな?それだとメンバ変数はいきてるよね
712 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:01.02 ID:83N3dpVy0.net] streamはコンソールの入出力のためだけにあるわけじゃないから
713 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 06:55:05.50 ID:Wsijl5j90.net] つーてもcoutだってsetw/setfillはあんまり使いやすくないしなあ operator<<をユーザー定義できるのはありがたいけどね
714 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 13:10:27.33 ID:geezFnQ40.net] >>689 デストラクタの実行中はそのクラスとその派生元クラスのメンバ変数はまだ使える 必ず落ちるならデバッガでバックトレース見てみたら?
715 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:32:56.49 ID:mI6/gPTY0.net] 別の原因に見える まずデストラクタじゃなくて普通のメンバ関数で明示的に呼んで止めた時に大丈夫か確認してはどうか
716 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 19:45:17.42 ID:KQMGt9+Dd.net] pthread_cancel はいろんなことがよく分かっている人しか使ってはいけない
717 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:33:41.91 ID:f35CyiEk0.net] >>686 「<<」と「>>」の2種類しか用意できんやんけ それらを表示と入力に割り当ててしまえば結局シリアライズのための固有なメソッドなりインターフェースなりを別途作らねばならんぬ、 そもそもの構想からして頓挫してゐる、 頓挫してゐるのだ…!
718 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 23:55:08.06 ID:N1yoGURK0.net] >>695 表示用とシリアライズ用はストリームの性質で切り替える筋合いのものだろ? シリアライズ用のストリーム
719 名前:型を用意してオーバーロードすればいいんじゃね。 [] [ここ壊れてます]
720 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:33:52.80 ID:7c9Ne47J0.net] ちょっなんで数億年の生物史史上はじめて ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を 細分化するという元の木阿弥にしますか;; 藻前は some_command | tee result.txt > some_file.bin とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、
721 名前:デフォルトの名無しさん [2018/03/21(水) 00:44:24.33 ID:p0rFESlF0.net] なに藻前って
722 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:10:44.31 ID:MouF+uE40.net] >>697 お前は何を言ってるんだ。 ここで言ってるストリームは C++ 用語のストリームだぞ。 「ストリーム『型』」ってわざわざ書いてるんだからわかれよ。 下位レイヤでは好きなところに繋げればいい。
723 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:18:27.48 ID:9NBOfW2C0.net] streamとstreambufの違いを理解しよう
724 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:24:40.58 ID:MouF+uE40.net] 要するに std::basic_ostream を継承した何かを作ればいいんだ。
725 名前:デフォルトの名無しさん [2018/03/21(水) 06:52:22.30 ID:fTbDiwfs0.net] ストリームはもう捨てたほうが良いぞ。 おじさんからの警告だ。
726 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 07:14:12.04 ID:2n7LolrI0.net] 便利そうに見えて便利に使えない それがstream
727 名前:デフォルトの名無しさん [2018/03/21(水) 07:18:35.01 ID:zecIlzA/0.net] 「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を 売り上げたけど何か聞きたいことはある?」回答いろいろ labaq.com/archives/51880196.html 日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには? https://bodoge.hoobby.net/columns/00013 はじめてボードゲームを作ってはじめてゲームマーケットに出店した ので、ひとり反省会をしてみる。 datecocco.hatenablog.com/entry/2015/11/26/000000 はじめて作ったボードゲームを売った話 nrmgoraku.hateblo.jp/entry/2017/05/17/210000 ボードゲームイベント「ゲームマーケット」から業界が見えた! https://entertainmentstation.jp/61107 ゲームマーケットに挑む人向けガイド spa-game.com/?p=4830 ボードゲームはどう作るのか、自分なりに考えた roy.hatenablog.com/entry/2014/07/09/124824 オトナも遊べるボードゲーム!自作するといくらになるのか www.d-laboweb.jp/special/sp312/ ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの 市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ) https://bodoge.hoobby.net/columns/00001 ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中 gigazine.net/news/20150820-board-game-crowdfunding/
728 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 10:36:30.48 ID:DQv7yGEy0.net] >>697 カンブリア紀からオルドビス紀にかけて行われた抽象化は 今でいうインターフェイスの考え方で、当たり前だが インターフェイスを継承する実装クラスは無数にあってよい そういうのは元の木阿弥とは言わないぞ
729 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 15:09:48.71 ID:MouF+uE40.net] >>697 さっき >>699 で説明した C++ の話題を置くとしても、 (まあ C++ スレで C++ の話題を置いちゃうのはどうかと思うが) 標準入力、標準出力、標準エラー出力のみっつしかないってことはない。 エラー出力をリダイレクトするときに 2> って書くの、どういう意味だと思ってる? 2 はファイルディスクリプタな。 デフォでオープンされてるのが 0, 1, 2 ってだけで、やりたければ 3 でも 4 でも使っていい。
730 名前: mailto:sage [2018/03/21(水) 15:42:02.21 ID:ZGJmhAHm0.net] >>706 空いているディスクリプタが使用されるとしても、自分で特定の数字を指定してディスクリプタにすることはできなかったんじゃなかったかな?
731 名前: mailto:sage [2018/03/21(水) 15:50:19.07 ID:ZGJmhAHm0.net] >>707 失礼、dup2() というのがあったね…
732 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 15:58:29.69 ID:9NBOfW2C0.net] coutがSTDOUTにつながってるだけでここは何につなげてもいいということ streambufの中身はただの配列でもいいし、アプリケーションのロガーでもいいし、循環バッファでもいいし、通信のポートでもいい
733 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:28:41.53 ID:TV3lE0eZ0.net] シリアライズするときはバイナリ表現にしたいし ログするときは文字列表記にしたいし
734 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:00:34.84 ID:MouF+uE40.net] >>710 だからそれはストリームオブジェクトの型で切り替えろって言ってるんだろうが
735 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:30:34.07 ID:VVSY5O5Ed.net] それを嫌だって言ってんだよ バイナリの読み書きは write() だの read() で十分
736 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 20:33:11.12 ID:MouF+uE40.net] read なり write なりを「使う」のは別にいいよ。 それを C++ 上でどのように抽象化すればいいかって話なんだから。 そういうレイヤの違う話を混ぜ込んでくるなよ。
737 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:43:51.09 ID:KgSvodNyd.net] そこで新しい型を設けてまで << を使う意味がない cout にバイナリでシリアライズするときはどうすんの? size_t serialize(const T& t, ostream& os) とかを各型用に書く方がマシ
738 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:47:43.15 ID:KgSvodNyd.net] バイナリでシリアライズするに際して 別の型のストリームオブジェクトを作ってまで << だの dec だの endl を使えるようにすることの利点を説明して欲しい
739 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 21:36:05.23 ID:9NBOfW2C0.net] 例外を除いて operator<<()は書式化出力 write()は非書式化出力 なのでバイナリを出力するときはwrite()を使うべき >size_t serialize(const T& t, ostream& os) シリアライズのような複雑な操作をするときはこれは悪い選択じゃない というかstreamそのものを放り込むのはたまに見かける
740 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:02:23.07 ID:52xrh1HkM.net] えっブロックデバイスにもStreamを
741 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:15:54.63 ID:MouF+uE40.net] >>716 書式化 (formatted) ってのと、結果がバイナリかというのは直行する概念だよ。 シリアライズってのはオブジェクトのバイト列をそのまま出力することじゃなくて、 バイナリ形式の特定のフォーマットにして出力することだろ。 それは書式化って言うんだよ。
742 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:26:24.75 ID:MouF+uE40.net] >>715 マニピュレータを使える意味はないかもな。 使えないように定義することも出来るし、意味がないなら使えないようにしておくべき。 ここでは抽象化の話をしているんだ。 出力先が人向けのテキスト表現であるか機械向けのシリアライズ表現であるかによって 書き方を変えなきゃならない、相手を意識しなきゃならないというよりは、 相手によって自動で切り替わって欲しいってことなんだよ。 意識しなくていいデザインってのは意識しにくくなるってことと表裏一体だから、 見えなくなるのが気にくわないってのならわかる。
743 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:26:32.59 ID:OwhHF7Zm0.net] 直交
744 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:29:29.81 ID:MouF+uE40.net] >>720 スマソ。 >>718 の直行は直交の書き間違いやね。
745 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:13:33.75 ID:NRxI71LE0.net] 無意味な処理が嫌だとか言っておきながら ここでは無駄の塊みたいな方法を勧める アホですね
746 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 23:50:04.75 ID:MouF+uE40.net] >>722 俺は一貫して抽象化の話をしてるつもりなんだが。 プログラマの意図を表現できる書き方をすべきって話をしてんの。 無意味な処理をしろと書いてあるのをプログラマの意図として読み取っていいのか? そうじゃないだろう。 C++ がせっかく用意しているライブラリを活用するのが無駄なのか? そうじゃないだろう。
747 名前:デフォルトの名無しさん [2018/03/22(木) 07:21:49.59 ID:tiDItZ1f0.net] ハッキリ言ってストリームは蛇足だったわ。 廃止したほうが良いわ。
748 名前:デフォルトの名無しさん [2018/03/22(木) 07:25:52.15 ID:tiDItZ1f0.net] Boostもそうだけど、有り余るC++のパワーをカッコよく使いこなそうとしてやっちまったみたいな。 もうちょっと使う側の立場にたつべきだな。
749 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 08:38:59.71 ID:0Y4DSJfq0.net] 黒魔術だなんだ言って楽しめないようではC++は向いていない
750 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 10:14:29.52 ID:Q5Rs9TJ/0.net] 蛇足ねえ。。。 禿本1stでoperator overloadのデモ用に作られたサンプルなんだが そういうのは後で取って付けた存在といえるのか?
751 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:28:14.63 ID:PBLsyShY0.net] 業界全体としては奥の深さを求める人(求道者)を一か所に集め留めるのには非常に有益な言語
752 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:34:08.02 ID:0Y4DSJfq0.net] そのうちAsioやRangeあたりも標準化されるだろうし もうその方向に突き抜けてほしい 使いやすい言語なんか他にいくらでもある