C++相談室 part139
: デフォルトの名無しさん (ワッチョイ f65b-zn+7) [sage] 2018/10/06(土) 00:59:48.54:CdYUXXMG0 次スレを立てる時は本文の1行目に以下を追加して下さい。 !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part137 (正しくはpart138) ttp://mevius.5ch.net/test/read.cgi/tech/1535353320/ "> ttp://mevius.5ch.net/test/read.cgi/tech/1535353320/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 ttps://mevius.5ch.net/test/read.cgi/tech/1530384293/ ■長いソースを貼るときはここへ。■ ttp://http://codepad.org/ ttp://https://ideone.com/ [C++ FAQ] ttp://https://isocpp.org/wiki/faq/ ttp://http://www.bohyoh.com/CandCPP/FAQ/ (日本語) ----- テンプレ ここまで ----- VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured : デフォルトの名無しさん (ワッチョイ ba12-A6IM) [sage] 2018/10/06(土) 01:18:47.18:evMRo/Iv0 で _sって何 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 01:29:10.07:JjdhAE/r0 あれは複数形のsのつもりだった。 個人的には、コードにおいては、aaa に対する複数形の s は、aaas と書かずに aaa_s と書いた方が分かりやすいと感じることがあるので。 ただ、配列の場合は、複数形の _s を付けて、リンクリストの場合は、 list または、List を付けるようにしている。 今回の場合も、リストなら List と書いたほうがいいかもしれない。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 01:31:32.02:JjdhAE/r0 システム・ハンガリアンは、コーディング時の思考の節約になる事がある: ttps://mevius.5ch.net/test/read.cgi/tech/1494147712/376 : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/06(土) 01:52:36.08:OsNJaukk0 意味で考えたら自動的に型は合うでしょ。 意味だけ考えりゃ済むことを二重にするのが思考の節約ってのがわからん。 一重で済めばそれに越したことは無い。 グダグダの設計をなんとかするのにはシステムハンガリアンも有用と思うけど、 まともな設計が出来てれば要らんだろ。 「英雄のいない時代は不幸だが、英雄を必要とする時代はもっと不幸だ」 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 02:00:06.62:JjdhAE/r0 ところで、あなたは巨大なプログラムを作った経験ある? : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/06(土) 02:07:35.21:OsNJaukk0 巨大なプログラムの一部を作ったことはあるので、 設計がまともなことなんてまずないことは知ってるよ。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 02:10:13.19:JjdhAE/r0 たとえば、ポインタの場合の先頭に「p」が付いているだけでも、立派な「意味」になっている。 このような一般法則を用いないで、ポインタであるとう意味まで含めた変数名を 付けることは、基本的に不可能。 また、たとえば、名前の入った0終端文字列へのポインタを「pszName」という変数名を 付けているのは、かなり適切に意味を表していると思う。 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。 また、長いテキストの中の一部だけに着目した文字列の場合は、そのどちらでもないから 「psz」の接頭辞はつけない。 これにより、発見しにくいバグも減る。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 02:17:56.90:JjdhAE/r0 決められたフォーマットでファイルにデータを書き込むような場合、コード中、 メモリ中のデータのポインタと、これから書き込む fseek するためのファイルポインタ、 サイズなどが「対」または「コンビ」のようになって存在することがある。 そのとき、接頭の、fpos、p、size、len などでそれらが区別できることはとても有りがたい。 その場合、 fposData1 = pData1 - pTop; のようなパターンが現れるだろう。 それに加えて、同じではない微妙に違った関数化が難しいようなパターンが現れくることがある。 そういうような場合に、ハンガリアン記法は、とても重宝する。 正しいコードが、記法からだけでほとんど機械的に分かってしまう事も多い。 : デフォルトの名無しさん (ワッチョイ df7f-vBoO) [] 2018/10/06(土) 02:20:37.42:mx6yHsyJ0 テンプレートじゃ使えないしもはやC時代の遺物でしかないわな 現代じゃ害悪 : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/06(土) 02:26:47.17:OsNJaukk0 思考のレイヤが違うな。 やりたいことの意味をプログラムに落とし込んだ結果としてなんらかの型に収まるという考えでやってるので、 型が意味だと言われたら本末転倒な感じがする。 まあ型中心の方がわかりやすいってのならそれはそれでいいよ。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 02:27:05.24:JjdhAE/r0 自分の場合は、自作テンプレートの中でも使ってる。たとえば、 TYPE m_data; TYPE *m_pPrev; TYPE *m_pNext; xxx( TYPE *pPos ) { ・・・ } などのように。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 02:31:46.61:JjdhAE/r0 たとえば、floatをdoubleに変更したことはあるが、 BYTE 型を int 型に変えたりすることはまず無い。 16BIT時代から32BIT時代へ移行するような場合は、 変更したことはあるが、機械的に置換すればいいというわけではなかった。 32BIT時代から64BIT時代への以降においても、機械的に置換して 済むものではないと思う。 : デフォルトの名無しさん [sage] 2018/10/06(土) 03:24:51.76 目で追っただけでカメラが視線を検知してどの変数を見てるか特定して型を表示してくれ できれば脳に直接語りかけてくれ : デフォルトの名無しさん (ワッチョイ 8ad7-vBoO) [sage] 2018/10/06(土) 07:00:37.46:Oq2kvGiO0 ワード幅が変わってもWORDの意味を変えることはできなかったね : デフォルトの名無しさん (ワッチョイ 8ad7-vBoO) [sage] 2018/10/06(土) 07:10:10.75:Oq2kvGiO0 > 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。 型が知りたいときに宣言を見ないアホを救う必要あるか? F12を押せば一発だろうが : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/06(土) 07:26:40.45:hM5EPMW3a どのエディタを想定してる? : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 07:56:58.40:Gg92+MKo0 > 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。 今どき0終端文字列なんてAPIに渡したりする時など以外には使わんだろ ほとんどない例外事項に対処するためによく使うケースの効率落とすのはダメプログラマーにありがち : デフォルトの名無しさん (ワッチョイ 8107-5OJW) [sage] 2018/10/06(土) 08:20:03.66:u69e3u+l0 ? : デフォルトの名無しさん (ワンミングク MM32-y1q8) [sage] 2018/10/06(土) 08:22:41.80:hgnllvmvM ? : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 08:36:03.28:d9G2ZJ030 ! : デフォルトの名無しさん (オイコラミネオ MMb6-37Ge) [sage] 2018/10/06(土) 08:37:57.90:CrcQtIJ/M まともに育つIDEを用意してくれや とりあえず : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 08:46:02.31:d9G2ZJ030 すぐ環境のせいにする…(´・ω・`) : デフォルトの名無しさん (JP 0H67-/FYQ) [sage] 2018/10/06(土) 08:48:27.61:ixe97h7gH だから spacemacs だって : デフォルトの名無しさん (ワッチョイ 965b-zn+7) [sage] 2018/10/06(土) 08:49:31.50:CdYUXXMG0 std::string、 Company等の自作クラス、 std::unordered_set<Company>みたいなテンプレ使ったクラス、 スマポなんかはどう命名してるの? : デフォルトの名無しさん (オイコラミネオ MMb6-37Ge) [sage] 2018/10/06(土) 08:50:42.89:CrcQtIJ/M 数十万行の他人が書いたソース・コードに一度でも溺れてみたらいいよ… : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 09:40:20.41:d9G2ZJ030 Cの頃はIDEに検索機能さえあれば、検索した結果をメモ帳にでも書きつけて行って簡単にコールグラフを作れた なぜなら関数名はプログラムの中でほぼ一意とみなせたので、walk aroundの強力な指針となった C++になったらそうでもなくなった なぜなら関数名がオーバーロードされるようになった上に異なるクラスが同名のメソッドを持っているというケースが頻出する上に、 テンプレートやnamespaceまであるので Cの頃から比べたら、解析の困難さは異次元のレベルすぎて草 現実的に解析を行えるかは、ソースコードの字面がどうかかれているかよりもクラスの意味が整理されているかに大きく依存する もし仮に万が一、#if〜#endifで切りまくられたソースコードで正しくメソッドの定義元や呼び出し元一覧がクラスがテンプレートの 仮引数として渡されているケースについても正しく信用に足る一覧が出るIDEならちょっと欲しいかも : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/06(土) 10:32:45.07:hM5EPMW3a そんなあなたにdoxygen+graphviz : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 10:37:41.35:Gg92+MKo0 それできないとコンパイルすらできないんだけど… : デフォルトの名無しさん (ワッチョイ c0f2-vBoO) [sage] 2018/10/06(土) 10:59:24.19:GNSvvE670 コンパイラ(とそのコードを書いた本人)以外の人が把握するのが難しくなったということだろ。 ADLやらSFINAEやらで実際にどこの何が呼ばれるのか、プログラム全体をひっくり返してみないと わからなかったりするしな。 : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 11:00:25.81:d9G2ZJ030 doxigenは、なんかブラウザで閲覧できるようにするまでの設定がめんどくさかった思い出 およびコールグラフは出たが本当にグラフの画像しか出ない(シンボルをコピペできない)のでショボーン、 だったのでそんなにやりこんで使っていないスマンorz それよかDOT言語が面白すぎたので遊び倒した コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、 という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 11:48:26.03:Gg92+MKo0 > コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん 技術的には可能だって話 > もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、 > という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ そんなアホな発想するやつがいるとは思わなかったよ w : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/06(土) 12:28:56.41:hM5EPMW3a 無知ですまない。 シンボルをコピー出来ると何が便利になるの? : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 14:07:27.04:9hP5TFYu0 みたいなことをドヤ顔で言ってるド素人が多いけど TMPにはTMPの一般的なルールがあるんだがな ハンガリアンではないけど : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/06(土) 14:36:17.51:hM5EPMW3a templateの一般的なルールってtemplate引数で汎用的に使えるのはTとかそんな感じ? : デフォルトの名無しさん (ワッチョイ 9bc3-dNAh) [sage] 2018/10/06(土) 14:44:51.23:skeZ9l4z0 標準にあるis_integral_vとかdecay_tとかのvやtもハンガリアンの亜種といえば亜種なのか? : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 14:51:10.85:9hP5TFYu0 それそれ 型と値は区別しやすいようにしてんだから考え方は似たようなもんだ あと前スレ エアプログラマが調子に乗るな ドカタだろうが何も生み出さない素人よりよっぽど偉いわ : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 14:53:54.19:Gg92+MKo0 ドヤってるところ申し訳ないけどテンプレートにルールはないって言ってるやつはいないと思うぞ : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 14:55:36.96:9hP5TFYu0 お前を読んでそう思うのか : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 15:37:33.52:Gg92+MKo0 頭大丈夫? はのハンガリアンの話でしかない いつから一般的なルールだと思ってた? : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/06(土) 15:45:25.65:8LWAn6RCd ハンガリアンなんてなんの役にも立たないどころか邪魔にしかならないルールでコーディングしてたら周りから叩かれるだろ ジジイしかいないところでやってるのかな : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 16:10:25.13:FAIH8E2E0 この板には底辺ドカタしかいないのがよくわかるわ C++スレで底辺ドカタのコーディング規約だけでもりあがってる 底辺ドカタがオレんとこではこうだといいはりあってる コーディング規約を守ってもらうのも当然だが ちゃんといわれたとおりに適切に動くもん作りなさい そっちのほうが重要だからな 底辺ドカタはこの部分がおもいっきり欠如している : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 16:27:40.58:9hP5TFYu0 こっちのセリフだよw がへのツッコミや反論に見えるのか?w 一連のハンガリアンの話でハンガリアンをくさしたいだけだろ(多分C++ coding standardsか何かの受け売り ついでにでほとんどない例外事項とか言ってるが、 C++11からstd::stringがゼロ終端になったのは何でだろうね?w : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 16:29:29.27:9hP5TFYu0 エアプログラマと言われてカチンと来たのか知らんけど お前に言ったんじゃねーから どんだけナイーブなんだよ : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 16:34:55.04:FAIH8E2E0 むしろプログラマーとか日本では最底辺のドカタだからな なにいきがってんの : デフォルトの名無しさん (ワッチョイ 70b3-RseO) [sage] 2018/10/06(土) 16:38:08.78:9hP5TFYu0 は宛な : デフォルトの名無しさん (オイコラミネオ MM5e-37Ge) [sage] 2018/10/06(土) 17:27:06.43:LgHbCU3jM アプリハンガリアンならまだ役に立つよ まあ適切な命名すりゃ事足りるんだけどね ただ命名のスキルは将に知性に直結するんでね、玉石混淆なプロジェクトだと余計混乱したりする : デフォルトの名無しさん (オイコラミネオ MM5e-37Ge) [sage] 2018/10/06(土) 17:28:08.46:LgHbCU3jM 土方だの何だのと罵っても、その土方が世の中を動かしてるんだよなあ : デフォルトの名無しさん (ワッチョイ b7b3-Ww/X) [sage] 2018/10/06(土) 17:36:52.70:M3PJP+oD0 BOSSのCMっぽいね。 俺もそういう現場の人たちには敬意を表するわ。 : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 17:40:24.23:d9G2ZJ030 △:土方が世の中を動かしてる ○:仕様どおりのブツをきちんと作る土方が世の中を動かしてる : デフォルトの名無しさん (オイコラミネオ MM5e-37Ge) [sage] 2018/10/06(土) 17:59:22.81:LgHbCU3jM 今どき設計とコーディングが別だと思ってるエア()の人かな? : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 18:01:49.07:JjdhAE/r0 自分がやってるやり方だと、システム・ハンガリアンについては、 文字列(CStringでstrXxxx、0終端文字列で、szXxxxなど) と BOOL 型 (bXxxx)、 ポインタ(pXxxx)、についてだけ接頭辞を必ず使っている。 整数型、浮動小数点型については原則的には接頭辞を付けてない。 ただし、浮動小数点と整数を明確に区別したいときには、特に浮動小数点変数 についてだけは、「f」を付ける事があるが、float と double は区別してない。 int 整数についは、どうしても必要な場合は「i」を付ける場合があるが、普段は付けない。 今のところ、リストについては、接頭辞ではなく、接尾語のように、 XxxxList と付けているが、メンバ変数としては、 class CYyyyy { ・・・ CMyList<Aaaa> m_listXxxx; ・・・ }; と書くことはある。 配列の添え字は、idxXxxx、個数は、numXxxx、id 番号は、idXxxx。 最大値については命名に迷うことが多い。maxXxxx とすることもあるが、 numXxxx とは、「1」しか値が違わないことも多いので迷う。 新しく作ったクラスのオブジェクトについては、基本的には接頭辞としては 付けないが、どこか、変数名の一部でクラスが分かるようにすることはある。 たとえばの話、CPerson クラスのオブジェクトなら、person1、person2 などとすることが多い。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 18:02:16.20:JjdhAE/r0 [続き] 自分で作った Tree クラスの template なら、それを使った Tree クラスの オブジェクトは、XxxxTree という名前にすると思う。 : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 18:05:29.36:JjdhAE/r0 それから、今のところ、std::string は使わずに、CString ばかり使っているので、 std::string と CString の文字列を区別する命名法は普段は考えたことが無い。 多分、std::string を、sstrXxxx、CString を strXxxx にするか、逆に、 strXxxx と、cstrXxxx にするかだと思う。 それは、どちらか好んで使いたい方を短くするように命名法を決める。 : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 18:10:29.82:Gg92+MKo0 何をグダグダ言ってるのか知らんけどテンプレートにルールがないとか言ってるやつがいないのになアホがドヤろうとして自爆しただけ w : デフォルトの名無しさん (ワッチョイ 6ee3-BkfR) [sage] 2018/10/06(土) 18:13:01.41:JjdhAE/r0 >std::unordered_set<Company>みたいなテンプレ使ったクラス、 これは使ったこと無いけど、list の命名に習うなら、グローバル変数の場合は、 g_setXxx g_usetXxxx みたいな事になるかと思う。長すぎるのは困るので迷いどころ。 : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/06(土) 18:13:54.52:d9G2ZJ030 上の話の流れからすると単に「土方」と書かれると 「ちゃんといわれたとおりに適切に動くもん作」らない「底辺ドカタ」()と区別が付かないから 補足の必要が認められた あと下位の設計が((特段の事態が生じない限り)上位の設計に従うのは 今日日であっても変わらないので、が設計とコーディングが完全に合一だとする主張だとするといいすぎ : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 18:17:31.24:TQR3/dVH0 図星ですって素直に言えばいいのに メタプログラミングやったことも無いのにテンプレート云々を理由にして と同じように「今どき変数の命名法なんか要らん」と、ハンガリアンだけでなく あらゆる命名法を全否定してたアホだろ?w 受け売りばっかしてないで少しは自分のアタマ使えやボケが あ、使うアタマも無いから受け売りしてんのか : デフォルトの名無しさん (ドコグロ MM36-GL8C) [sage] 2018/10/06(土) 18:39:05.87:iIkYOa/KM だからお前以外は誰も一般的なルールの話なんてしてない 恥の上塗り乙 w : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/06(土) 18:47:51.32:8LWAn6RCd 今週は一般的な命名法って何のこと? ハンガリアンの話をしてるのにな : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/06(土) 18:48:44.44:8LWAn6RCd 今週はは勝手についてしまった : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 18:49:16.40:FAIH8E2E0 低学歴知恵遅れには 計算機のアトミックな型という概念がないからな : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 18:51:00.59:FAIH8E2E0 ともかく低学歴が書いたコードは読みにくい : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/06(土) 18:51:48.57:3GKrUe5y0 C++は低脳でも使える言語だが、C++使ってるから低脳ってわけでもない。 : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 18:52:08.17:TQR3/dVH0 同じ事しか言えんのか? お前を擁護してたろ? あと型が知りたきゃF12押せって話もあった (俺は別に型がわかるような命名を常にすべきとは思わんが) 彼らは型がわかるような命名法全否定してるだろうが >誰も一般的なルールの話なんてしてない 一般的なルールって何?TMPの話ならTMPでデファクトスタンダードになってる命名法がある、って話なんだけど お前話について来れてもないだろ? : デフォルトの名無しさん (ワッチョイ b7b3-Ww/X) [sage] 2018/10/06(土) 18:55:18.77:M3PJP+oD0 まさに問題の本質を逆説的に示している。 仕様どおり、仕様書の解釈に誤解の余地がないほどにちゃんと仕様書が書ける人が少なすぎる。 行間を読めない現業の人がいる限り、行間を読めという免罪符は通用しない。 それを何だかんだ言っても実現してくれる(一部の)エンジニアはすごいと思う。 : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 18:56:13.41:FAIH8E2E0 やはり低学歴知恵遅れにはjavascriptが限界 もしくはさらに最底辺のウンコスプリプトが限界 : 65 (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 19:02:35.18:TQR3/dVH0 >>ドコグロ MM36-GL8C=ワッチョイ aab3-GL8C みたいなアホにはわからんだろうから補足すると、 メタプログラミングにおける”型”とは ・定数 ・型 ・テンプレート これらのことだ それらのうちどれであるかを示すような書き方は標準ライブラリでも普通にされてる(テンプレート・テンプレートパラメータの命名規則は見たことないが) ハンガリアンの考え方と同じだろうが (もう一度言うけど個人的には常に守るべきとまでは思わない、所詮可読性や一貫性・利便性のためのもの : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 19:06:54.45:Gg92+MKo0 > 一般的なルールって何? 自分の書いたことも理解してないのか… > TMPにはTMPの一般的なルールがあるんだがな そんな話してるのは オ マ エ だけ w : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/06(土) 19:10:00.82:8LWAn6RCd いや、そのテンプレートの話とハンガリアンを結びつけるのは無理ありますわ… : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 19:10:06.22:TQR3/dVH0 一部だけ抜き出すから意味わかってないんだろうなと思ってな あと、反論になってない を100回読み直せ低能 : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 19:10:40.70:TQR3/dVH0 : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/06(土) 19:12:29.62:FAIH8E2E0 なんにも分かってない低学歴知恵遅れの元ウンコスクリプターが 分かった気になってC++さわると 必然的にこうなる : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/06(土) 19:15:13.83:8LWAn6RCd だめだこいつ話が通じてねえw : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 19:17:33.32:TQR3/dVH0 こっちのセリフだよ >ハンガリアンなんてなんの役にも立たないどころか邪魔にしかならないルールでコーディングしてたら周りから叩かれるだろ お前もどうせ受け売りだろ : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 19:26:32.20:Gg92+MKo0 > TMPの話ならTMPでデファクトスタンダードになってる命名法がある、って話なんだけど そんな話をしてるのも オ マ エ だけ 他のみんながしてるのは ハ ン ガ リ ア ン な w : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/06(土) 19:29:21.39:TQR3/dVH0 の前半には反論できないの? 恥の上塗り乙 w : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/06(土) 19:30:15.36:Gg92+MKo0 前半の話なんてしてないし w : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/06(土) 22:43:12.86:OsNJaukk0 俺は で命名法を全否定したつもりはないけどな。 システムハンガリアンというか、 の「型と意味の二重の思考」を批判した。 部分的にはアプリケーションハンガリアン的なものは有りだと思ってるよ。 型は当然に意味を表すために付けられる (べきである) し、 名前は (なんらかの命名規則によって) 意味を表すようにする、 結果的に名前が型を表すこともあるけれども、 一貫して「意味」で考えればよいだけというつもりだった。 意味 → 型、名前 で、 で「型は意味だ」ということが述べられていたので、 意味 → 型 → 名前 というつもりなら、中心に据えるレイヤが違うんだろうな (でもやってることはそんなにかわらん) ってことで、 な〜んか腑に落ちないけどまあいいやという気持ちが って感じ。 : デフォルトの名無しさん (ワッチョイ fcaf-XM+q) [sage] 2018/10/06(土) 22:58:06.04:0ug9OSMx0 昔から仮想コンストラクタの使い道だけ思い浮かばないのですが、 何か有用な使い方ってありますか? : デフォルトの名無しさん (ワッチョイ c4e3-BkfR) [sage] 2018/10/06(土) 23:00:31.50:YHCdyeri0 >システムハンガリアンというか、 の「型と意味の二重の思考」を批判した。 物理学において、「次元解析」なる手法が知られており、単位の辻褄を合わす 組み合わせを見出すだけでかなりの事柄が導けることが知られている。 それが丁度、「型と意味の二重の思考」に近い。 : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/06(土) 23:07:04.84:3GKrUe5y0 ハンガリアンで書いてみればいいだろ。 今まで名前考えるのにどれだけ悩んでたかわかるから。 サクサクかけるでえ。 : デフォルトの名無しさん (ワッチョイ 0cb3-vBoO) [sage] 2018/10/06(土) 23:07:31.25:UA9NipTw0 微妙な整数型の違いではまった経験があると お前さんの理想論より泥臭くとも現実的な対処の仕方を優先したくなるんだよ : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/06(土) 23:12:29.30:3GKrUe5y0 サクッちょサクサクやで。 : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/07(日) 00:02:27.52:2FImrXZj0 >命名法を全否定したつもりはないけどな。 それはすまんかった 要するに記法に型を入れる必要は無いってこと? まぁ型はちゃんと自分の目で確認しろよ、という考え方を否定するつもりはないけど 他人の書いた長いコード読んでると途中で忘れることもあるしなぁ (特に数文字とかの短すぎるローカル変数名で長い関数書かれると地獄) わかりやすけりゃ何でもいいんだけどさ 自分はテンプレートを理由にハンガリアンを否定するのは違うだろって言いたかっただけ : デフォルトの名無しさん (スップ Sd02-YLcB) [] 2018/10/07(日) 00:05:36.66:rbebcA6zd まだ理解できてなくてワロタw : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/07(日) 00:10:22.96:2FImrXZj0 受け売りエアプ野郎は帰ってね : 5 (ワッチョイ e66f-vBoO) [sage] 2018/10/07(日) 00:33:33.16:77445U4A0 私の思想では変数名が型を表すこともよくあるということを説明したつもりが、 まるで逆に受け取っているのでどう説明すればいいかわかんないや。 これ以上の説明はもうしない。 : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/07(日) 00:36:57.44:2FImrXZj0 システムハンガリアンには型だけでなく意味(というか用途)まで混じってることを批判してるんじゃないの? : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/07(日) 01:06:34.13:iX7g/tHs0 いまどきハンガリアンごときで論争かよ。 間抜けだな。 日本人としての矜持はどこ行った。 今やるべきことはモンゴリアンの発表だろ。 作る人の板だぞここは。 : デフォルトの名無しさん (ワッチョイ d980-A6IM) [] 2018/10/07(日) 01:11:39.10:mIq+f5AO0 この板は底辺ドカタしかいないからな しょうがない : デフォルトの名無しさん (ワンミングク MM32-y1q8) [sage] 2018/10/07(日) 01:52:24.01:r4TItDH9M 抽象クラスで配列作れるでしょ : デフォルトの名無しさん (オイコラミネオ MMb6-37Ge) [sage] 2018/10/07(日) 01:59:47.96:mnW0GgxkM そろそろ働けよ… 能書きだけじゃ食ってけないって身に沁みたろ? : デフォルトの名無しさん (ワッチョイ 0823-+rwh) [sage] 2018/10/07(日) 03:09:32.05:A62LOxJG0 古来よりコピー作る(機能を提供する)のに使われている : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/07(日) 06:58:40.31:874mFeqU0 フィルタ(固有の動作状態を持つ(←重要)ブツ)のの配置や接続をユーザーがGUIで変更可能なフィルタアプリを作るとき使う これは(部品)create()とclone()の両方が覿面に要る イメージ的にはDirectShowのgraphEditみたいなアプリを考えたら良い ユーザーがすでに書いた組み合わせフィルタ(A→B)を最終段にもう一発入れたいというときに、 今日日一般的で親切な操作インターフェースはワークシートにすでに描かれている(A→B)をclone()することである フィルタが過去の入力履歴に依存するケースがあり、そういった記憶はフィルタのインスタンス固有なので、ポインタのコピーでは済まず、clone()である必要がある (Visioみたいに単に部品の接続だけが問題なブツなら、部品自体はポインタのコピーで済ませて部品間の接続情報を別途管理するという構成も可能だが、部品の動作状態が絡むとclone()止む無し : デフォルトの名無しさん (ワッチョイ fcaf-XM+q) [sage] 2018/10/07(日) 11:07:53.26:rhwre/Em0 ,94,95 うーん、よくわからない。 純粋に class A { virtual: A() {} } のvirtual事なのですがその事を仰ってますよね? "x* create()"と"x* clone()"が要る場合があるのは理解できるけど、 "x* create()"を実装するのにコンストラクタを仮想にする必要が無いような。 もう少しわかりやすくしてもらえると助かりますが、面倒でしたらスルー していただいても結構です。ありがとう。 : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/07(日) 11:38:47.25:FoRhSX54a コンストラクタってvirtualできたっけ? : デフォルトの名無しさん (ブーイモ MM5a-y1q8) [sage] 2018/10/07(日) 11:40:37.47:kve7u25tM すまん。virtual constructer ってファクトリーメソッドの 別名というか旧い名前なんで其方の質問かと思ってたわ : デフォルトの名無しさん (ブーイモ MM5a-y1q8) [sage] 2018/10/07(日) 11:41:19.51:kve7u25tM 私の知る限り出来ないな : デフォルトの名無しさん (ワッチョイ aab3-GL8C) [sage] 2018/10/07(日) 13:37:26.97:Ty3ihyC20 , そもそもできてもどうやって使うんだ? : デフォルトの名無しさん (ブーイモ MM5a-y1q8) [sage] 2018/10/07(日) 14:16:30.30:kve7u25tM さぁ?80に教示した人でないとわからないかも 「昔から」とあるから、独自処理系なのかも :-p : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/07(日) 14:41:28.41:874mFeqU0 コンストラクタはC++の構文上はvirtualにでっきない 抽象クラスx (Product)のx*を返すcreate()メソッドを何かのクラス(Creator)に設けたら機能としてはできる Creatorが内部で実際の生成をサブクラスに委譲する場合は正にファクトリーメソッドパターン(のProductが抽象クラスのケース)になる さらにその「何かのクラス」(Creator)まで抽象クラスにしたブツがアブストラクトファクトリーパターンというやつで、もはや ProductとCreatorが同じ抽象クラスであってもかまわない。 ここまでやって初めてclone()が抽象化できるすわなち「インスタンスの」クローニングを抽象化のうちにやれる 抽象コンストラクタとはフツーアブストラクトファクトリーパターンかつProductとCreatorが共通の抽象クラスのケースを指す(のだと思う ※ 個人の感想です : デフォルトの名無しさん (ワッチョイ 96f6-Qng4) [sage] 2018/10/07(日) 14:46:34.66:9AlsaWAK0 コンストラクタの中でそのクラスのvirtual関数を呼んでも 基底クラスのが呼ばれるよな。 基本的にコンストラクタの中ではあんまりいろいろしないほうがいい。 : デフォルトの名無しさん (ワッチョイ 26bd-PkCJ) [sage] 2018/10/07(日) 14:50:52.53:874mFeqU0 >基底クラスのが呼ばれるよな。 うそぴょん 自身のが(非仮想関数同然に)呼ばれる 理由はこんなかんじ↓ ttp://isoparametric.hatenablog.com/entry/20080707/1215396846 : デフォルトの名無しさん (ワッチョイ 9bc3-dNAh) [sage] 2018/10/07(日) 15:14:33.44:ldfyXuEU0 元の質問主はデストラクタと間違えたのかな? コンストラクタにvirtual付けたらコンパイルエラーだからすぐわかるだろうし : デフォルトの名無しさん (ササクッテロ Spea-RseO) [sage] 2018/10/07(日) 15:45:00.91:L7dKBNcwp に書いてるからそれはないだろ 最近コード書いてもみないで頭の中だけで机上の空論こね回すのが流行ってんだろ 初心者の間で : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/07(日) 15:47:27.26:iX7g/tHs0 手を動かさずに脳内ですべてを完結させられたら、それはもう初心者じゃないだろ。 スーパープログラマの誕生だ。 : デフォルトの名無しさん (ワッチョイ 96f6-Qng4) [sage] 2018/10/07(日) 16:09:28.90:9AlsaWAK0 >104 え?派生クラスのほうが呼ばれる?? : デフォルトの名無しさん (ワッチョイ 9bc3-dNAh) [sage] 2018/10/07(日) 16:17:18.47:ldfyXuEU0 「基底クラスのが呼ばれる」だと最基底のクラスの奴が呼ばれるみたいに見えるから突っ込まれたんでしょ 何を継承してようと何が派生してようと、あくまで自分自身のが呼ばれる : デフォルトの名無しさん (ワッチョイ 96f6-Qng4) [sage] 2018/10/07(日) 16:21:48.20:9AlsaWAK0 なるほど たしかに基底でなくて自分自身が正しいな : デフォルトの名無しさん (スププ Sd94-OWoe) [sage] 2018/10/07(日) 16:59:03.29:8iCyHK6sd HLSLのfloat4みたいに、xyzwでもrgbaでも扱える、 所謂エイリアスを実現するスマートな方法は参照でしょうか? class float4 { … float x; float& r=x; }; : デフォルトの名無しさん (ワッチョイ 9bc3-dNAh) [sage] 2018/10/07(日) 17:46:55.03:ldfyXuEU0 getXYZW()とgetRGBA()を作る : デフォルトの名無しさん (ワッチョイ 15c7-vBoO) [sage] 2018/10/07(日) 18:09:26.41:AFK+s8Ok0 CStringを使うのに「あのエディタ」以外を使うアホを救う必要あるか? : デフォルトの名無しさん (ワッチョイ 15c7-vBoO) [sage] 2018/10/07(日) 18:20:34.91:AFK+s8Ok0 typedef char* A; typedef A B; typedef B C; typedef C D; typedef E F; typedef F G; G lpszOmanko; 型が知りたいときに宣言を見ないアホを救おうと一生懸命なアホの書くコード : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/07(日) 18:24:01.97:2FImrXZj0 無名共用体じゃあかんの? : 111 (ワッチョイ 6223-AEfH) [sage] 2018/10/07(日) 23:30:13.67:EwS6ucBG0 ありがとうございます。 (A)VC++のプロパティ機能を使って、ゲッター、セッターを変数のように書く (B)無名共用体 これらを試してみます。 : 111 (ワッチョイ 6223-AEfH) [sage] 2018/10/08(月) 01:39:38.90:LP2GoVYR0 無名共用体でもっともスマートに実装できました。 class float4 { … union{ float x; float r; }; union{ float y; float g; }; ・・・ }; ありがとうございました。 : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/08(月) 03:22:10.62:mztv/TPA0 どういたしまして。 : デフォルトの名無しさん (ワッチョイ 327c-yUUL) [sage] 2018/10/08(月) 05:30:07.70:64IsVtKl0 float f4; float3 f3 = f4.ayx; が難しいみたいな話かと思った : 111 (ワッチョイ 6223-AEfH) [sage] 2018/10/08(月) 09:51:00.66:LP2GoVYR0 swizzleは(A)で対応できました。 : デフォルトの名無しさん (ワッチョイ df81-vBoO) [sage] 2018/10/09(火) 12:09:32.42:R91wWJMl0 class parent { public: void disp() { cout << "parent\n"; } void disp(char* str) { cout << str << "\n"; } }; class child : public parent { public: void disp() { cout << "child\n"; } }; disp(char* str)を呼び出すにはどうすればいいですか? : 80 (ワッチョイ d081-TgND) [sage] 2018/10/09(火) 12:49:30.07:+8izRWpu0 Boland C++ Builder 5を使用していたのですが仮想コンストラクタ でコンパイルできませんでした。失礼しました。 VCLライブラリのTGraphicなどのヘッダーが仮想コンストラクタで記述 されていたのでてっきり仕様で認められている物だと・・。 このライブラリ(というかBuilder)だけ特殊ということで理解しました。 皆さんありがとうございました。 : デフォルトの名無しさん (ワッチョイ 4634-C4cH) [sage] 2018/10/09(火) 13:18:44.86:URt3e1HT0 try __finally も使えて糞便利なんだよなアレ : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ ceb3-hQIv) [sage] 2018/10/09(火) 13:27:53.34:p4x9lnrf0 引数にconstつければ、"文字列リテラル"も渡せる。 : デフォルトの名無しさん (アウアウウー Sa83-mwrz) [sage] 2018/10/09(火) 13:33:57.94:3NZxPpTya 引数なしのdispをオーバーライドしたから引数ありの方が隠蔽されたとかかな。明示的にusingしてみては? : デフォルトの名無しさん (アウアウウー Sa30-z023) [sage] 2018/10/09(火) 18:41:14.63:Cr2TK041a void disp(const char* str){ cout<<str<<\n; } virtual void disp(){ disp(“parent”); } void disp(){ disp(“child”); } 124の言う通りconstつけろという話じゃないかな : デフォルトの名無しさん (ワッチョイ 1508-vBoO) [sage] 2018/10/09(火) 18:55:23.66:sicZSpN90 class parent { public: void disp() { cout << "parent\n"; } void disp(char const* str) { //added: const cout << str << "\n"; } }; class child : public parent { public: using parent::disp; //created void disp() { disp("child"); //changed: cout -> disp } }; : デフォルトの名無しさん (ラクッペ MM70-SUQ8) [sage] 2018/10/10(水) 03:27:24.85:gfJl3N9PM clangの開発に携わりたいと思ったのですが、C++で書かれていて、テンプレートの理解も必要だし、簡単ではないですよね? : デフォルトの名無しさん (ワッチョイ 1508-vBoO) [sage] 2018/10/10(水) 09:18:24.61:Mncb4eyW0 clangの開発って、LLVMのチームに入りたいってこと? だとするとC++のスキルは世界的な有名人になれるくらい凄腕でないと厳しいだろうな : デフォルトの名無しさん (ワッチョイ e2d2-pJhu) [] 2018/10/10(水) 09:46:07.79:HW3BEf/50 ん?プルリク送るだけじゃないの : デフォルトの名無しさん (ワッチョイ 441a-/FYQ) [sage] 2018/10/10(水) 10:14:02.27:T78UR1cm0 日本のC++トップ集団ってどれなの? : デフォルトの名無しさん (ワッチョイ 1508-vBoO) [sage] 2018/10/10(水) 10:29:11.53:Mncb4eyW0 手続きの話と、務まるかって話は別だろ : デフォルトの名無しさん (スププ Sd94-OWoe) [sage] 2018/10/10(水) 11:30:32.89:2TMLSXoid C++の世界レベルのスキル。 かっこいいなぁ。 : デフォルトの名無しさん (ワッチョイ 1508-vBoO) [sage] 2018/10/10(水) 16:14:19.56:Mncb4eyW0 gnuの連中と真っ向やり合って勝とうって話だぜ 少なくとも、おまえらではゴミにすらカウントされんだろ : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/10(水) 17:08:56.41:MsVaxrK/0 バグの指摘だとか、 ドキュメントの typo を直すくらいの役にはたてるかもね。 ただ、自分のミス (未定義を踏んだとか) ではなく コンパイラのバグであると確信をもって主張するには、 規格をかなり把握しておく必要は有るので、 それだけでもなかなか大変だ。 : デフォルトの名無しさん (スプッッ Sdda-YLcB) [] 2018/10/10(水) 17:33:55.95:+jUb1Zszd ハンガリアン使ってる奴には無理だろうな : デフォルトの名無しさん (ワッチョイ a6b3-XM+q) [] 2018/10/10(水) 18:50:52.92:ApxL+L/D0 真のJava scriptがあればいいと思うのだが。 : デフォルトの名無しさん (ワッチョイ 7a23-+rwh) [sage] 2018/10/10(水) 19:56:55.02:TfVezTBt0 至る所に try catch を書かなきゃいけないスクリプト言語か : デフォルトの名無しさん (ワッチョイ 9bc3-dNAh) [sage] 2018/10/10(水) 20:03:19.96:kd4mysCH0 最近Java触ってないんだけど あの検査例外指定を必ず書かされる糞仕様はまだ残ってるの? : デフォルトの名無しさん (ワッチョイ 529f-QTQU) [sage] 2018/10/10(水) 20:57:53.79:1d6HAJSZ0 どっかの日本人が規格書だけ必死に読んでる間に 世界のプログラマは言語気にせずに必要なアプリ作ってるけどね。 そういうとこだよ。 : デフォルトの名無しさん (ワッチョイ 70b3-vBoO) [sage] 2018/10/10(水) 21:24:35.61:r0MKwZEq0 コンパイラのバグ報告くらいなら、別に規格理解してなくても ググったりメジャーなコンパイラで動作比較したらわかるけどな さすがにコンパイラの開発に携わるなら規格読まないとダメだろうけど : デフォルトの名無しさん (ワッチョイ e66f-vBoO) [sage] 2018/10/10(水) 22:41:09.57:MsVaxrK/0 より詳しい人が精査するという前提でとにかく目を増やす、 おおざっぱでもバグを発見する目になるというのも悪いわけじゃないしな。 開発メンバーが少ないならそういう雑多な情報は嫌がられることもあるかもしれんが、 CLANG 級のソフトならそれなりにきちんとした開発体制は出来てるだろう。 : デフォルトの名無しさん (ワッチョイ c7c7-4Hut) [sage] 2018/10/11(木) 08:11:33.98:2jR4X2Zc0 バグ探しとかそういうレベルじゃなく 今なら並列に重きを置く最適化とかが勝負だろうが : デフォルトの名無しさん (ワッチョイ e74e-/wJ2) [sage] 2018/10/11(木) 09:29:29.42:WBThZCRQ0 は開発に携わりたいと言ってるのに、一人が無理と言い出し、多数バグ探ししか無理と言い 誰もアドバイス出来てないところが面白い : デフォルトの名無しさん [sage] 2018/10/11(木) 09:49:26.64:RY8aHP4O0 結局のところ、マウント取りたいだけなのよね : デフォルトの名無しさん (スププ Sdff-xHoY) [sage] 2018/10/11(木) 11:10:54.68:dKSczptfd 会社にもそういうやつの多いこと多いこと… : デフォルトの名無しさん (ワッチョイ c7c7-4Hut) [sage] 2018/10/11(木) 11:39:55.98:2jR4X2Zc0 ム板で返す言葉に事欠いて人格批判か 会社にも、論文に人情論を書くようなアホはさすがに少ないな : デフォルトの名無しさん (ワッチョイ bf6f-4Hut) [sage] 2018/10/11(木) 13:36:17.85:PBtwUpWj0 本人が簡単ではないと思ってるから、 (割とハードルが低く) 出来ることもあるとアドバイスされている。 : デフォルトの名無しさん (ワッチョイ e74e-/wJ2) [sage] 2018/10/11(木) 15:41:08.81:WBThZCRQ0 まあ新型のゲーム機のバグを見つけてネットで大騒ぎするというアドバイスは、本人は望んでなさそうだけどな : デフォルトの名無しさん (ワッチョイ 27b3-4Hut) [sage] 2018/10/11(木) 16:14:12.43:AkyZHzlY0 何言ってんだこいつ 俺はへの直接の回答じゃないけど、単にコンパイラのバグ報告ってそんな敷居の高いものではないよ、と 言っておきたかっただけなんだが : デフォルトの名無しさん (ワッチョイ c7c7-4Hut) [sage] 2018/10/11(木) 17:25:23.27:2jR4X2Zc0 話の腰を折るようで悪いが 128が言っているのがclang自体の開発かどうか まだ仮定なんだが : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/12(金) 01:44:46.58:/I0EFebir スマートポインタの中身ぶち壊して他のアドレス与えて使いますことってできる? : デフォルトの名無しさん (ワッチョイ 4723-WryL) [sage] 2018/10/12(金) 04:03:45.88:EXEDaiYK0 C++言語でok てかそれ単に代入すりゃいいんじゃないの reset でもいいけど unique_ptr ttp://https://stackoverflow.com/questions/37806616/reassign-unique-ptr-object-with-make-unique-statements-memory-leak shared_ptr ttp://https://stackoverflow.com/questions/31438714/stdshared-ptr-reset-vs-assignment : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/12(金) 04:25:48.47:/I0EFebir 代入したら、元の生ポインタはいつ消えるの? : デフォルトの名無しさん (ワッチョイ dfb3-EA7j) [sage] 2018/10/12(金) 05:16:36.75:Q8TQ4FMY0 > 一人が無理と言い出し まあ務まるような奴ならこんなところで質問しない : デフォルトの名無しさん (ブーイモ MMcf-NsMu) [] 2018/10/12(金) 05:17:14.20:1iFt3dhJM scopeから出たら消える : デフォルトの名無しさん (スプッッ Sd7f-WryL) [sage] 2018/10/12(金) 05:40:31.89:ZYTXH3K/d 「消える」って言葉で何を意味してるのかがわからない ポインタは消したりできるものではない ポインタが指している先のインスタンスがデストラクトされるってことなら、 代入なりresetなりした時に前のをdeleteする必要があればdeleteされる foo * p = new foo; unique_ptr<foo> q(p); みたいなときに q に何かして p に nullptr が入って欲しいならそれは無理 : デフォルトの名無しさん (ワッチョイ df7c-LO+h) [sage] 2018/10/12(金) 06:06:36.57:U+Po+Cgl0 ttp://https://ideone.com/UjRAh1 : デフォルトの名無しさん (ワッチョイ df04-tiyD) [sage] 2018/10/12(金) 16:26:55.42:KckWK6Wl0 最近、gccを8.2にアップグレードしたのですが、 行列ライブラリGLMの最新版を使おうとすると、 std::log2他幾つかの数学関数(cmath)が未宣言とか言われてエラーがでます。 #代わりに::log2を使えとも ネットを調べてみると、 「log2等はC99以降の追加なのでstd名前空間には入らない」 等のコメントが見つかったのですが、 ここら辺の真偽について教えてください。 仕様的な真偽以外にも、 1. 他のOSのg++8.2以上でも(自宅はFreeBSD10.0)でも同じなのか? 2. コンパイラオプション等で制御する方法はあるのか? についても情報を求めています。 : 159 (ワッチョイ df04-tiyD) [sage] 2018/10/12(金) 16:33:39.71:KckWK6Wl0 追記: -std=c++11でも-std=c++17でもダメでした。何故? : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/12(金) 20:11:37.97:ic9zmoqmr ありがとうございます 勉強します : デフォルトの名無しさん (ワッチョイ 47c3-k+IC) [sage] 2018/10/12(金) 20:50:53.44:aBKT1Xur0 namespace std{ #include <math.h> } : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/12(金) 21:26:30.53:v3EBhOgT0 言語仕様的には C++11 で std::log2 は追加された。 なので、 C++11 以降なら cmath を include していれば std::log2 を使うことは出来る。 C++ は C が提供する関数は基本的に使えることになっていて、それらは std 名前空間に属するが、 C++03 の時点で想定していた C は C90 のこと。 なので、 C++03 には log2 は無かった。 ただ、環境に C99 用の math.h があればそれを include すれば (C++03 の仕様には無いが) std 名前空間に属しない関数として使えていた。 : デフォルトの名無しさん (ワッチョイ dfbd-f3lA) [sage] 2018/10/12(金) 23:30:34.87:1VvBVVcs0 >SCHEME こりゃお見それしました : デフォルトの名無しさん (ワッチョイ df04-tiyD) [sage] 2018/10/13(土) 14:24:29.26:EibBUXfA0 ふむ。ネットで調べた上での仕様的な解釈はだいたい正しかったみたいですね。 gcc 8.2.0で-std=c++11以降つけても使えないのは単なるバグなのか機種依存なのか…… : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/13(土) 18:50:17.42:F7qz0ZHX0 どっち? - GLM を使おうとするプログラムで std::log2 が未宣言というエラーになる - cmath を include したどんなプログラムでも std::log2 を使えない : デフォルトの名無しさん (ワッチョイ df31-WiH/) [sage] 2018/10/14(日) 00:07:05.78:IgMlyec50 gcc -std=c++11 -pedantic かも : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/14(日) 00:28:07.68:rMQ7HlNZ0 -pedantic は拡張機能を無効にするオプションなので、 紛うことなき C++11 の機能である std::log2 に影響しそうにないと思うけど……。 : デフォルトの名無しさん (ワッチョイ 67b3-JlWZ) [] 2018/10/14(日) 01:19:47.45:k35qB8Cf0 gccがバグってる派と規格がバグってる派の争いが勃発するのでは。 : デフォルトの名無しさん (ワッチョイ a77e-4Hut) [sage] 2018/10/14(日) 06:17:49.56:1QMkRc1k0 今のgccは-std=c++14がデフォだろ 7.0以後だっけ : デフォルトの名無しさん [sage] 2018/10/14(日) 09:57:28.32:JAcCHmYY0 江添亮はなんて言ってる? : デフォルトの名無しさん (ワッチョイ 47c3-k+IC) [sage] 2018/10/14(日) 10:06:18.57:wo9o1/Qh0 奴はお前のお母さんじゃないぞ : デフォルトの名無しさん (ワッチョイ df23-MW2R) [sage] 2018/10/14(日) 10:10:08.01:muYkF5p70 江添さんって規格を変えられるほどの発言権あるの? : デフォルトの名無しさん (ワッチョイ 47c3-k+IC) [sage] 2018/10/14(日) 10:14:36.46:wo9o1/Qh0 一応ISOへ意見を言う機関(日本NB)で意見する権利くらいは持ってるんじゃないの : デフォルトの名無しさん (ワッチョイ a77e-4Hut) [sage] 2018/10/14(日) 10:16:58.23:1QMkRc1k0 range-based forでADLが効くことにすべきか否か 不特定多数に意見を請うてたな 奴は反対に傾いていたようで 俺とは見解を異にしていた : 173 (ワッチョイ df23-MW2R) [sage] 2018/10/14(日) 10:50:05.94:muYkF5p70 そうなのか。 江添さんもすごいけど、このスレの人もすごいね。 : デフォルトの名無しさん (ワッチョイ 277f-4Hut) [] 2018/10/14(日) 11:47:14.18:xrZwnrIj0 俺も江添とは見解が異なるわ どちらかというとビョーンの見解に近い : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/14(日) 12:37:47.83:rMQ7HlNZ0 へー。 ADL が使えないのなら、 std::begin と std::end の特殊化でやるってこと? : デフォルトの名無しさん (ワッチョイ 27b3-Sm+T) [sage] 2018/10/14(日) 13:43:56.98:S1kOckUF0 特殊化ってなんだ ここで聞くよりググれよ、すぐ見つかるぞ : デフォルトの名無しさん (ワッチョイ 5f7e-4Hut) [sage] 2018/10/14(日) 14:46:41.69:iHlUkB5I0 実際に発言権持ってるのってビャーネとGCCとかLLVMとかclingとかの中の人とその他お金出してる企業くらいだろ : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/14(日) 15:17:03.44:rMQ7HlNZ0 江添氏はメンバ関数のみを対象にする案を推してたのね。 ttp://https://cpplover.blogspot.com/2011/02/range-based-for.html : 165 (ワッチョイ df04-tiyD) [sage] 2018/10/14(日) 16:32:31.63:izrX1EIe0 宅環境で後者。 FreeBSD以外でgcc8.2使ってる人だれかいませんかね? : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/14(日) 18:03:31.93:rMQ7HlNZ0 ttp://https://wandbox.org/permlink/N7ZxNx76GMs332sk : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/14(日) 19:57:55.19:rMQ7HlNZ0 念のために確認するけど、コンパイル時のコマンドは g++ だよね? たぶん の書きぶりからすると、ちゃんと出来てるとは思うんだけど。 gcc コマンドに -std=c++11 を付けると C++ としてコンパイルはしてくれるけど、 サーチパスが gcc と g++ では違ったりすることもあるから、 ヘッダファイルを見つけられないとか標準ライブラリのリンクに失敗するとかいうことはある。 でも、ヘッダファイルが見つからないんじゃなくて、 ヘッダファイル中にあるはずの宣言がされてないっていうのがよくわかんないね。 実際に cmath の中身を辿ってみるしかないんじゃない? : デフォルトの名無しさん (ブーイモ MMcf-NsMu) [] 2018/10/14(日) 21:17:29.63:WLfX4fFSM cmathはM_PIが未定義とか言われてハマったことはあるな : デフォルトの名無しさん (ブーイモ MMcf-NsMu) [] 2018/10/14(日) 21:20:39.47:WLfX4fFSM これだな #define _USE_MATH_DEFINES : デフォルトの名無しさん (ワッチョイ bf9f-TTlK) [sage] 2018/10/14(日) 21:51:25.46:cnUSrnZ50 めんどくセーからdockerでも使ってメジャーな環境でやればいい。 : デフォルトの名無しさん (ワッチョイ a77e-4Hut) [sage] 2018/10/14(日) 22:16:35.02:1QMkRc1k0 数学定数は標準に欲しいが言い出すとキリないからなあ : デフォルトの名無しさん (ワッチョイ 47c3-k+IC) [sage] 2018/10/14(日) 22:43:26.50:wo9o1/Qh0 でもπとeくらいは用意しとけよ標準 : デフォルトの名無しさん (ワッチョイ 5f7e-4Hut) [sage] 2018/10/14(日) 22:54:22.32:iHlUkB5I0 MSVCのかつてのマクロでひどい目に会ってるから定数を用意していなくて正解 : デフォルトの名無しさん (アウアウウー Saeb-5o2A) [sage] 2018/10/14(日) 23:18:09.29:r1bPQqR/a min,maxの事だな。 マクロじゃなければいいんだろうということでstd名前空間にconstexpr変数ならどうだろう? : デフォルトの名無しさん (ワッチョイ df12-gma9) [sage] 2018/10/15(月) 10:38:16.29:FjE86ied0 smallも定義されてた : デフォルトの名無しさん (ワッチョイ 2723-NsMu) [] 2018/10/15(月) 10:42:34.46:/DZZgAIK0 extern(C){ } みたいに #defineとかならまとめて namespace HOGE { } に入れてしまえれば良かった : 159 (ワッチョイ df04-tiyD) [sage] 2018/10/15(月) 12:12:04.88:EhepTNcp0 環境依存問題でしたが一応解決しましたので、軽く報告。 <cmath>内で #ifdef _GLIBCXX_USE_C99_MATH_TR1 以下で囲まれた部分がばっさり切られていたので /環境依存パス/bits/c++config.hを調べてみると、 #undefされていたのが直接の原因。 #defien ... 1 に書き換えてみたところ、 今度は<cmath>内の using ::tgammal;他4行がエラーになりましたが、 どうもFreeBSDの<math.h>にはその4関数がない模様。 #tgammafとか引数違いの類似物はある 結局その4行をコメントアウトすることでコンパイルを通すことに成功しました。 GLM最新版も使えたのでOKです。 まあ思うところはありますが、 gcc派 vs 規格派 vs マイナーOS派の話になりそうなので解決とします。 : デフォルトの名無しさん (ブーイモ MM0b-LEUL) [sage] 2018/10/15(月) 12:50:55.56:A4+xGAqjM #include <tr1/cmath> だったら使えたのかな? : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/15(月) 13:30:53.01:rnCB9VMH0 それは環境依存というよりそのあたりのパッケージを管理してるメンテナの手が回ってない感じでは……。 Linux に比べると BSD 系はだいぶん人口が少ないらしいし、そういうことも致し方ないのやもしれぬ。 : デフォルトの名無しさん (ワッチョイ a75c-4Hut) [sage] 2018/10/15(月) 14:31:54.20:7k7Dj2O30 g++ -std=c++17は試したか? tr1だった関数がstd直下に来てるぞ : デフォルトの名無しさん (ワッチョイ ff8b-CE2c) [] 2018/10/15(月) 16:08:03.29:FzvdOK9e0 ドラクエ10プレイヤーからの質問。 死んでいるのに動けてしまう『死亡ラグ』 ttp://egg.5ch.net/test/read.cgi/dqo/1539560522/ 改善の余地があると思えますか? : デフォルトの名無しさん (バットンキン MMbf-CE2c) [] 2018/10/15(月) 16:26:28.74:tvJDbt95M ドラゴンクエスト10の下請けプログラマーはC/C++の名人ばかりですよ? : デフォルトの名無しさん (ワッチョイ c78a-2+Lk) [sage] 2018/10/15(月) 16:28:24.70:/mdlwLZy0 猫耳猫オンラインを目指しているのでしょう : デフォルトの名無しさん (バットンキン MMbf-CE2c) [] 2018/10/15(月) 16:44:25.17:tvJDbt95M 友人がドラクエ10プログラマーなんだけど、C/C++については何でも彼に聞くようにしている。 : デフォルトの名無しさん (ワッチョイ df04-tiyD) [sage] 2018/10/15(月) 17:23:10.52:EhepTNcp0 書いてませんでしたけど、パッケージじゃなくて全部ソースから./confugre以下ビルドして入れてます。 まあそのconfigureが「4関数足りないから切っちまえ」と判断した本人ですが。 : デフォルトの名無しさん (ワッチョイ 07e0-SmB1) [sage] 2018/10/15(月) 21:14:12.69:E6pr56BO0 私たち日本人の、日本国憲法を改正しましょう。 総ム省の、『憲法改正國民投票法』、でググって みてください。拡散も含め、お願い致します。 : デフォルトの名無しさん (ワッチョイ dff7-1yL/) [] 2018/10/16(火) 05:10:47.74:2DZhjJ9l0 C++がオワコンってマ? Cの次に C++→C#→ほかの言語 の順番で勉強しようと思ってたんやが・・・ せっかく脱ニートしようと思ったのに水差された気分やわ 寝るわクソが : デフォルトの名無しさん (ワッチョイ 47c3-k+IC) [sage] 2018/10/16(火) 08:02:21.90:oqEWuMcG0 20年前からオワコンと言われ続けてるからオワコンが嫌いならやめた方がいいよ : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/16(火) 08:05:29.93:7CCe71Wvr C++11 以降、いろんな可能性があるように思えてきた : デフォルトの名無しさん (ブーイモ MMff-LEUL) [sage] 2018/10/16(火) 08:22:47.24:RwiWe9L4M ちな昨日のニュース記事。 ttp://egg.5ch.net/test/read.cgi/bizplus/1539603497/ C++erも困惑の結果。 : デフォルトの名無しさん (スププ Sdff-xHoY) [sage] 2018/10/16(火) 08:31:56.14:ChMhlbB0d C++11以降は神 : デフォルトの名無しさん (ワッチョイ dff7-6Dpv) [] 2018/10/16(火) 08:39:41.73:2DZhjJ9l0 神なんやな よし次はC++やるわ ありがとな : デフォルトの名無しさん (ワッチョイ a71e-lx5O) [sage] 2018/10/16(火) 09:38:01.41:VHaobsT+0 C++やるとか何プログラマーになるきよ。 つか、言語増やせばいいってもんじゃねぇぞ : デフォルトの名無しさん (JP 0H7b-lx5O) [sage] 2018/10/16(火) 09:47:44.01:VHaobsT+H まぁC++はちょっと別格にうざいけど、言語だけ増やしても役立たずの烙印だぞ。そんな言語増やすことに一生懸命になることより一つアプリ作れるほうが重要だわ。 だから、例えばJavaを使ってandroidアプリ開発できるとか。 要は言語以外にクラスライブラリやUIフレームワークの知識や経験を身に付けることに一生懸命頑張ったほうがいいと思う。 : デフォルトの名無しさん (ワッチョイ df7c-4Hut) [sage] 2018/10/16(火) 10:39:57.45:kKW6G61E0 神は全盛時までのCだろ 無駄のない細マッチョ 思いつきでゴテゴテ重装備するC++やC99以後はそうじゃない C++11はそれまでを反省はしてるけど重装備指向は変わってない : デフォルトの名無しさん (アウアウウー Saeb-EuHm) [sage] 2018/10/16(火) 10:40:14.59:rifs1aEYa オワコンだとか安易な神だとか、そういう子供っぽい発送だとどうせすぐに飽きてやめるんじゃないかと思えてくる。 : デフォルトの名無しさん (ワッチョイ dff7-6Dpv) [] 2018/10/16(火) 10:55:42.15:2DZhjJ9l0 大丈夫やで まず覚悟があるんや ワイは死ぬまで趣味に生きると決めとるんや それに動機もあるで Android NDKでC++でもAndroidアプリ作れると聞いとるからな ほんで一攫千金の大逆転や : デフォルトの名無しさん (オイコラミネオ MM2b-EqDO) [sage] 2018/10/16(火) 11:13:47.50:OaARVILoM いいかみんな、どんな新規格を使って作るかが目的じゃないぜ? まあ使いたくなるんだけどね : デフォルトの名無しさん (アウウィフ FFeb-NsMu) [] 2018/10/16(火) 11:56:04.30:YLHbxnbGF せやな : デフォルトの名無しさん (アウウィフ FFeb-NsMu) [] 2018/10/16(火) 11:57:59.03:YLHbxnbGF 装備にこだわってる人が多いみたいだけど エラーメッセージをもっと判りやすくするべき : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/16(火) 13:21:59.25:DXK1BkAG0 新しい機能はそれを使った方が良くなる (場合もある) から追加してるわけだし、 どういうときに便利なのかに慣れるためには最初は過剰なくらいに使ってみてもいいと思うけどね。 いきなり本格的に導入する前に実験的なプロジェクトで試すくらいはした方がいいかもしれんが。 : デフォルトの名無しさん (ワッチョイ 27b3-aaey) [sage] 2018/10/16(火) 13:45:02.82:DjFJv3DN0 以前は完全にbetter Cとしてしか見ていなかったが、STLとかBoostを積極的に使うようになってから面白くなってきた : デフォルトの名無しさん (スププ Sdff-xHoY) [sage] 2018/10/16(火) 14:05:38.44:ChMhlbB0d 「うちはSTL禁止」と言われて辞めたくなったw : デフォルトの名無しさん (オイコラミネオ MM2b-EqDO) [sage] 2018/10/16(火) 14:18:14.23:OaARVILoM 稀によくあるw 理由は「他のメンバーが読めないから」w : デフォルトの名無しさん (アウウィフ FFeb-NsMu) [] 2018/10/16(火) 14:39:57.19:YLHbxnbGF BOOST禁止は見かけるけどSTL禁止はひどいな : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/16(火) 14:45:06.11:GbK/byr70 いやまて、その真意は動的メモリ割り当てを減らしたい、かもしれんぞ : デフォルトの名無しさん [sage] 2018/10/16(火) 15:10:13.15:RUqX36lE0 言語増やせばいいってもんじゃないけど、プロのプログラマなら一通りどの言語も少なくともアマよりは使いこなせるでしょ : デフォルトの名無しさん (アウウィフ FFeb-NsMu) [] 2018/10/16(火) 16:24:19.15:YLHbxnbGF 必要なのは言語の多寡ではない CS(Customer Satisfaction ではないぞ)への理解 : デフォルトの名無しさん (ササクッテロ Sp9b-Sm+T) [sage] 2018/10/16(火) 16:25:43.12:AEURreP/p 標準ヒープ禁止ならSTL禁止にはなりうるだろうな アロケータ指定すりゃいいけど結構不便だし : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/16(火) 16:42:01.42:DXK1BkAG0 何が STL なのかっていうのは意見が分かれる部分もあるからなぁ。 便宜的に STL と呼ばれているものは仕様的には完全に C++ の一部で、 他の規定と区別するものは何もない。 Wikipedia にも簡単な歴史が書かれてるけど、 ttp://https://ja.wikipedia.org/wiki/Standard_Template_Library#%E6%AD%B4%E5%8F%B2 ここには「stringのようなその他のC++標準ライブラリの機能にも影響を与え」 とあり、 string 自体は STL ではないかのようにも読める。 でも、 string が STL の一部かというとだいたいの人は STL だと思ってるだろうし。 他の人が読めないからっていうのが理由ならテンプレート自体がもうダメってことなんかな。 : デフォルトの名無しさん (ササクッテロ Sp9b-Sm+T) [sage] 2018/10/16(火) 17:03:12.74:AEURreP/p STLってあくまで俗称やろ、定義は曖昧 俺も「読めないからテンプレート使わないでくれ」と言われたことはあるなぁ PC向けなんだしSTLくらいは我慢してもらったけど でも世の中標準のヒープ自体使っちゃいけない業種、結構あるやろ コンシューマゲーム機も大抵そうやで アロケータ渡せばいいって言われるだろうけど正直不便 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/16(火) 17:20:07.77:DXK1BkAG0 つっても、そこそこの規模のプログラムだと STL は使わないにしても ちゃんとしたフレームワークを用意するやろ? そうでもないのかな。 割と泥臭くやってたりするのかな。 : デフォルトの名無しさん (ワッチョイ c708-4Hut) [sage] 2018/10/16(火) 17:24:00.16:5Df0UEAr0 当たり前 欲しくて欲しくて渇望してた機能がやっと来るのがC++だから 使いたくなるのは自明だ : デフォルトの名無しさん (オイコラミネオ MMfb-u0q9) [] 2018/10/16(火) 17:28:01.22:rnwRcPOpM X他の人が読めない O無能が読めない 実際は多くがこうな訳だけど仕方ないよね お勉強全くしない奴少なくないしそれに合わせないとだもんね : デフォルトの名無しさん (ササクッテロ Sp9b-Sm+T) [sage] 2018/10/16(火) 17:35:42.75:AEURreP/p 社内ライブラリはもちろんあるけど 検索機能を含むコンテナとなるとやっぱりSTLが楽なんだよなぁ さすがに二分木やハッシュで検索、まで自社で作るほど そういう用途に頻繁には遭遇しない ほんとはそういう中小企業でPC向け、ってなったらそれこそ標準ライブラリには頼れよと言いたかったけどね : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/16(火) 17:52:27.17:GbK/byr70 コンテナ禁止なのか、<algorithm>まで禁止なのかにもよるな 前者だけなら自前コンテナでもメンバー関数揃えておけばソートや探索は後者使えるし ただ<algorithm>の中で本当にヒープ使ってないのかというのは : デフォルトの名無しさん (ワンミングク MMbf-RwiA) [sage] 2018/10/16(火) 17:53:25.84:VsgeYI1JM バカに合わせないとお前が一生メンテする羽目になるぞ : デフォルトの名無しさん (ワッチョイ c708-4Hut) [sage] 2018/10/16(火) 18:17:14.69:5Df0UEAr0 その昔、バカでも読める言語ってのが一世を風靡したね そのお陰で、バカ人口が増えて生産性に比例しない人件費がうなぎ登りして たーまやーとばかりに弾けた ピンサロで嬢が知り合いだったときはマジびびった : デフォルトの名無しさん (アウウィフ FFeb-NsMu) [] 2018/10/16(火) 18:20:58.72:YLHbxnbGF >ここには「stringのようなその他のC++標準ライブラリの機能にも影響を与え」 >とあり、 string 自体は STL ではないかのようにも読める。 stringというかSTLって「標準」のくせに亜種がいっぱいあった希ガス : デフォルトの名無しさん (ガックシ 068f-aaey) [sage] 2018/10/16(火) 18:30:46.21:VMchfhmP6 科研費余ってるんだが、C++ とかプログラミング関係の書籍で必読だったり面白いもの教えてくれませんか Effective C++、ストラウストラップ、リーダブルコードくらいは持ってます 個人的には C++ Coding Standards 欲しかったが新品じゃ売ってないな : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/16(火) 18:31:08.20:GbK/byr70 そら当然、STL策定直後は当時のコンパイラにはSTLは付いてきてなかったわけで 結構な数のサードパーティが追加ライブラリとして売ってたから : デフォルトの名無しさん (ワッチョイ 27b3-Sm+T) [sage] 2018/10/16(火) 18:33:54.71:u+WV2+U20 D&E : デフォルトの名無しさん (ワッチョイ 27b3-Sm+T) [sage] 2018/10/16(火) 18:57:22.46:u+WV2+U20 ってD&Eも中古しかないな、すまん : デフォルトの名無しさん (ワッチョイ 7f80-WnU0) [sage] 2018/10/16(火) 19:34:49.65:TeNN2wBh0 C++ 標準化委員の本 C++テンプレートテクニック 第2版、 επιστημη(えぴすてーめー)・高橋 晶、2014 C++11/14 コア言語、江添 亮、2015 : デフォルトの名無しさん (ワッチョイ c78a-2+Lk) [sage] 2018/10/16(火) 19:35:39.88:2gS77l+u0 付いて来た某MS標準のSTLが酷い代物でな : デフォルトの名無しさん (ワッチョイ df34-Esd+) [sage] 2018/10/16(火) 19:37:34.26:w/54xJNv0 バカでも読める…Goかな? : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/16(火) 19:41:09.29:3k1bGaxFr 上と下は結構マニアックな感じしますね 真ん中は良さそうです 今回買わなくてもいずれ読みたいです これにしても C++ coding standards にしても、需要ないんですかね : デフォルトの名無しさん (オイコラミネオ MM4f-EqDO) [sage] 2018/10/16(火) 19:44:09.89:qu1dabNTM これなw 笑えなかったりするが : デフォルトの名無しさん (オッペケ Sr9b-aaey) [sage] 2018/10/16(火) 20:09:37.15:3k1bGaxFr データ構造とアルゴリズムの本もほしいんだよなぁ : デフォルトの名無しさん (ワッチョイ bf9f-TTlK) [sage] 2018/10/16(火) 20:43:54.27:+sj1AQoJ0 こういうこと言う奴に限って3ヶ月後には自分でも読めないクソコード書きやがるからな。。 : デフォルトの名無しさん (ワッチョイ 27f2-4Hut) [sage] 2018/10/16(火) 21:00:30.49:4qUYryqZ0 「俺のコードは馬鹿どもには理解できない!」 : デフォルトの名無しさん (ドコグロ MM2b-EA7j) [sage] 2018/10/16(火) 21:18:43.52:uMB0oNTuM 趣味でやってる奴でも結構深いところまで使いこなしてる奴いるし 逆にプロは最新の機能とかをあえて使わなかったりするから一概にはなんとも言えん : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/16(火) 21:34:11.34:DXK1BkAG0 ワイも D&E を推すやで。 C++ はツールやドキュメントの発展と足並みを揃えることで上手く発展してきたという話が書かれていて、 現実的な事情を踏まえた歴史の流れがわかる。 ただ綺麗にデザインした言語とは違う現実の重みを感じる。 (まあそれが負債になってもいるんだけど。) 単純に読み物としても面白いよ。 : ◆QZaw55cn4c (ワッチョイ df60-vJCm) [sage] 2018/10/16(火) 21:35:52.97:YZqafHqA0 >神は全盛時までのCだろ ライブラリは今でもずっと悲惨なままだと思いますです…… : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-4Hut) [sage] 2018/10/16(火) 21:38:41.78:DXK1BkAG0 もちろん色々と使いこなせればそれが強みにもなるんだけど、 使ったことない言語やフレームワークを使ったプロジェクトにアサインされるなんてよくあることみたいだし、 そういうときに (使いこなせるとはとうてい言えなくても) 動くものをでっちあげる能力ってのも それはそれで重宝されたりっていう話も聞くし、 どういう強みでやっていくかっていうのは千差万別なんじゃないかと思う。 : デフォルトの名無しさん (ワッチョイ e74e-/wJ2) [sage] 2018/10/16(火) 22:14:25.18:fyfgXtmf0 江添並のC++の知識が欲しい 皆江添に頼ってるし : デフォルトの名無しさん (オイコラミネオ MMfb-u0q9) [] 2018/10/16(火) 22:58:29.81:rnwRcPOpM C++17は和本だと江副氏の一択なんだけどあれは そうなった背景とか使い道にはそんなに触れられてないのがな 逆引き辞典とか流し読みして大まかな把握するには便利だけど : デフォルトの名無しさん [sage] 2018/10/17(水) 01:15:28.13:GtdoA72O0 プロ棋士の居飛車党が振り飛車指したからといってアマに負けたら恥だと思うが 「振り飛車指せないって言っても、居飛車よりはって意味や。君ら如き一間飛車でも勝てるで?」的な 「F# 書けないって言っても、メインで業務に使ってるC++よりはって意味や。君らよりは書けるで?」的な (F# の部分にはマイナー言語が入るものとする) プロ名乗るなら。 : デフォルトの名無しさん (スプッッ Sd7f-KSPj) [sage] 2018/10/17(水) 03:05:57.24:WnKnONn0d 普段使わない言語なんて普通に読めて普通に書けりゃ十分だろ… : デフォルトの名無しさん (JP 0Hbf-CE2c) [] 2018/10/17(水) 04:54:36.62:oHwaYHH6H ドラクエ10の下請けプログラマーが精鋭揃いだということはわかりますが、こういう苦情が後をたちません! 534 名無しさん@ゴーゴーゴーゴー! (ワッチョイ 4910-binO [180.51.97.166 [上級国民]]) sage 2018/10/15(月) 09:26:17.41 ID:5tgKKwqc0 ttp://https://hiroba.dqx.jp/sc/forum/prethread/408523/ 移動速度が遅すぎてプレイする気になれない…… ぎのぎ [GM468-320] テーマ:操作性・メニュー 2018/10/15 09:17 こんにちは。ドラクエ10を始めて、着飾りもストーリーもたくさん楽しませていただいています。 ストーリーは進むたびにたくさん泣けて、ゲーム内容には大満足です。 しかし、移動速度があまりにも遅すぎて、ストレスが溜まってしまい、最近はゲーム自体から足が遠退いてしまっています。 ドルボードではまだ耐えられます。 ストレスになるのは、特に町のなかです。 以前の投稿で、早くなる料理はできない、とお答えしていらっしゃいましたが、移動速度が上がる装備はありますよね。 そちらの方がよっぽどあるのとないのと変わりそうですし、やりこみ具合で差が開く部分に思います。 時間設定のあるダンジョンなどもあるそうで、考慮するのは確かに大変そうです。 なんなら、素のスピードが変わらなくても構いません。町中だけでもダッシュ機能のようなものをつけていただけませんか? ただ方向キーを押すだけの時間が、本当に苦痛なんです。 ストレスになるなら止めちゃいなw誰も止めないよw : デフォルトの名無しさん (ワッチョイ dfb3-EA7j) [sage] 2018/10/17(水) 04:55:56.73:dMmY0qiN0 プロは言語の機能を使えるかどうかでなんて勝負しない 書いたコードの性能、わかりやすさ、バグの少なさとかで勝負する : デフォルトの名無しさん (オイコラミネオ MM4f-EqDO) [sage] 2018/10/17(水) 05:02:17.48:WHt6d16aM せやな 使うべきときにスマートに使う これがプロだわな : デフォルトの名無しさん (ワッチョイ df34-Esd+) [sage] 2018/10/17(水) 07:36:08.50:IIN7z2610 RPGとか糞時間の無駄 : デフォルトの名無しさん (ワッチョイ a707-e7Bj) [sage] 2018/10/17(水) 07:43:25.83:QT9QvtrA0 敵車両の破壊には有効だが : デフォルトの名無しさん (ワッチョイ c708-4Hut) [sage] 2018/10/17(水) 07:57:03.78:Nvagglal0 今の戦車にゃ効かんだろ : デフォルトの名無しさん (ワッチョイ c78a-2+Lk) [sage] 2018/10/17(水) 08:18:18.25:DWSbH/V/0 対戦車壕でも掘るか : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/17(水) 09:23:52.75:4yuTjZOF0 RPGってあれだろ、IBMの作ったCOBOLもどきだろ、確かに時間の無駄だし戦車には効かんだろ : デフォルトの名無しさん (ワッチョイ c708-4Hut) [sage] 2018/10/17(水) 09:25:52.61:Nvagglal0 ん、ソ連製だよ : デフォルトの名無しさん (オイコラミネオ MMfb-74BK) [sage] 2018/10/17(水) 17:39:50.55:imhsxBLOM OpenCVのtemplatematchingについてなのですが、 しきい値を決めて類似度がしきい値以上の物を全探索で複数探すものはあったのですが、 類似度の上位2つのみを探す方法って無いですかね? 全探索は遅いので上位複数個だけ取れたらいいなと : デフォルトの名無しさん (ワッチョイ a707-e7Bj) [sage] 2018/10/17(水) 18:57:16.89:QT9QvtrA0 最後の一個が最大だったらどうするの : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 67b3-iK5y) [sage] 2018/10/17(水) 19:02:36.72:+XF2eq+O0 閾値を適用するコードを探してチャチャっと改造すればいいんじゃね? つか、最大値を求めるアルゴリズムも知らないのにOpenCVやってんの? : デフォルトの名無しさん (ワッチョイ df23-KSPj) [sage] 2018/10/17(水) 19:12:33.43:9fdgZI6P0 高速に判定できる軽量版データ(部分画像、低解像度、モノクロなど)がありうるなら それで箸にも棒にもかからないものを高速にふるい落としてから 残ったものだけをちゃんと調べればいいよ : デフォルトの名無しさん (アウアウカー Sa7b-v5lg) [] 2018/10/17(水) 20:15:44.53:MwWLHD/ka 並べ替えて上位複数個取り出すんじゃダメなん? : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/17(水) 21:50:01.45:4yuTjZOF0 は、閾値以上の値を全部取ってくる関数の代わりとして 上位n個(nは定数)を取ってくる関数はないか、ってことだろ? > 全探索は遅いので と書いちゃうから誤読されてそう。上位n個の場合でも全部見る必要はあるんだから : デフォルトの名無しさん (JP 0Hbf-CE2c) [] 2018/10/17(水) 21:56:50.45:oHwaYHH6H このゲームすぐ持ち物いっぱいになるな ttp://egg.5ch.net/test/read.cgi/dqo/1539336435/ 使い道のないアイテム(無駄なコード)が多すぎやしないか? : デフォルトの名無しさん (アウアウカー Sa7b-v5lg) [] 2018/10/17(水) 22:16:11.68:MwWLHD/ka だよね。 全部閾値以下って可能性考慮しても、並べ替えて上位から閾値以上か確認しながら取り出した方が早いべ。 : デフォルトの名無しさん (ワッチョイ 2723-RKqf) [sage] 2018/10/17(水) 22:41:59.25:vRAfxvML0 ソートは要らない : デフォルトの名無しさん (アウアウカー Sa7b-v5lg) [] 2018/10/17(水) 23:07:41.45:MwWLHD/ka んじゃどうすんの? 最大値を見つけた後に、最大値省いたリストなり配列から次の最大値(2番目に大きい数)探すにしたって、最大値を省くために最大値が有った場所を覚えておいて、そこを削除するなりしないと駄目でしょ? 面倒くさいし、速いと思えないんだけど。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sdff-CVTA) [sage] 2018/10/17(水) 23:12:11.03:3nZpVaoed ttp://https://teratail.com/questions/68835 : デフォルトの名無しさん (アウアウカー Sa7b-v5lg) [] 2018/10/17(水) 23:17:55.90:MwWLHD/ka 。。。。。え“ 5番目の大きさまでさがすとなら、5個もelse if書けと? 任意の個数なら、毎回書き直しか? アホかと。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sdff-CVTA) [sage] 2018/10/17(水) 23:23:37.00:3nZpVaoed バブルソートを知っていれば、任意個数でもいける。しかし、抽出個数を任意にすると、まあちょびっと遅くなる。 : デフォルトの名無しさん (ワッチョイ 2723-RKqf) [sage] 2018/10/17(水) 23:23:37.66:vRAfxvML0 元の質問が2個取り出すだけだからそれを前提にしてたすまん n個を取り出すならソートしないとだめだな : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sdff-CVTA) [sage] 2018/10/17(水) 23:25:33.43:3nZpVaoed テンプレートの再帰を知ってれば遅くならずに任意個数いける。 : デフォルトの名無しさん (ワッチョイ 07e0-LO+h) [sage] 2018/10/17(水) 23:37:39.44:4yuTjZOF0 元データをソートしなくても、結果用にn個のソート済み配列(flat_setとして提案されてるやつ)を用意して そこに追加していきゃいいのでは。既に閾値以上のがn個集まってたら以降は最小のと比較して交換 : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/18(木) 00:31:36.03:qf9NxgCDa n個のソート済み配列って、ソート済み配列を何個も用意してどうする。。。と言う言いたいこと分かるけど、書き間違いでおかしな事言ってるっぽくなってるっていうツッコミは置いといて。。。 閾値が在るんだから、先に閾値以上の物だけ別の配列に入れてソートすれば良いってのは確かに任意個数で一番速そう。 : デフォルトの名無しさん (ワッチョイ afe3-7PZ0) [sage] 2018/10/18(木) 00:47:10.59:0DBeL9M10 交換が発生する度にn個中の最小を検索する必要がある 閾値以上のを1回ソートとあまり変わらないような・・・データ次第か 全ソートして上から閾値見ながら、で充分じゃね? 選択部を工夫してもたいして効果なさそう : デフォルトの名無しさん (ワッチョイ 97e0-M8rW) [sage] 2018/10/18(木) 00:52:16.35:fwCHkrgD0 ソート「済み」配列なので最小は必ず端にあるから検索の必要はないよ 代わりに追加の度に二分探索をする それをイメージしてもらうためにflat_mapって書いたんだが未策定のものは伝わらないな、うん すまん、要素数n個のソート済み配列を1個、で : デフォルトの名無しさん (ワッチョイ 97e0-M8rW) [sage] 2018/10/18(木) 00:59:51.74:fwCHkrgD0 s/flat_map/flat_set/ orz : 266 (オイコラミネオ MM1b-MrPr) [sage] 2018/10/18(木) 01:37:39.33:uQXK6ghcM すみませんありがとうございます ここに出てたの試してみます : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/18(木) 01:42:23.05:qf9NxgCDa 正直、追加の話見るまで最小と交換って私も「?」になった。 要するに1回目はソート済み配列が無いので をする。 要素を追加する度に、閾値以上かを見て、閾値以上ならソート済み配列で小さい順から二分探索して順番になる位置に挿入。 全要素1000で閾値以上が100とかなら、ソートするのが100だけだから、かなり高速化する。 追加もソート済みに入れるだけなので、遅くは無いし、次に取り出す事考えると(追加と同時にソート済みにしておく)、ソート済みから取り出すだけになるので全体として速くなる。 と言う考えであってる。。。と思う。 : デフォルトの名無しさん (ワッチョイ 97e0-M8rW) [sage] 2018/10/18(木) 02:00:19.06:fwCHkrgD0 近くなったがまだちょっと違う 結果用の配列は要素数nしか確保しない。閾値以上が100個あってもn=2なら要素数2 で、元データを順に見ていって、3個目以降が見つかったら結果用の配列に入り切らないので 後から見つけたのが結果用の配列の中の最小よりも大きければ、最小のを捨てた上で二分探索した位置に挿入する ……というつもりだった 元データに後から追加があったら、みたいなことを考えて書いたわけではないです : デフォルトの名無しさん (ワッチョイ ff23-yU1x) [sage] 2018/10/18(木) 02:11:57.61:acZxv8zY0 std::upper_bounds とかで挿入位置を決めて挿入、 n個を超えたら小さい方を1つ切り捨てるって感じだよね たかだか数件ならループで位置を決めてもいい : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/18(木) 03:05:15.05:qf9NxgCDa なるほど。 今全部分かった。 うーん。 それは任意の個数nと閾値以上の個数が近くないと、n個目以降が見つかる度に比較、探索、挿入を繰り返す事に。。。 データによりけりではあるけど、微妙。 は、イメージとしてはクイックソートの最初のピボットを閾値にして、閾値以下はソートしない様に変形させた感じ。 どっちがどうとかは、実測しないとなんとも言えなさそう。 : デフォルトの名無しさん (ワッチョイ 370d-nBLa) [sage] 2018/10/18(木) 05:26:46.31:6XxFpebh0 それってQuickselectみたいな感じ? ttp://https://en.wikipedia.org/wiki/Quickselect : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/18(木) 07:53:42.77:qf9NxgCDa そっちのが凄い。 任意のnーmまでの範囲だけクイックソートっぽくソートするのか。 最上位(m)からn位までのソートでおkじゃないか。 : デフォルトの名無しさん (ワッチョイ 1fc3-t/sI) [sage] 2018/10/18(木) 08:01:48.62:nYU4kM3H0 標準にstd::partial_sortってのがあってな : デフォルトの名無しさん (ワッチョイ da7e-nBLa) [sage] 2018/10/18(木) 19:43:13.60:O6IwnbGd0 ほとんど中身を知られていないalgorithmさん : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/18(木) 20:00:49.79:qf9NxgCDa それは ,, 書いた私の事だろうか。 そんな呼び名がつくのは光栄だけど、高卒で基本アルゴリズムしか知らないんだ。 その割には悪く無い処理を考えられたと自画自賛してたんだけど、やっぱ頭のいい人の考えるアルゴリズムは凄いね。 : デフォルトの名無しさん (ブーイモ MM17-SAcu) [sage] 2018/10/18(木) 21:00:06.41:KO6AKpPQM ヘッダファイルさんのことだと思うよ… : デフォルトの名無しさん (ワッチョイ 97e0-M8rW) [sage] 2018/10/19(金) 01:06:20.80:KjS8CKpl0 partial_sortなんてあったのか……orz でもquickselectは元データを並び替えてしまうから それができないならこのスレに書かれた方法でもいいけどな(負け惜しみ) 負け惜しみついでにの議論だが、mは元データの個数、nは欲しい個数として の閾値以上を抽出してから一括してソートは 最速のソートが使えるのでオーダーはO(m log m)、空間使用量は元データと同じ作業領域がいるのでmに比例 (俺)のソート済み配列に追加していくのは 挿入ソートを小分けにしてるわけだからオーダーはO(m*n)、空間使用量はnに比例 nとmが近いかそもそものデータ量が小さければが、そうでなければ有利かな ……で良いと思う : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/19(金) 01:22:58.84:SjrnPnkZa 大丈夫、私も同じく沈んだw 純粋に貴方と私のロジックでは、貴方の方が有利という試算なのね。 おk。了解した。 : デフォルトの名無しさん (ワッチョイ 97e0-M8rW) [sage] 2018/10/19(金) 01:38:12.56:KjS8CKpl0 いやまああくまで最悪計算量なんで、結局実際のところは実測しないとだけどもね オーダー上は挿入でnに比例するから二分探索に意味はない、と書きながら気付いたりもしてる(苦笑) : デフォルトの名無しさん (オイコラミネオ MM1b-Z4f9) [] 2018/10/19(金) 11:38:23.88:m66PCHeZM 地味に標準指定のアルゴリズムも改善されてて追いきれないよぉ : デフォルトの名無しさん (ワッチョイ 6a04-aXrr) [sage] 2018/10/19(金) 15:50:31.89:7aKWzf4h0 そして誰からも忘れられているstd::nth_element : デフォルトの名無しさん (ワッチョイ 6abd-9c8P) [sage] 2018/10/20(土) 00:02:17.58:qs+WVIEc0 ていうか4位同順が10万画素ぐらいあったらどうするんじゃスレ主、 : デフォルトの名無しさん (ワッチョイ ea12-tM5n) [sage] 2018/10/20(土) 11:06:48.96:5VFLqtlv0 ttps://www.magezinepublishing.com/equipment/images/equipment/H6D50c-6100/highres/Hasselblad_SHOT_01_F1_RGB_1460032379.jpg 一枚一億画素 jpg一枚で25MB FFでは開けた : デフォルトの名無しさん (アウウィフ FF9f-T/6m) [] 2018/10/20(土) 13:36:14.45:u8BRF3D8F 専ブラのプレビューでも相当時間掛かった リンクを踏む気は無い : デフォルトの名無しさん (ワッチョイ 6abd-9c8P) [sage] 2018/10/20(土) 14:20:59.31:qs+WVIEc0 できたので貼る Insertion sortで上位5件の相関値と座標(x, y)を表示するやつ: ttps://ideone.com/L0fXH2 これは、同着があっても上位5位に入れば全部出力する。 get_top_N_pixels()がご本尊の関数 get_top_N_pixels_exp()が比較用に作ったバージョンで、std::sortで全画素並べ替えて上位5件を出力する。 上位5位以内に同着があまりに多いとget_top_N_pixels_exp()の方のが早いが 適当に作ったランダムな値の条件でQVGAぐらいの画像サイズだったらget_top_N_pixels()の方が8倍ぐらい早いっぽ : デフォルトの名無しさん (ワッチョイ 6ab3-b3y3) [sage] 2018/10/20(土) 14:29:43.99:8XvHu+iJ0 Edge@androidでも開ける : 305 (ワッチョイ 6abd-9c8P) [sage] 2018/10/21(日) 13:32:51.16:CG65RjWX0 訂正 s/同着/同順/g で、同順がそれなりにある前提でパホーマンスをちゃんと計ったら8倍どころではなかったわ3000倍以上早かったわ; 条件は以下の通り ■ 画像サイズ: W=320 - 10, H=240 - 10 (Number of pixels=71300) ■ データ 値域[-5000.0F, 5000.0F]の一様分布。データ重複無し。 ■ Basic design の結果(get_top_N_pixels_exp(): 全画素std::sort()) 387 sec @ 反復回数ntimes=100, TOP_N=256 --> ntimesを10倍にすると3870 secの見込み ■ Practical designの結果(get_top_N_pixels(): TOP_N画素のInsertion sort 1 sec @ 反復回数ntimes=1000, TOP_N=256 14 sec @ 反復回数ntimes=10000, TOP_N=256 とゆーわけで、今回は一様分布かつデータ重複無しでこうだったので、TOP_N=256は一般条件における128と解釈するとして、 上位5位に入るデータの個数が128個以下ならのpractical designで上記のパホーマンスが出る見込み : 305 (ワッチョイ 6abd-9c8P) [sage] 2018/10/21(日) 13:46:01.97:CG65RjWX0 ごめwwwwwデータ訂正および結論は480倍早かった、に訂正、 ■ Practical designの結果(get_top_N_pixels(): TOP_N画素のInsertion sort 1 sec @ 反復回数ntimes=1000, TOP_N=256 8 sec @ 反復回数ntimes=10000, TOP_N=256 -- 3870 / 8 = 483.75 14 sec @ 反復回数ntimes=10000, TOP_N=65536 : 305 (ワッチョイ 6abd-9c8P) [sage] 2018/10/21(日) 14:18:55.75:CG65RjWX0 ごめwwwwww結論は3000倍以上早かった、で訂正の必要はなかったorz Basic designの結果 387 sec @ 反復回数ntimes=100, TOP_N=256 に対して、Practical designの結果 8 sec @ 反復回数ntimes=10000, TOP_N=256 は、(387/100) / (8/10000) = 4837.5倍早い 今日日のCPUアーキテクチャーとinsertion sort様様じゃ : 名無しさん@そうだ選挙に行こう! Go to vote! (ラクッペ MMc3-8aSD) [sage] 2018/10/22(月) 08:41:03.37:zV72Tsc+M 江添と2ちゃんねらーどっちが頭いいですか? : 名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 2ab3-nBLa) [sage] 2018/10/22(月) 08:50:48.56:pX1YSS+g0 お前が最高だよ : 名無しさん@そうだ選挙に行こう! Go to vote! (ラクッペ MMc3-8aSD) [sage] 2018/10/22(月) 09:11:16.83:zV72Tsc+M ありがとう// : デフォルトの名無しさん (ワッチョイ 2e1a-bYeg) [sage] 2018/10/22(月) 15:27:10.69:vlwo9A120 STLってもはやスクリプト言語などと変わらない使用感でプログラム書けるな 最高過ぎる : デフォルトの名無しさん (アウウィフ FF9f-T/6m) [] 2018/10/22(月) 15:49:25.60:H1W4+XYRF tupleが便利だけどまだちょっと物足りない : デフォルトの名無しさん (ワッチョイ ea11-nBLa) [sage] 2018/10/22(月) 17:48:12.06:MQnoZdqg0 C++17の構造化束縛を使うときありがたい : デフォルトの名無しさん (エムゾネ FF8a-T/6m) [] 2018/10/22(月) 18:11:37.07:N4Dlk9u9F インライン変数って使ってる? : デフォルトの名無しさん (ワッチョイ 7b23-YIge) [sage] 2018/10/22(月) 19:19:03.71:OLEUht090 c標準ライブラリの関数ってstd名前空間にあるのに必ずしもstd::をつける必要ないよね なぜか分かる人いない? : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スププ Sd8a-vNYI) [sage] 2018/10/22(月) 19:25:06.82:Bb4f3r+9d C言語との互換性のため。 using使っているから。 : デフォルトの名無しさん (ワッチョイ 6a34-Ep/t) [sage] 2018/10/22(月) 19:32:50.75:9pYssRud0 cstdio → stdで囲まれる stdio.h → 囲まれない : デフォルトの名無しさん (アウアウカー Safb-dUTK) [] 2018/10/22(月) 19:39:34.29:3rTgJh0aa 横から納得w 古いC++(C互換重視)と新しいC++(新世界の王に俺はなるモード)の互換のためか。 ナル。 : デフォルトの名無しさん (ワッチョイ 7b23-YIge) [sage] 2018/10/22(月) 21:20:30.74:OLEUht090 なるほど ありがとう : デフォルトの名無しさん (ラクッペ MMc3-+HPi) [sage] 2018/10/23(火) 18:14:01.09:Au3cxoDNM directory_recursive_iteratorで各ディレクトリを読み込むと読み込み順がおかしくなりますが、これvectorに突っ込んでソートしないと辞書順に戻せないのですか? : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-nBLa) [sage] 2018/10/23(火) 18:22:08.06:L3KABBTH0 戻すっていうか、普通のファイルシステムでは辞書順に並ばないことの方が多いんじゃないの。 知らんけど。 言語仕様的には recursive_directory_iterator が辿る順序は未規定。 : デフォルトの名無しさん (ワッチョイ 4acb-nBLa) [sage] 2018/10/23(火) 21:40:23.22:/OGOSsnj0 二次記憶装置のデータをいちいちソート済みに保とうとするとオーバーヘッドが無茶苦茶だからな 読み込み順がおかしくなるんじゃなく、いつもOSがソートして見せてくれてたのが元のまま出てきただけだ DOSの時代はdirに/oスイッチが追加されたとき便利になったものだと思ったよ : デフォルトの名無しさん (スフッ Sd8a-nQMY) [sage] 2018/10/23(火) 21:41:56.02:VWRpZj9Jd C++こそ至高 : デフォルトの名無しさん (スプッッ Sd2a-yU1x) [sage] 2018/10/23(火) 22:17:33.35:cC1ZIpo7d 毎日毎日ソートして表示してくれてる ls や dir.exe や exproler.exe には頭が上がりません : デフォルトの名無しさん (ワッチョイ 6abd-9c8P) [sage] 2018/10/23(火) 23:09:18.58:VQ3XT5xj0 総統も相当ソートがお好きですなあ ガハハハハハハ、 : デフォルトの名無しさん (ワッチョイ 4acb-nBLa) [sage] 2018/10/23(火) 23:09:49.99:/OGOSsnj0 ピキン : デフォルトの名無しさん (ワッチョイ f380-tM5n) [] 2018/10/23(火) 23:15:54.90:+Sb0MP+K0 また低学歴知恵遅れたちは頭わるいこといってるわ。。。 dir.exe? dirはcmd.exeの内部コマンドだからな dir.exeなんかあるワケがない ソートするのはcmd.exeがdirコマンドを受けつけたときの機能で OS自体の機能じゃないからな ホントな低学歴知恵遅れたちは基本的なことが分かってない : デフォルトの名無しさん (アウアウウー Sa9f-V5Rj) [sage] 2018/10/24(水) 01:34:13.78:K3Hn81Y7a 半角さん全角で書いてる・・・ : デフォルトの名無しさん (ワッチョイ 8af9-L5c9) [sage] 2018/10/24(水) 01:53:57.74:ht/B3MxL0 最近飽きられてきたから(構ってもらえなくなったから)、芸風を変えてきたんだろ。触らないのがよろしいかと。 : デフォルトの名無しさん (ワッチョイ f380-tM5n) [] 2018/10/24(水) 22:50:08.00:WtQFT3Lb0 全角の部分を半角で書き込むと403ではじかれる わかった? 低学歴知恵遅れの書き込みはいつも浅はか : デフォルトの名無しさん (ワッチョイ be80-6qH8) [sage] 2018/10/24(水) 23:09:52.03:2LYWqLo00 cmd.exe を半角で書いたら、 コマンドが実行されて、サーバーをハッキングされるとか、 5ch・サーバーの運営は、頭おかしい 素人がシステム・サーバーの運営構築してる 漏れは、何十冊も本を読んでいるけど、 cmd.exe を送ったら、ハッキングできるという記事を見たことがない : デフォルトの名無しさん (ワッチョイ 6abd-9c8P) [sage] 2018/10/24(水) 23:31:31.21:831HCs6w0 dir .exe dir cmd. exe OS ホンマや!弾かれた!! : デフォルトの名無しさん (ワッチョイ 6abd-9c8P) [sage] 2018/10/24(水) 23:34:37.74:831HCs6w0 サニタイズの最先端・ユーザーに入力させない←いまここ いや知らんけど多分、 : デフォルトの名無しさん (アウアウウー Sa9f-V5Rj) [sage] 2018/10/24(水) 23:36:41.49:K3Hn81Y7a 326はどうやって書き込んだのか : デフォルトの名無しさん (ワッチョイ 6a34-Ep/t) [sage] 2018/10/24(水) 23:42:29.72:2VbPUKOa0 dir.exeは実在しないから : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ a3b3-vNYI) [sage] 2018/10/24(水) 23:45:51.61:H1sgDttB0 cmd.exe : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ a3b3-vNYI) [sage] 2018/10/24(水) 23:47:41.25:H1sgDttB0 5chのNGワードチェックには文字参照という抜け穴が空いてる。 : デフォルトの名無しさん (エムゾネ FF8a-yU1x) [sage] 2018/10/24(水) 23:47:52.54:VdYWesL2F dir.exe とかはどうだろう : デフォルトの名無しさん (エムゾネ FF8a-yU1x) [sage] 2018/10/24(水) 23:49:12.41:VdYWesL2F 間違えた cmd.exe か 実体参照は書き込めない短縮url貼ったりするときにも使えるよね : デフォルトの名無しさん (エムゾネ FF8a-yU1x) [sage] 2018/10/24(水) 23:49:46.74:VdYWesL2F cmd.exe か : デフォルトの名無しさん (アウアウウー Sa2f-lMT5) [sage] 2018/10/25(木) 00:27:44.75:pvv+BGAWa © : デフォルトの名無しさん (ワッチョイ ab80-+4k5) [sage] 2018/10/25(木) 01:10:25.04:ZE3NVml10 文字実体参照・数値文字参照なら、コマンドが実行されて、5ch サーバーをハッキングされる事もない cmd.exe dot, period は、ascii コード、46 (0x2E) : デフォルトの名無しさん (オイコラミネオ MM4b-1gj4) [sage] 2018/10/25(木) 01:38:31.34:AmP2wyvxM ☝ : デフォルトの名無しさん (JP 0H4b-q7gB) [sage] 2018/10/25(木) 11:03:54.05:S9429CZWH 戻り値がオブジェクトの関数書きました。 すると上司が、変更があったとき不具合の原因になるからポインタで返せと。 これ本当でしょうか。stackoverflowとか覗いてるんですがオブジェクトで返すかスマポで返すかみたいな論調ばかりです。 少なくとも生ポインタ使えという意見は見当たりません。 (生)ポインタ使ったほうがいいケースというのは実際にあるんでしょうか。 : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/25(木) 11:14:40.21:5Cy/pQlUF malloc してるやつなら FILE * とかな : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/25(木) 11:14:58.15:5Cy/pQlUF ああ もちろんスマポは否定しない : デフォルトの名無しさん (ワッチョイ f323-JHIh) [sage] 2018/10/25(木) 11:19:20.78:UTTFABgo0 参照返しでもポインタ返しでもプログラムの堅牢性は大差ない気がする。 ちなみに俺は、NULLを返すケースがある関数はポインタ返し、 NULLを返すケースがない関数は参照返しにしてる。 : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/25(木) 11:36:26.68:kug3Loto0 c++ の標準のスマートポインタでは循環参照を持つもの、 例えば get_child() と get_parent() を持つような木構造やリスト構造は扱えない で、大抵の場合これらは単に生ポインタで実装される。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/25(木) 11:52:04.34:ytpwmPM20 C++ のミスりやすい箇所ってのはメモリ管理が多くを占めるので、 生ポインタは面倒くさいわってのが普通の感覚だと思うし、 不具合の原因になるってのはよくわからん言い分なので、 もっと掘り下げて聞かないとなんとも言えん。 共有オブジェクト (DLL) のインターフェイスにする場合なんかだと ABI の都合とかでおかしなことになったりすることもあるかもしれんなぁ みたいな可能性を想像することは出来るが、 書いてるプログラムや開発環境の性質に固有の事情はわからん。 一般的には、生ポインタにせざるを得ないことは有っても生ポインタの方が良いってことはあんまりなさそう。 : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/25(木) 12:00:30.29:kug3Loto0 ファクトリー関数は生ポインタ返すように作るのが良いと思う : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/25(木) 12:24:55.50:5Cy/pQlUF たしかにどこも指してない参照を返したいときは NULLポ使えるポインタ返しにする ダミーの空オブジェクト作れるように C++が最初からルートオブジェクト基底してくれてればよかったのにと思うことはある : デフォルトの名無しさん (ワッチョイ c9c3-d2wE) [sage] 2018/10/25(木) 12:31:40.62:O+EPl0Ul0 struct Point{int x; int y;}; みたいな単純なPOD構造体をstructだからって教条的にいちいちnewとポインタで取り回してるプログラムは時々見かけるけど そういうのは危ないし遅いしウザいからやめてほしい : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/25(木) 12:36:58.91:kug3Loto0 そんなの参照と値渡しでいいということには同意するが point 型を new / delete してるコード見た経験はないな : デフォルトの名無しさん (ワッチョイ 17b3-LdhF) [sage] 2018/10/25(木) 13:10:30.18:CpJhCfWv0 の上司が言ってるのは、コピーコンストラクトや代入が正しく機能するということを 保証しなくちゃならなくなるから、ってことだろ そこまで気にかけてる暇はないし、生ポで書くのが一般的な職場だというならそれに倣うしかない : デフォルトの名無しさん (スプッッ Sddb-VFcb) [sage] 2018/10/25(木) 13:17:16.94:qRFZNeCrd そういえば俺コピー不可のクラス書いてもちゃんと private だ何だで実際に代入できないようにしてないな… : デフォルトの名無しさん (ワッチョイ f323-JHIh) [sage] 2018/10/25(木) 15:12:05.05:UTTFABgo0 コピー不可で思い出したけど、コピーコンストラクタと代入演算子をprivateにしたクラスを vectorにpush_back()する記述がコンパイルエラーになるよね。 vector<Hoge> hogeVec; hogeVec.push_back(Hoge()); // コンパイルエラー これってどうすればいいの? : デフォルトの名無しさん (ワッチョイ a17f-7TBo) [] 2018/10/25(木) 15:24:01.65:GHCvVeSE0 emplace_back使うとか : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/25(木) 15:28:42.80:5Cy/pQlUF friend : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/25(木) 16:12:31.55:ytpwmPM20 std::vector の要素は CopyAssignable と CopyConstructible の要件を満たす必要がある。 実際、 std::vector は内部で要素をコピーしたり代入したりすることがあるんだから、 それが出来ない要素を入れられないのは当たり前の話で、 コンテナに入れるならポインタ (上記要件を満たすスマートポインタでもよい) を入れるようにするくらいしか方法はないと思う。 : デフォルトの名無しさん (ワッチョイ 0beb-JHIh) [sage] 2018/10/25(木) 19:22:18.01:Xzu40Yvw0 ムーブしてもいいならムーブコンストラクタと代入演算子を定義すれば行けないかな : デフォルトの名無しさん (ワッチョイ f323-VFcb) [sage] 2018/10/25(木) 19:29:07.62:wLNEFoo10 どうせ所有権意識して std::move を使うなら個々のクラスには 手を加えず unique_ptr かますのが楽じゃないかな : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/25(木) 20:30:19.71:ytpwmPM20 ムーブ可能なだけでは必要な要件を満たしてない。 コピー可能であることが要求されている。 : デフォルトの名無しさん (ワッチョイ 0beb-JHIh) [sage] 2018/10/25(木) 20:44:45.18:Xzu40Yvw0 vectorの型Tの満たすべき要件は操作による push_backとかresrveとかはコピーかムーブのどちらかが可能ならば問題ない : デフォルトの名無しさん (オッペケ Srb5-H+Zc) [sage] 2018/10/25(木) 23:00:25.21:ZDfhcJz3r リストのイテレータ使って周期的な処理をしたいんだが、そういう使い方合ってる? N 要素のリストのイテレータ it = s.begin() を N 回インクリメントしたら、it はルート(?)を指すわけだが、そうじゃなくて s.begin() と同じところを指してほしい こういう場合、どうしたら良いだろうか : デフォルトの名無しさん (ワッチョイ 5b5b-F79V) [sage] 2018/10/25(木) 23:40:18.35:NT+vxu3F0 くるくる回るシングルリンクリストを自前でこしらえたほうが手っ取り早いと思うけど、 ttp://https://www.boost.org/doc/libs/1_65_1/doc/html/circular_buffer.html : デフォルトの名無しさん (ワッチョイ 1d80-SUE8) [] 2018/10/25(木) 23:59:33.84:ZWxqLT/20 スアホポインタみたいな頭ワルイの使うぐらなら C++なんかつかわなければいいのに 低学歴知恵遅れは新しいもんができると 使わないといけないという使命感があるらしい 低学歴知恵遅れは自分で要否が判断できない : デフォルトの名無しさん (ワッチョイ c9c3-d2wE) [sage] 2018/10/26(金) 00:05:29.09:q2UMXiCp0 そうだね痴呆おじいちゃんには7年前に標準化された最新機能は難しすぎるから仕方ないね 半角に限らず今でもウヨウヨいるからあんまり笑い事じゃないんだけど : デフォルトの名無しさん (ワッチョイ 1d80-SUE8) [] 2018/10/26(金) 00:08:04.60:7cGNdWT70 あんのが難しい? 知恵遅れは頭ワルイシロモノを使ってる自覚がないからな 低学歴知恵遅れはアレで難しいもん使ってるつもりでいんのか へー : デフォルトの名無しさん (オッペケ Srb5-H+Zc) [sage] 2018/10/26(金) 00:12:31.03:xVkfT4g2r それ参考にして自力で実装してみます ありがとうございます : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/26(金) 01:29:12.07:D2okE+fs0 あ、ほんまや。 ワイの記憶は C++03 時代のやつやった。 ムーブないからしゃーなしでコピー必要やったんやな。 : デフォルトの名無しさん (ワッチョイ 17b3-LdhF) [sage] 2018/10/26(金) 11:08:50.27:R8qtZuY20 うろ覚えでみたいなこと断言してたのかよ 自分の記憶を疑う癖つけた方がいいよマジで : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/26(金) 13:04:49.03:D2okE+fs0 いや、このサイトを見て確認はしたんだよ。 ttp://https://ja.cppreference.com/w/cpp/container/vector ただ、 「C++11 以前」という書き方になってたから、前後を見ずに C++11 は含むのだと思ったし、 (現在の最新ではないとはいえ) C++11 くらいには配慮すべきだろうなっていう前提で言ってたの。 でも、ちゃんと仕様を確認したら「C++11 以前」は C++11 を含まないことに気づいたって次第。 : デフォルトの名無しさん (ワッチョイ 17b3-LdhF) [sage] 2018/10/26(金) 14:50:04.44:R8qtZuY20 あー、確かにあれは紛らわしいかもね・・ でもすぐ近くに「C++11およびそれ以降」ってあるしな : デフォルトの名無しさん (ワッチョイ a161-o1DS) [sage] 2018/10/29(月) 12:48:55.53:oLCvh0eX0 Cとhaskellはどちらがどれくらい速いですか? : デフォルトの名無しさん (ワントンキン MM3b-uH1J) [sage] 2018/10/29(月) 12:50:29.22:cH/HmFkLM たらい回し関数でも作って遊んでろ : デフォルトの名無しさん (ワッチョイ a161-o1DS) [sage] 2018/10/29(月) 15:30:56.80:oLCvh0eX0 STLのリストは要素を挿入するごとにメモリーの割り当てが起こるのか一度に割り当てられている場所に なのかどちらですか? : デフォルトの名無しさん (ワッチョイ bfe0-wSaz) [sage] 2018/10/29(月) 17:02:30.38:AJZhbohO0 規格は要素ごとに割り当てるのを想定してるだろうけど 例えば10個分まとめて、みたいな実装もOKじゃないかな…… 挿入削除やイテレータの++がO(1)みたいな各種要件さえ満たしてれば : デフォルトの名無しさん (ワントンキン MM3b-uH1J) [sage] 2018/10/29(月) 18:06:21.97:cH/HmFkLM vectorならともかく、そんな実装するってメリットがあまり無い気が : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/29(月) 18:28:09.22:wGJRVi/I0 メモリのローカリティを維持できれば性能がよくなる可能性もあるんじゃね? : デフォルトの名無しさん (スップ Sd37-VFcb) [sage] 2018/10/29(月) 19:36:47.21:oZEcP9DNd メモリのアロケーションは意外にコスト高いからまとめてアロケートしておいて node を用意するときにそこから placement new とかして使ってゆくと高速になる リストのノードに限らず、プロファイル取って new が時間 食ってるときにオブジェクトについてはこれで簡易に改善できる 最近はデフォルトのアロケータが高性能で意味がないこともあるけど : デフォルトの名無しさん (スップ Sd37-VFcb) [sage] 2018/10/29(月) 19:40:02.85:oZEcP9DNd 続き 解放も一気にしないと面倒なので基本追加一方で不要になったら全部消すみたいな場合に使う 巨大 xml の dom を作って、不要になったら全解放みたいなとき。 : デフォルトの名無しさん (ワッチョイ 5bf6-JHIh) [sage] 2018/10/29(月) 22:12:03.67:88V2EdRw0 大きいデータだと何十万回、何百万回もnewしなくちゃいけないようなクラスは 1メガくらいまとめてnew [] したほうが絶対いい。 実行時間比較すればわかるけど、かなり高速になる。 : デフォルトの名無しさん (ワッチョイ 5315-7TBo) [sage] 2018/10/29(月) 22:12:56.73:JnF9Re6Y0 1メガくらいという根拠の薄いマジックナンバーに依存する糞コード : デフォルトの名無しさん (ワッチョイ 5bf6-JHIh) [sage] 2018/10/29(月) 22:36:16.47:88V2EdRw0 当然、実装するときは、まとめて確保するメモリ量は指定できるように作るのが当たり前。 いちいちそんなこと言わなくてもみんなわかると思って、例えば1メガという意図で「1メガくらい」 と書いたが、バカには伝わなかったみたいだな : デフォルトの名無しさん (ワッチョイ 5315-7TBo) [sage] 2018/10/29(月) 22:38:25.00:JnF9Re6Y0 で、1メガという定量的な根拠は? いくら罵倒しても自動的には出てこないぞ : デフォルトの名無しさん (ワッチョイ 3bcd-uH1J) [sage] 2018/10/29(月) 22:40:37.61:YGs2BWq10 パフォーマンスを求めるシーンでダブルリンクリストって : デフォルトの名無しさん (スップ Sd37-VFcb) [sage] 2018/10/30(火) 00:35:43.38:0KkuIlNzd ダブルかどうかは知らんが深さが不定の木構造なら仕方ない んでメモリ確保はn個まとめればアロケーションコストはほぼ1/nになるんで 10とか100で十分で別にそんなに増やす必要はない が、大量にアロケートするときしか使わない手法なので1000とか大きな数にするのが人の情 : デフォルトの名無しさん (ワッチョイ 4f8a-cZbQ) [sage] 2018/10/30(火) 09:09:19.02:/5i0cROz0 何百万回もnewする想定なのに1メガでいいの? : デフォルトの名無しさん (ワッチョイ f323-JHIh) [sage] 2018/10/30(火) 10:54:57.24:aDKxpfal0 まあnewするクラスのサイズによるだろ サイズが100バイトのクラスなら1メガでもnewの回数が一万分の1になるので効果はありそう : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/30(火) 11:32:05.07:/tj4m1Wy0 データ構造全体でどれくらいの大きさになるのか事前に見積もれればいいんだけどね。 ガチでチューニングしようと思ったら 各アプリケーションでのメモリの使い方の特性を考慮しなきゃならんし、 パラメータの微調整は実際にやって試してみるしかしょうがない。 : デフォルトの名無しさん (ワッチョイ f323-JHIh) [sage] 2018/10/30(火) 12:17:01.56:aDKxpfal0 >データ構造全体でどれくらいの大きさになるのか事前に見積もれればいいんだけどね。 そうだな 実行開始して何時間も待たされた挙句、メモリ不足でエラー終了とかマジ勘弁して欲しいわ 最初に使用メモリ量を予測してエラーにしてくれよ : デフォルトの名無しさん (ワンミングク MM1b-uH1J) [sage] 2018/10/30(火) 14:48:22.73:bp+Jjz8rM 今時はメモリエラーなんて出さずに延々確保しにいってスラッシングしまくるだけ : デフォルトの名無しさん (ワイーワ2 FF33-gZJR) [] 2018/10/30(火) 15:06:52.69:p4LrBCE7F キャッシュなんだから 2のn乗で適当な大きさ持ってれば大丈夫 : デフォルトの名無しさん (ワッチョイ c7eb-nLkq) [sage] 2018/10/30(火) 16:22:00.39:YIrhnuea0 2^N+αの方がいいぞ : デフォルトの名無しさん (ワッチョイ a3ef-7TBo) [sage] 2018/10/30(火) 21:01:00.62:Z4vjmLqM0 テキトーの用語の使い方を間違っているな : デフォルトの名無しさん (オイコラミネオ MM4b-x1Ry) [sage] 2018/10/31(水) 00:35:59.17:7q2lQPFCM 適当には適切という意味もあるんやで : デフォルトの名無しさん (ワッチョイ 7fb3-7TBo) [sage] 2018/10/31(水) 00:55:16.82:n3cdWN/k0 jemallocのデフォルトチャンクサイズは1MiBらしいな 経験的に悪くない数字なんだろう : デフォルトの名無しさん (ワッチョイ bbbd-x3RP) [sage] 2018/10/31(水) 00:55:23.06:2bLA79Ru0 一気解放テクというのはN億個のオブジェクトをフルスピードで作って10秒かかったとして、 破棄するときもバカ正直に10秒かけるつもりなのかとかそういう話だが オブジェクトがリソースを所有しておりデストラクトを要するブツだったりすると オブジェクトの占有メモリだけ一気に解放することはできないから成立しない というわけでコンパイラの中で構文解析結果であるところの木構造を破棄するのにお目にかかるぐらい なキモス : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo) [sage] 2018/10/31(水) 01:44:07.13:y5TVZzW10 ソースコードを読んだわけじゃないが、 ウェブサーバの H2O はドカンと大きいメモリを確保して頭から順番に使っていくという戦略を取ってるのでクソ速いというのを どこかで見た覚えがあるな。 ウェブサーバならセッションが基本単位と考えれば、 セッション開始時に大きいメモリを確保してセッション終了でまるっと捨てるというのは確かに理にかなった方針だと思う。 : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/31(水) 03:43:29.87:dHrKLKTO0 いやnewもdeleteもインプレイスでやるからメモリの確保と解放はまとめてできるんだ んでコンストラクタとデストラクタはどっちにせよ必要なので、メモリの確保と解放が問題なんだよ で、指摘の通り メンバ変数がまたメモリを確保/解放してるとご利益がぐっと薄れるので まとめて確保を使い始めるとベクターだなんだもショートストリング最適化みたいな 小サイズなら静的に確保したメモリを使うようなテクニックを使い始める。 LLVM の SmallVector やそれを基にした boost の smallvector なんかがそれか : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/31(水) 03:44:09.76:dHrKLKTO0 boost のは small_vector の typo : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/31(水) 05:48:21.49:dHrKLKTO0 まとめてアロケートするコードのテストコードを書いてみた 簡単なリストのアロケーションと解放 100個ずつと1000個ずつではだいぶ違った 1000を10000にしても大差ない ttp://https://ideone.com/oyIM5p : デフォルトの名無しさん (ワッチョイ 2723-VFcb) [sage] 2018/10/31(水) 07:57:39.93:dHrKLKTO0 上の例はリストのノードにstring を持たせているが、 これをvectorにするだけで高速化の倍率はひどく悪化する。 ttp://https://ideone.com/k6XiHK string は SSO(ショートストリング最適化)で小サイズならメモリのアロケートを行わないが、 vector はサイズ1でも必ずアロケートするため。 : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/31(水) 13:42:46.70:XAA9QXm2F vector禁止 : デフォルトの名無しさん (ワンミングク MM1b-uH1J) [sage] 2018/10/31(水) 15:36:31.08:wG8+54SGM よーしパパbitset使っちゃうぞ : デフォルトの名無しさん (ワッチョイ cb1b-ALmr) [sage] 2018/10/31(水) 17:52:51.32:HGEk6qvJ0 opencv(c++)で適当な画像をDCTしてDCT係数をテキストファイルにプログラムを教えていただけませんでしょうか。 画像をDCTするとこまでは分かったんですがそのあとが分からないです。 : デフォルトの名無しさん (ワッチョイ cb1b-ALmr) [sage] 2018/10/31(水) 17:53:54.59:HGEk6qvJ0 テキストファイルに表示するです : デフォルトの名無しさん (ワッチョイ 1f8a-3mJb) [sage] 2018/10/31(水) 18:14:35.77:N9TdgOC+0 日本語でOK : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/31(水) 18:23:30.41:XAA9QXm2F >適当な画像をDCTしてDCT係数をテキストファイルにプログラム 日本語で : デフォルトの名無しさん (ワッチョイ cb1b-ALmr) [sage] 2018/10/31(水) 18:28:26.25:HGEk6qvJ0 もう1回書きますがテキストファイルに書き出すです : デフォルトの名無しさん (アウウィフ FFb3-gZJR) [] 2018/10/31(水) 18:30:01.31:XAA9QXm2F ファイルに表示 : デフォルトの名無しさん (バッミングク MM1f-DBFP) [sage] 2018/10/31(水) 18:44:17.50:YG0rnI8eM OSが分からんが、一番楽チンであれこれ考えなくて良いのは普通にprintfしてファイルにリダイレクト。 : デフォルトの名無しさん (ワッチョイ cb1b-ALmr) [sage] 2018/10/31(水) 21:27:56.35:HGEk6qvJ0 windowsです : デフォルトの名無しさん (ワンミングク MM1b-uH1J) [sage] 2018/10/31(水) 22:31:25.44:wG8+54SGM dctは出来るのにストリームへの出力は出来ないのか : デフォルトの名無しさん (ワッチョイ 0beb-JHIh) [sage] 2018/10/31(水) 22:34:24.39:Cti468/q0 ofstreamでファイル開いて<<で出力 ascii文字だけなら文字コード気にしなくてもいい : デフォルトの名無しさん (ワッチョイ 971b-cEKd) [sage] 2018/11/01(木) 01:13:06.51:PigZrB5P0 DCT係数が配列に格納されているんですがそのすべてを書き出すのができないです : デフォルトの名無しさん (ワッチョイ a323-WkUi) [] 2018/11/01(木) 10:51:44.25:z733lC2q0 ttp://https://twitter.com/Campaign_Otaku/status/1057156200981135361/photo/1 空で字描ける人が着陸の仕方を「どうやるの」なんて疑問は出てくるはずがない。 「どういう風に降りようかな」って意味なら判る。 完全に誤訳 ttp://https://twitter.com/5chan_nel (5ch newer account) : デフォルトの名無しさん (スッップ Sdba-7j1p) [sage] 2018/11/01(木) 20:17:49.41:Pz4tYpgEd Mat 型の変数 m に入ってるなら std::cout << m; で標準出力に出るだろう 参考 ttp://http://opencv.jp/cookbook/opencv_mat.html : デフォルトの名無しさん (ワッチョイ 63b3-MyS3) [sage] 2018/11/01(木) 20:42:34.69:yQbjy7jF0 C言語は高校・大学の頃やったので大体わかります 今更ですがC++勉強するのに良い教材は何でしょうか? 本が良いですがもっと良い方法がありましたらそれでも良いです : デフォルトの名無しさん (スッップ Sdba-7j1p) [sage] 2018/11/01(木) 20:56:14.21:Pz4tYpgEd まずは「プログラミング言語 C++」を読んでみては? 高いから図書館で借りるといい : デフォルトの名無しさん (ワッチョイ 769f-zz8P) [sage] 2018/11/02(金) 00:38:53.71:YtkatxxE0 effective c++とか : デフォルトの名無しさん (ワッチョイ 3685-DqXg) [sage] 2018/11/02(金) 00:55:59.17:bpaiY9An0 C++ってnumpyみたいに2次元配列から範囲を指定して抜き出しとか出来ないですかね? 10, 20, 30, 40, 50 60, 70, 80, 90, 100 110, 120, 130, 140, 150 160, 170, 180, 190, 200 このようなvectorがあった際に 70, 80, 90 120, 130, 140 170, 180, 190 を抜き出したいです : デフォルトの名無しさん (ワッチョイ 5b80-Q1ft) [] 2018/11/02(金) 01:08:54.86:KoqyjIsr0 equal_rangeを使う : デフォルトの名無しさん (ワッチョイ 0723-7j1p) [sage] 2018/11/02(金) 01:34:41.33:T61e9sN/0 自分で書きたくないならあり物のライブラリ使えばいいのでは よく知らんけど opencv の Mat とか BLAS とか ttp://https://minus9d.hatenablog.com/entry/2014/03/21/114514 : デフォルトの名無しさん (オッペケ Srbb-V8Cv) [sage] 2018/11/02(金) 01:58:52.59:CMIkY+8nr boost の multi_array でできる かなり調べた結果これに行き着いたから、他のを見つけるのは至難の業だと思う : デフォルトの名無しさん (オッペケ Srbb-V8Cv) [sage] 2018/11/02(金) 02:00:44.27:CMIkY+8nr まぁ2次元配列に限るなら正直 vectorのvector でそういう動作するもの簡単に作れるよね : デフォルトの名無しさん (ワッチョイ 0723-7j1p) [sage] 2018/11/02(金) 04:22:50.02:T61e9sN/0 普通こういうものの部分行列はデータをコピーしないで動作するんだよ。用途によるけどだいたいは。 : デフォルトの名無しさん (ワッチョイ 63b3-URqd) [sage] 2018/11/02(金) 09:58:57.11:UBXHQBH/0 質問者に合ってると思うか? : デフォルトの名無しさん (ワッチョイ 9723-VEUj) [] 2018/11/02(金) 16:44:40.29:ggr9EF3w0 C++ から python も numpy も使える : デフォルトの名無しさん (ワッチョイ 9a76-MyS3) [sage] 2018/11/02(金) 21:55:06.47:yMnDBJfs0 vectorではなくvalarrayの使いどころだ : デフォルトの名無しさん (オッペケ Srbb-V8Cv) [sage] 2018/11/02(金) 22:55:21.07:lVpg8bJur valarrayじゃなきゃ駄目な場面なんて知らんがな : デフォルトの名無しさん (ワッチョイ 9a34-avGO) [sage] 2018/11/03(土) 00:31:38.77:ogvvzewS0 slice使える : デフォルトの名無しさん (ワッチョイ 5b80-Q1ft) [] 2018/11/04(日) 13:10:56.85:MKH8Qowh0 そもそも2次元の配列使う必要がない 1次元で十分 池沼はいちいちみため2次元にしたがる : デフォルトの名無しさん (アウアウカー Sac3-XPOZ) [] 2018/11/04(日) 15:35:15.29:NU/4ChKLa 20年前の本読んでも問題ないか? : デフォルトの名無しさん (ワッチョイ 0ef0-MyS3) [sage] 2018/11/04(日) 16:00:02.15:T2TFtaIb0 みため二次元ねえ int vec[][5] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 }; これで済むことを、 int& elm(int row, int col) { static int vec[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 }; return vec[row * 5][col]; } いちいちこう書くやつも充分に池沼なんだが そういうやつをちょっとプロファイリングしてみると 配列へのポインタに腹を立て、ポインタの配列にmallocして 強引に**で二次元を扱えることにするテクニックを某所で自慢したら タコ殴りにされて、すっかり心を病んでしまい 以後、二次元配列というワードで凶暴化するようになった、とかね : デフォルトの名無しさん (ワイーワ2 FF12-VEUj) [] 2018/11/04(日) 17:10:10.81:dwIn1XjHF tcl/tk なら枯れてるから大腿同じ : デフォルトの名無しさん (ワッチョイ 9abd-yxtD) [sage] 2018/11/04(日) 17:55:13.85:ntvnp4Zh0 ていうか(アドレスp)[x]は*(p+x)の別表記に過ぎないというのは規格上の話にすぎなくて、 実際問題としては一次元配列アクセスと二次元配列アクセスには最適化のかかり方次第でかなり速度差が生じるお 一次元配列にすると、概念上の次の行の要素への移動が加算1発で済むというのが喜ばしい これとループ最適化が組み合わさると、配列スキャンが主な仕事の処理は爆速になり得る といいつつ次の例はideoneでこそ一次元配列アクセスの方が遅いが(爆 Visual C++ 2010だと一次元配列は10倍超速いお ttp://https://ideone.com/K7uLo9 (VC++での結果) ******* Array 1D opt: ntimes=100000^2, sum=2372578304 Consumed time=0 sec ******* Array 2D: ntimes=100000^2, sum=2372578304 Consumed time=10 sec : デフォルトの名無しさん (エムゾネ FFba-VEUj) [] 2018/11/04(日) 18:13:58.07:rLQVzKFuF ttp://http://mimumimu.net/blog/2009/01/24/getmessage-%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%80%82/ : デフォルトの名無しさん (エムゾネ FFba-VEUj) [] 2018/11/04(日) 18:16:57.25:rLQVzKFuF C/C++で「二次元配列」と言った場合 char *hoge[N]; の方を指すのであって char **fuga; の方は決して「二次元配列」ではない Javaなら後者を指してるので これらが初心者には混乱の元 : デフォルトの名無しさん (エムゾネ FFba-VEUj) [] 2018/11/04(日) 18:17:36.23:rLQVzKFuF ごみん いきなり間違えた char *hoge[N]; じゃなくて char (*hoge)[N]; こうです : デフォルトの名無しさん (エムゾネ FFba-VEUj) [] 2018/11/04(日) 18:19:01.87:rLQVzKFuF 439 の言うばふぉーマンスは char **fuga; だから落ちるのであって char (*hoge)[N]; では落ちない : デフォルトの名無しさん (ワッチョイ 9abd-yxtD) [sage] 2018/11/04(日) 18:28:12.23:ntvnp4Zh0 ていうかのやつもよく調べたら1000倍近い速度差で一次元配列の方が早いお 今日日のCPUアーキテクチャーでよく見られるいつもの光景だお… (VC++でntimes = 百万の2乗にした結果) ******* Array 1D opt: ntimes=1000000^2, sum=2273652736 Consumed time=0 sec ******* Array 2D: ntimes=1000000^2, sum=2273652736 Consumed time=928 sec : デフォルトの名無しさん (ワッチョイ 9abd-yxtD) [sage] 2018/11/04(日) 18:30:20.30:ntvnp4Zh0 はジャグ配列と通常の二次元配列の区別も付いていないおむつも取れていない赤ん坊だお;; : デフォルトの名無しさん (ワッチョイ a323-cvuZ) [sage] 2018/11/04(日) 18:41:14.77:egw3UDrd0 VC++は2次元配列が苦手ってだけじゃない? 手元のgccとclangは最適化なし(-O0)だと1次元の方が少し遅くて最適化あり(-Ofast)だと1次元と2次元で計算部分は全く同じアセンブリになった : デフォルトの名無しさん (アウアウカー Sac3-U2lQ) [] 2018/11/04(日) 18:58:49.68:pidkuN2Fa 文法古くて生産性低いってだけで、コードは動くよ。 : デフォルトの名無しさん (ワッチョイ df8a-6RPj) [] 2018/11/07(水) 14:24:50.89:ldKnJvNa0 黙って行列ライブラリ使えよ : デフォルトの名無しさん (オッペケ Srbb-V8Cv) [sage] 2018/11/07(水) 15:48:05.24:fYDz1ZKKr いい質問があったら鬼のように加速するけど、そうじゃないときはかなり穏やかなんだな : デフォルトの名無しさん (ワッチョイ a323-VEUj) [] 2018/11/07(水) 15:52:57.02:IyZ6SaMg0 話題毎にスレ移動してる遊牧流民族 : デフォルトの名無しさん (ワンミングク MMd3-BVTb) [sage] 2018/11/08(木) 19:45:44.59:Zz75hCICM おいEffectiveC++がいつの間にかオライリーになって高価くなってるじゃねぇか 誕生日におばあちゃんにもらった図書カードでも買えないぜ : デフォルトの名無しさん (ブーイモ MMab-OD9P) [sage] 2018/11/08(木) 22:34:24.42:6GweSoQWM 毎日少しずつスマホで撮影 : デフォルトの名無しさん (ワッチョイ b3eb-CaRP) [sage] 2018/11/09(金) 00:41:56.16:mEWiZt760 中古で2版かった : デフォルトの名無しさん (ワッチョイ 5b6f-ki2E) [sage] 2018/11/09(金) 00:45:44.84:yH/J6wNO0 オライリーが不要な人 「オラ、要りません」 : デフォルトの名無しさん (ワッチョイ 9334-z2Fd) [sage] 2018/11/09(金) 03:59:09.39:NPFxlpZr0 Arduinoの教本は安くなってた気がする : デフォルトの名無しさん (ブーイモ MMb9-NrKH) [] 2018/11/15(木) 19:31:27.51:u78hdNWAM おまいはNGな(´・ω・`) : デフォルトの名無しさん (ワッチョイ 7ae9-pq0H) [sage] 2018/11/21(水) 14:25:07.64:2bTou3MI0 Javaが来年頭から死亡展開になるの今日知った C++はやっぱ平和だな ところでみんなはC++で何を作ってるの? : デフォルトの名無しさん (ワッチョイ 1aeb-HiLI) [sage] 2018/11/21(水) 14:26:25.56:eXoP5Hir0 ゲーム : デフォルトの名無しさん (ワッチョイ 7ae9-pq0H) [sage] 2018/11/21(水) 14:38:58.30:2bTou3MI0 了解ありがとう : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fe6f-maOp) [sage] 2018/11/21(水) 15:00:42.00:5XDVWHjZ0 Java は無償サポートが薄くなったってだけで、 使うだけなら特に制限が強くなるわけではない。 そんなにサポート利用してたか? : デフォルトの名無しさん (ワッチョイ 7ae9-pq0H) [sage] 2018/11/21(水) 16:15:38.69:2bTou3MI0 使うだけならね Androidの商業開発は痛いよ googleがdart言語を着々と開発をしてるのはこれを避ける為だったと : デフォルトの名無しさん (ワントンキン MM5a-c6U1) [sage] 2018/11/21(水) 21:52:05.40:hmzhTBXoM 何を自演してるの? : デフォルトの名無しさん (ワッチョイ ca34-YK5h) [sage] 2018/11/21(水) 22:09:59.66:0eUwt8A90 C++を長年使ってきた身としてはようやくJAVAとかいうゴミが一掃されてまさしく自らガーベッジコレクト自爆してくれて清々する : デフォルトの名無しさん (ワッチョイ 86eb-4fLB) [sage] 2018/11/21(水) 22:29:03.89:rlO03g2l0 聳え立てた糞の山を保守するために生き残り続けるよ・・・ : デフォルトの名無しさん (ワッチョイ f3c3-9Nj+) [sage] 2018/11/22(木) 07:07:56.56:ykkp0iR40 Javaが出てきた頃はまさかこんなCOBOL並の糞山生産言語に成り果てるとは思わなかったな 悲しいなあ : デフォルトの名無しさん (ワイーワ2 FFdf-OXRW) [] 2018/11/22(木) 12:42:34.39:blyr971hF ほんそれ : デフォルトの名無しさん (ワイーワ2 FFdf-OXRW) [] 2018/11/22(木) 12:42:56.61:blyr971hF 当初から言われてたぞ : デフォルトの名無しさん (ワッチョイ cfa5-L5v9) [] 2018/11/22(木) 17:56:25.68:RROqQEmy0 test : デフォルトの名無しさん (ワッチョイ cf30-zhOP) [sage] 2018/11/22(木) 19:19:12.39:FdxQ3S5p0 スマートポインタってガベージコレクションではないの? : デフォルトの名無しさん (ワンミングク MM9f-Ymbk) [sage] 2018/11/22(木) 19:30:02.59:3Ij8+ioXM 違います : デフォルトの名無しさん (ワッチョイ ff23-Th1j) [sage] 2018/11/22(木) 19:37:13.80:3NeFI3xN0 ガベージが発生しないもんな : デフォルトの名無しさん (ワッチョイ ff12-1YVs) [sage] 2018/11/23(金) 09:57:38.38:xUgPEkHQ0 ガベージか非ガベージか、どうやって見分けるの? 見分けられないなら逆説的にガベージはない 全部データと言える すると言う通りにガベージは発生しない : デフォルトの名無しさん (ワッチョイ 537b-/G1A) [sage] 2018/11/23(金) 11:48:27.57:nZV4GP9h0 どっちも参照カウンタが0になった瞬間はガベージと言えないこともないが、スマートポインタだとその場で即削除される。 ガベージコレクションは参照カウンタが0になったメモリをメモリアロケータが適当なタイミングで削除する。 : デフォルトの名無しさん (スッップ Sd1f-Th1j) [sage] 2018/11/23(金) 11:53:50.43:/6hb/Gdud 自分の中で結論出してるみたいだから説明したくないなあ スマートポインタはリファレンス(参照)がなくなったときにメモリやオブジェクトを解放する。 ガベージ(参照不能なオブジェクトやメモリ)がどこかに溜まって、 いつかのタイミングでそれらをコレクトするような動作はしない。 スコープを抜けるときにスタックフレーム上のオブジェクトが破棄されるのと同様。 異論はいくらでもどうぞ : デフォルトの名無しさん (ワッチョイ 7323-Th1j) [sage] 2018/11/23(金) 11:57:18.90:D5DlZHs/0 書いてて思ったけどスタックという仕組みは素晴らしいハックだよね : デフォルトの名無しさん (ワッチョイ f3c3-9Nj+) [sage] 2018/11/23(金) 13:11:50.55:QYpEy3WT0 「部屋を最後に出る奴は電灯消せよ」がスマポ(std::shared_ptr) 電灯付けっぱで誰もいない部屋を探して消し回るおばちゃんがGC C++にはそういうおばちゃんはいない : デフォルトの名無しさん (ワッチョイ 83b3-4vBw) [sage] 2018/11/23(金) 13:17:17.72:l4mTlUt60 面白い表現だね。 いつかパクらしてもらおう。 : デフォルトの名無しさん (ワッチョイ cf30-zhOP) [sage] 2018/11/23(金) 13:21:17.14:00BNAcCe0 うむ。わかりやすいw : デフォルトの名無しさん (オイコラミネオ MM87-orwD) [sage] 2018/11/23(金) 13:35:53.07:WmoXs2+nM スマポって何に使うん? 趣味グラマーだけど使ったことない cv::Matとかに使われてるだけで個人では使わないようなものなの? : デフォルトの名無しさん (アウウィフ FF27-OXRW) [] 2018/11/23(金) 13:44:09.05:e4GZHgy/F 生ポを上手に使えない人が使えばいい 自信があれば無くてもOK : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/23(金) 13:53:48.42:o3+kYr4A0 可能なら生ポインタは避けるのが良い作法。 単純に、 delete を書くのめんどいから勝手にやってくれた方がよくね? そりゃあ場合によっては生ポインタが必要な箇所もあるだろうけど、 スマートポインタは高度なライブラリ内だけでしか使われないってほど特殊なもんではない。 ポインタ型のデータメンバを持つクラスのコンストラクタで 発生した例外を function try block で捕捉して後始末をするよりは スマートポインタを使った方が勝手に解放してくれて楽というのもある。 例外が絡むと本当にめんどいし、思考停止したい。 : デフォルトの名無しさん (ワッチョイ 7f60-4xdr) [sage] 2018/11/23(金) 14:17:24.18:e/BZMkzC0 参照カウントはガページコレクタの一つでは? ttp://https://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88 : デフォルトの名無しさん (ブーイモ MMe7-XNyg) [sage] 2018/11/23(金) 14:36:29.45:D8he5SEKM 参照カウントがGCの実装アルゴリズムとして使われることがあるというだけで、スマポがGCと言ってるわけではないよ。 だいたいガイジンにとってガベージコレクションといえば↓コレなんだから、広範に収集しないスマポをGCと呼ぶのはすごい違和感。 ttp://https://money.usnews.com/careers/best-jobs/garbage-collector : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/23(金) 14:46:07.98:o3+kYr4A0 スマポが GC かっていうのはちょくちょく話題になるね。 私自身は std::shared_ptr はガベジコレクタの一種だと考える派って話は前スレにも書いた。 ttps://mevius.5ch.net/test/read.cgi/tech/1535353320/303 "> ttps://mevius.5ch.net/test/read.cgi/tech/1535353320/303 考え方によるので定義を定める必要はないとも思ってるけどね。 : デフォルトの名無しさん (オッペケ Sr47-4X35) [sage] 2018/11/23(金) 14:46:51.54:i3QERm52r すげー分かりやすいw : デフォルトの名無しさん (オッペケ Sr47-4X35) [sage] 2018/11/23(金) 14:52:59.28:i3QERm52r はちみつさんは女の人だったんだ : デフォルトの名無しさん (ワッチョイ cf30-zhOP) [sage] 2018/11/23(金) 19:35:02.76:00BNAcCe0 C++で電気を消して回るおばちゃん作れないの? : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 83b3-D/ja) [sage] 2018/11/23(金) 19:39:11.60:tufcyCUn0 作れるよ。C++でガベージコレクタを実装した言語を。 : デフォルトの名無しさん (ワッチョイ 53ea-zhOP) [sage] 2018/11/23(金) 21:53:31.89:qlpWVHw40 変な質問ですみません。 C++をBetterCとして使いたいのですが、C言語が分かる前提で、おすすめの書籍などないでしょうか? コーディング規約ではないですが、その書籍に書いてあることまでは使っていいような形にしたいのですが。 : デフォルトの名無しさん (オッペケ Sr47-UZ88) [sage] 2018/11/23(金) 23:04:28.25:LRYgqZxfr vectorなども禁止したいのであれば、ない : デフォルトの名無しさん (ワッチョイ f3c3-9Nj+) [sage] 2018/11/23(金) 23:47:03.05:QYpEy3WT0 なんでC++をC++として使わないのか、使いたくないのか、使う度胸もないのか まずそこをはっきりさせよう : デフォルトの名無しさん (ワッチョイ ff34-MrEw) [sage] 2018/11/24(土) 00:07:45.09:V6N696Kv0 ベターCなんぞというあまっちょろい考えのヤツはC++道破門だ そんなあまっちょろい考えだからJAVA上がりのようなデストラクタもろくに使いこなせない小わっぱだらけになるのじゃ : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 01:07:38.96:yk09TxVj0 C++ を Better C として使ってもよいというのは設計者自身も言ってる。 だけど、あくまでも、 C をわかっている人が完全には C++ を理解できなくとも わかる範囲で C++ を実務をに使いながら C++ への理解を深めていける (より高度な C++ 使いになることを目指す) という前提付きだ。 C から C++ への段階的な以降がスムーズに出来るという話であって、 のように C++ の固定されたサブセットを Better C として使うのはちょっと違う。 強いて言えば Embedded C++ とかいった規格の提案もあったけどさぁ、 ttp://https://ja.wikipedia.org/wiki/Embedded_C%2B%2B 企画倒れに終わったので書籍とかはあんまりないと思う。 : デフォルトの名無しさん (ブーイモ MMe7-LZ6j) [sage] 2018/11/24(土) 01:16:38.96:tc+IepjYM c++をc++として使ってる人っていったい何作ってんの? ゲーム? でもゲームってAAAクラスだと未だに例外なしで作ったりしてんでしょ : デフォルトの名無しさん (スップ Sd1f-xGPl) [] 2018/11/24(土) 08:17:49.70:WC34mdadd ゲームは例外ダメだったりC++03だったりしたけど 今はだいぶ現代的なC++になってきてるよ : デフォルトの名無しさん (ワッチョイ 434e-GbSM) [sage] 2018/11/24(土) 08:30:31.18:qVCgFVzS0 ミサイルの射程距離の計算 : デフォルトの名無しさん (ワッチョイ 5305-04Xy) [] 2018/11/24(土) 08:45:19.63:sJe2ncgH0 shared_ptrがGCと似た仕組みで動いている場合があるからといって、 shared_ptrがGCの一種であるというのはちょっと飛躍してない? : デフォルトの名無しさん (ワッチョイ e3f2-/G1A) [sage] 2018/11/24(土) 09:04:42.05:3CbvFbkZ0 C89以上C99未満のBetterCという意味ならわからんでもないが、その場合 参考にするのはやっぱりC89の本だろうな。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 10:04:19.96:yk09TxVj0 メカニズムは GC だから GC であるという単純な主張だよ。 似ているんじゃなくてそのものだと言ってる。 前スレで QZ 氏が書いている言語との関係性、抽象化の仕方による区別にも説得力を認めてはいるけど、 一般的に GC 付きで実装される言語のほとんどでは意味論としては GC を要求しているわけではなく、 「オブジェクトの寿命を無期限にする」という要求があって、それをある程度実現するために GC が 使われているに過ぎないということを考えれば言語側の意味論とメカニズムは切り離す方が自然で、 メカニズムが GC ならそれは GC だというのが私の考える理屈。 : デフォルトの名無しさん (ワッチョイ e3b3-aItx) [sage] 2018/11/24(土) 11:54:49.92:FpJ57Whd0 そういう選民思想的な考え方はいかがなものかと思うけどね 実際C++をCのような低レベル部分も含めてちゃんと理解し テンプレートを使った総称的プログラミングまで使いこなし、最新のライブラリも使いこなすのに どれだけの学習コストがかかるか 世の中ははちみつみたいなヒマ人ばっかじゃないんだよ? 俺スゲーと言いたいがためにC++の普及を妨げるな : デフォルトの名無しさん (アウアウカー Sa87-ZX3B) [] 2018/11/24(土) 12:10:10.43:1C+vWWG1a 案外C++入門書ってCと同じ文字列は文字型の配列とか、そう言うところから入っちゃうから、 文字列はstring型、配列の代わりにvector型とかが入門の時点で説明されてるのって案外少ない。 ストラウストラップのプログラミング入門 とかどうよ? そうじゃなくて、文字列や配列はCと同じの使いたいなら、適当な入門書から使えそうなの抜き出せば良い。 : デフォルトの名無しさん (ワッチョイ e3b3-aItx) [sage] 2018/11/24(土) 12:19:21.49:FpJ57Whd0 あ、にはオブジェクト指向プログラミングも追加しとく : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 14:44:00.89:yk09TxVj0 隅々まで使いこなせと言ってるわけじゃない。 フルセットの C++ を自分なりに使えよと言ってるのであって、 その根拠として、一定の形に定まった C++ のサブセットという試みは ろくでもない結果に終わったという事実を紹介してるだけだ。 : デフォルトの名無しさん (ワイーワ2 FFdf-OXRW) [] 2018/11/24(土) 14:45:16.71:4kdGLnPdF 初心者や C++ しか知らない人が C++ を Better than C として使うことは不可能に近い C も C++ も知ってて C++ を敢えて C として使うことが出来る人だけが Better than C として使える : デフォルトの名無しさん (ワッチョイ f3c3-9Nj+) [sage] 2018/11/24(土) 14:54:34.26:LPhqEBYf0 Cで書くならちゃんとCとしてCの範疇で規格に沿って書けと思うけどな 準拠先はC89でもC99でもC11でもいいけどさ なんで異言語(C++)を中途半端に混ぜようとするの? : デフォルトの名無しさん (ワイーワ2 FFdf-OXRW) [] 2018/11/24(土) 15:10:55.48:4kdGLnPdF そういうときは拡張子 .c にする : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 15:13:10.06:yk09TxVj0 D&E では、 C から C++ への段階的な移行が出来ることを 意図して C++ を設計した (Better C として使える) ということが書いてあって、 確かに私も C を知らなかったら C++ はまともに使えなかっただろうなと思う。 でも、 C の延長線上で C++ の便利な機能を使ったプログラムって どこまで C++ の機能を取り入れても「C++ 的なプログラム」ではないなとも思う。 C++ を (綺麗に) 使うなら C++ を前提とした設計が必要なので、 Better C として使うことを積極的には勧めにくいという気持ちもある。 欲しいのが「C++」ではなく「考え方は C っぽいけどもうちょっと高級なやつ」ならば Go あたりを考えてもいいんじゃないかな。 : デフォルトの名無しさん (ワイーワ2 FFdf-OXRW) [] 2018/11/24(土) 15:17:05.59:4kdGLnPdF Dが過疎ってるしな : デフォルトの名無しさん (アウアウウー Sa27-lBDN) [sage] 2018/11/24(土) 15:40:53.59:HpxmFCOFa D++が出来るんじゃない? : デフォルトの名無しさん (ワッチョイ cf3f-zhOP) [sage] 2018/11/24(土) 16:54:40.98:27muaU+t0 ∧_,, (#゚;;-゚)++ /;; ;;っ 〜;; ;; ノ (/"'J : デフォルトの名無しさん (ラクッペ MMc7-GbSM) [sage] 2018/11/24(土) 17:12:59.04:A/C05uoVM C言語を知らなかったら、C++が書けないのはありえない : デフォルトの名無しさん (ワッチョイ cf30-zhOP) [sage] 2018/11/24(土) 17:15:34.96:oBJLSqih0 入門書の初っ端にcin,coutを多用しておきながら、C言語から段階的に移行出来るとか寝言は寝て言えって感じやなw それでいてoperatorの説明は最後の方とか。大人しくprintfとscanfにしとけや。 : デフォルトの名無しさん (ワントンキン MM9f-Ymbk) [sage] 2018/11/24(土) 17:19:16.90:0+zZ0hnRM まだBetterCがどうとかいってるのか 何十年前だよ 普通にC++を使えよ : デフォルトの名無しさん (ワッチョイ 83b3-4vBw) [sage] 2018/11/24(土) 17:30:37.66:aTKLem3I0 否定が多すぎて読み取りにくい。 「C言語を知らなかったら、C++が書けないのはありえない」→「C言語を知らなかったら、C++が書ける」→「C++ を書けなかったらC言語を知っている」 : デフォルトの名無しさん (ワッチョイ 83b3-A3/R) [] 2018/11/24(土) 18:10:05.30:sj/p1kLr0 禿げは預言者に過ぎず、C++を授けたのは神なのでは。 : デフォルトの名無しさん (ワッチョイ e3b3-zhOP) [sage] 2018/11/24(土) 18:47:29.20:F/l20HKb0 お前D&E読んでるならEmbedded C++の話はまた別だと知ってるはずだが EC++はC++の方言を作ろうとしたのが失敗したんであって 「そんなもん使うくらいなら、職場やらプロジェクトでC++の一部の機能に限定して使え」と 禿も言ってたろうが 質問者の質問無視して何押し付けてんの?何様だよ 言語の使い道を決めるのはお前じゃない : デフォルトの名無しさん (ワッチョイ cf3f-zhOP) [sage] 2018/11/24(土) 19:00:59.66:27muaU+t0 --no-exceptions --no-rtti これで充分だね : デフォルトの名無しさん (ワッチョイ 83b3-A3/R) [] 2018/11/24(土) 19:18:10.31:sj/p1kLr0 C++はマングリガエシがどうのこうのって話を聞いたことがあるな。 : デフォルトの名無しさん (ワッチョイ cfeb-Kv/S) [sage] 2018/11/24(土) 20:22:24.24:8ycC8usL0 全部extern "C"{}の中に書くかw : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 20:28:56.70:yk09TxVj0 ん〜、俺の言ってることが伝わってないな。 「自分なり」の、つまりは各プロジェクト、各チームの事情に合わせて (制限して) 使うべきで、 どっかからよくわからん「固定されたサブセット」を引っ張ってくるのはクソって話だから、 あなたの言うそのままのことを俺は言ってるつもり。 : デフォルトの名無しさん (ワッチョイ e3b3-zhOP) [sage] 2018/11/24(土) 20:51:25.26:F/l20HKb0 いやいやお前の言い分の方がわからんよ だったらの言う使い方で文句ないだろ : デフォルトの名無しさん (ワッチョイ e3b3-zhOP) [sage] 2018/11/24(土) 20:52:49.16:F/l20HKb0 今後ともC++を覚える気は無い、なんてどこにも書いてなかったしな (さすがにそれだったら俺も「Cでええやろ」と思うけど) : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-zhOP) [sage] 2018/11/24(土) 22:01:12.79:yk09TxVj0 事情に配慮せずそこらへんの書籍を適用したって上手いこといかんという単純な話じゃないの。 : デフォルトの名無しさん (ブーイモ MM1f-LZ6j) [sage] 2018/11/24(土) 23:33:07.16:MFu7deOdM へー、そんな仕事やってんだ どこの会社か興味あるけど まぁそれはさておきc++である必要性って何なの? : デフォルトの名無しさん (ワッチョイ c380-1YVs) [] 2018/11/24(土) 23:37:53.13:or35NFsF0 C++ではいろんなもんが作られてる クリティカルなシロモノでスクリプトが使われることなんか滅多にない : デフォルトの名無しさん (ワッチョイ ff12-1YVs) [sage] 2018/11/25(日) 00:13:09.35:zFZWesGa0 要するに本を口実にして人間の能力を制限したいってことでしょう ンなモンC++の理念には全く反してるんじゃあないスかね そいつの能力の限界まで迫れなきゃあC++を使う意味なんてないよ 会社の教育目的なんだろうけど「本に書いてあること以上はするな」ってのは 公教育の理念に縛られたクズが言いそうなこと 他人の能力にストッパー掛けて制限したいための口実に過ぎない だからBetter Cとかは全く関係ない ただ単に目的は「そいつの能力を制限したい」 これだけ : デフォルトの名無しさん (ワッチョイ ff12-1YVs) [sage] 2018/11/25(日) 00:21:47.13:zFZWesGa0 だからの思想は教育に名を借りた能力制限だよ 敗戦国の植民地でよくよく見られる思想だ ハッキリ言えば危険思想、撲滅した方がいい : デフォルトの名無しさん (ワッチョイ e3b3-zhOP) [sage] 2018/11/25(日) 00:55:56.60:/03oe8m30 こういう中二病みたいなやつ増えたな こういうのに限って一度もまともなソフト書き上げてない : デフォルトの名無しさん (ワッチョイ 83b3-A3/R) [] 2018/11/25(日) 01:11:41.31:0mYB5fkb0 リファクタリングすると重いソフトになる。 何故なのか。 : デフォルトの名無しさん (ワッチョイ 53ea-zhOP) [sage] 2018/11/25(日) 03:06:29.17:dzula6mP0 >489みたいなのは、よくあることだろう? 大抵はコーディング規約で、なんらか制限したりとかしていると思うけど。 そもそもC++を使えるプログラマが、そんなにいるとは思えない。 EffectiveC++を知らない(”読んでない”でなく)プログラマも数多くいる。 チーム全員がと言うことになると、一番下の人に合わせることになるだろう。 : デフォルトの名無しさん (ワッチョイ cf80-fhi1) [sage] 2018/11/25(日) 04:44:35.38:bdma9Nzw0 1. 入門書 2. Effective 何々 3. 逆引き・レシピ本 4. メタプログラミング どの言語でも、この順番。 3まで読んで、そこからプロ! 1だけの開発者は、素人だろw : デフォルトの名無しさん (ワッチョイ 83b3-BCID) [sage] 2018/11/25(日) 05:21:48.71:0mYB5fkb0 高橋マナ著やさしいC++。 : デフォルトの名無しさん (ワッチョイ cf81-GWSg) [sage] 2018/11/25(日) 07:41:16.76:tOsyjBp30 C++ boost.asioについて質問です。 boost::asio::ip::tcp::acceptorのasync_acceptはスレッドセーフ? サーバーを実装するとき1ポートで1acceptorになるはずだけど このacceptorは複数のスレッドからasync_acceptしても大丈夫? 一つのacceptorを複数のスレッドでacceptするのはパフォーマンスの観点からも良いですか? : 679 (アウアウカー Sa87-ZX3B) [] 2018/11/25(日) 08:03:57.75:ae+bi37xa ポイントカードやクレジットカードのデータを読み込んで表示させるプログラム自作する営業がいる一方で、 プログラマーとして入って何も出来ない奴もいる。 (こう言うのは早々に消えるが) 実力じゃなくて、何が主な収入かでプログラマーと言われてる所はある。 まあ、あれはプログラマーが外人で、都合の悪い事は認めないから証拠集めに仕方なく覚えたスキルってのもあったかもだけど。 : デフォルトの名無しさん (ワッチョイ 239d-A3/R) [] 2018/11/25(日) 09:47:53.23:2raeFUr40 スレッドセーフかどうかなんて簡単に調べられるんじゃない? セーフかどうか調べる方法がわからんの? 先ずはその調べる方法を確立したほうが いいんではない? : デフォルトの名無しさん (ワッチョイ e3f2-/G1A) [sage] 2018/11/25(日) 10:03:03.47:x3zl9kFB0 そんなものあるのか : デフォルトの名無しさん (ワッチョイ cfeb-Kv/S) [sage] 2018/11/25(日) 10:55:12.29:muUUE+vN0 ttp://https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/reference/ip__tcp/acceptor.html#boost_asio.reference.ip__tcp.acceptor.thread_safety 共有オブジェクトはスレッドセーフではない様子 : デフォルトの名無しさん (ワッチョイ ffb3-I6zH) [sage] 2018/11/25(日) 11:08:44.99:RzG0cEVO0 それアホなリファクタリングしてるだけだろ w : デフォルトの名無しさん (ラクッペ MMc7-GbSM) [sage] 2018/11/25(日) 15:23:23.22:kV357oGtM OOPをやりたいんですけど、C++やったことありません Smalltalkを勉強したほうがいいですか? : デフォルトの名無しさん (ワッチョイ cf3f-zhOP) [sage] 2018/11/25(日) 16:02:56.45:FjBIbaie0 そういうアプローチもあるだろうね 求めるものがサイエンスなのかテクノロジーなのかで 選んだらいい : デフォルトの名無しさん (ワッチョイ cf81-GWSg) [] 2018/11/25(日) 17:20:24.93:tOsyjBp30 ありがとうございます。 勉強します。 : デフォルトの名無しさん (アウアウウー Sa47-+RRK) [sage] 2018/12/04(火) 20:28:11.90:/xOJWoqIa メンバ関数の末尾に&や&&がつくのって何か意味があるのですか? constやnoexcept、volatileはわかるのですが・・・ : デフォルトの名無しさん (ワッチョイ 8a7e-C0zt) [sage] 2018/12/04(火) 20:36:07.22:JesHgwEq0 これのことか? ttp://https://cpprefjp.github.io/lang/cpp11/ref_qualifier_for_this.html おそらくほとんどの人が知らないだろうし俺も使ったことがない : デフォルトの名無しさん (ワッチョイ 4eeb-o5Pc) [sage] 2018/12/04(火) 20:57:45.56:17CDnqE60 代入演算子に左辺値参照修飾しとくと、右辺値に代入できなくなったりする 他はなんかあるかな・・・ : デフォルトの名無しさん (アウアウウー Sa47-+RRK) [sage] 2018/12/04(火) 21:58:17.69:/xOJWoqIa C++11で追加だったのね。ありがとうこざいます。 : デフォルトの名無しさん (ワッチョイ 1a23-GcNG) [sage] 2018/12/05(水) 00:32:10.11:IHVRryeE0 ttp://https://kagasu.hatenablog.com/entry/2017/05/02/120156 このページで、例えば ifs.imbue(locale(locale::empty(), new codecvt_utf16<wchar_t, 0x10ffff, consume_header>)); というのがあって、locale()の第二引数でnewされたものがありますが、 これをdeleteする記述が見当たりません。 他のページでも同様です。 リークしてそうで怖いのですが、一体どこでdeleteされてるんでしょうか?? : デフォルトの名無しさん (ワッチョイ 4eeb-o5Pc) [sage] 2018/12/05(水) 01:09:33.49:TcB8ybQf0 参照カウント方式で管理されてて、デストラクタでdeleteされます : 546 (ワッチョイ 1a23-GcNG) [sage] 2018/12/05(水) 01:12:09.10:IHVRryeE0 素晴らしい! RAIIですね。 安心しました。 ありがとうございました! : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 18:46:56.03:ASlfAML90 普通にどうプログラムを書いていいのかわらないので 質問したいのですがよろしいですか? すれ違いならすいません : デフォルトの名無しさん (ワッチョイ 1723-C97y) [] 2018/12/05(水) 18:51:05.82:kX9gokKe0 書いてみ : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 19:04:59.96:ASlfAML90 図1 000 000 000 図1の0の部分を0から9までのすべての数字に置き換えたものを 表示して変数に格納する 図では3X3にしましたがnXnだとしてください。 説明が下手かもしれませんがよろしくお願いします : デフォルトの名無しさん (ワッチョイ 1723-C97y) [] 2018/12/05(水) 19:17:46.46:kX9gokKe0 0から9までのすべての数字は10個あるが 場所は9個しかないがどうするの : デフォルトの名無しさん (アウアウウー Sa47-+RRK) [] 2018/12/05(水) 19:19:02.10:A1G7ulzba 表示も必要? : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 19:34:26.69:ASlfAML90 説明が下手ですいません 236 000 011 こんな感じで9か所すべてに0から9まで入ったものを全パターン格納したいです : デフォルトの名無しさん (ワッチョイ 237f-C0zt) [] 2018/12/05(水) 19:44:08.41:3dIXAL6A0 変数に全パターン格納するのは死ぬほどメモリ食うな : デフォルトの名無しさん (ワントンキン MM8a-y+3m) [sage] 2018/12/05(水) 19:51:44.72:SKoNUOBmM 294 753 618 : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 19:55:45.26:ASlfAML90 .csvにして出力したいので excelで手打ちするよりはいいのかなと : デフォルトの名無しさん (ブーイモ MM67-ZETi) [sage] 2018/12/05(水) 20:42:06.10:GtowYFeTM たぶん、20GBほど必要だけどいいんか? 全パターンにこだわらず、乱数で必要な数だけ生成したほうが良いのでは? : デフォルトの名無しさん (ブーイモ MM67-ZETi) [sage] 2018/12/05(水) 20:46:39.65:GtowYFeTM おっとinodeの最小サイズがあるから100倍くらいかしら : デフォルトの名無しさん (ワッチョイ 0bb3-Gcmv) [sage] 2018/12/05(水) 21:02:47.61:OZlj6GiF0 それは3*3を1次元で考えると 0 0 0 0 0 0 0 0 0 から1ずつ増やして 9 9 9 9 9 9 9 9 9 まで表示して全パターンを変数に格納ってこと? 単純に1桁1バイトで考えると1パターンにつき9桁9バイト必要なので、格納領域だけで9000000000バイト=約8.4ギビバイト必要なんだけどそういうこと? 1000パターン/秒の速度で表示したとしても104日かかる計算になる。 課題か何か知らないけど、問題を勘違いしてるのでは? : デフォルトの名無しさん (ワッチョイ 1a61-2OVW) [] 2018/12/05(水) 21:04:45.27:zPVAi42/0 0からN×N桁の 10進数 : デフォルトの名無しさん (ワッチョイ 0bb3-hzet) [] 2018/12/05(水) 21:04:58.31:RkaIFTNe0 3*3だったら要素数9の配列を用意してループで回せばいいだけじゃないの? : デフォルトの名無しさん (ワッチョイ 1a12-y69T) [sage] 2018/12/05(水) 21:12:05.38:8vnwU0Eo0 9!≒36万行のcsvが欲しいのか? 4x4だと16通りで16!=20?922?789?888?000 おおよそ21京行のcsvファイルが出来上がる 5x5だとwikipediaにもoeisにも載ってないが 15,5112,1004,3330,9859,8400,0000 らしいので 15.5穣行のcsvファイルが出来上がる Yが一歩手前の??なんで、世界中の記憶媒体を寄せ集めても足りるかどうか・・・ 6x6だと36!の 37,1993,3267,8990,1217,4679,9944,8150,8352,0000,0000 37正 csvファイルを作り終える前に人類滅亡するレヴェル : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 21:19:06.30:ASlfAML90 実際に必要なのは160万通りぐらいだけど無理? 無理なら諦めます : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 0bb3-ReFT) [sage] 2018/12/05(水) 21:23:57.37:wa0lRPZw0 全ての場合分けを検討できないから、枝刈りしようよ。 : デフォルトの名無しさん (ワッチョイ dbe7-hzet) [] 2018/12/05(水) 21:25:59.07:ASlfAML90 すいません諦めます ありがとうございました : デフォルトの名無しさん (ワッチョイ 0bb3-hzet) [] 2018/12/05(水) 22:03:07.79:RkaIFTNe0 諦めたらそこで終了だよ!!! : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 0bb3-ReFT) [sage] 2018/12/05(水) 22:07:49.82:wa0lRPZw0 糸冬 了 : デフォルトの名無しさん (ワッチョイ 5a23-+RRK) [sage] 2018/12/05(水) 22:08:02.64:u9wJX+Xt0 全パターン網羅じゃなくてピックアップでいいなら乱数という手段もありでは : デフォルトの名無しさん (ワッチョイ 0bb3-hzet) [] 2018/12/05(水) 22:14:00.75:RkaIFTNe0 蟻ちゃん、なに終わらせてんのさ。 : デフォルトの名無しさん (アウアウウー Sa47-6Zjp) [sage] 2018/12/05(水) 22:59:00.47:9Lrh1TK3a 乗り遅れた… 鏡像とか回転の扱いをどうするかとか 楽しそうな課題だな : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-n9Ol) [sage] 2018/12/06(木) 04:47:25.11:bHPTeUA/0 N×N のテーブルを N 種類の値同士の演算結果と考えて その演算結果が群の性質を満たすパターンだけを取り出す というような課題はやったことがあるな。 群論的には値の個性は意味がなくて、 たとえば全ての 1 と全ての 2 を交換したようなパターンは 等しいという扱いになってしまうので、 それを除去するのが面倒だった。 いや、この話題の流れには関係ない話なんだけど を見て思い出したもんだから。 : デフォルトの名無しさん (ワッチョイ 6107-1cCS) [sage] 2018/12/06(木) 07:30:52.06:OnZIks560 日記帳 : デフォルトの名無しさん (ワントンキン MMd3-016C) [sage] 2018/12/06(木) 10:06:21.52:ijJePQDkM ZDDかお姉さん問題でggr : デフォルトの名無しさん (JP 0Hdd-FsKt) [sage] 2018/12/06(木) 23:01:59.32:CWnIHGMVH vector A に vector B を部分代入することってできないの? つまり、代入後は vector B が vector A の部分vectorになっててほしい : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 31b3-BEmb) [sage] 2018/12/06(木) 23:06:11.56:7A1Pu7RI0 insert : デフォルトの名無しさん (ワッチョイ 13a2-n9Ol) [sage] 2018/12/07(金) 02:03:39.38:vYfFg2B+0 std::copyでどう? : デフォルトの名無しさん (ワッチョイ 497b-Po2/) [sage] 2018/12/07(金) 02:14:13.85:MQVHpO7o0 部分vectorって言ってるから、Bを参照扱いで挿入出来ないかってことじゃないの? Bを書き換えたらAにも反映されるみたいな。 まぁ、vectorじゃ構造上無理なんだけど。 : デフォルトの名無しさん (ワッチョイ 0123-GoBb) [] 2018/12/07(金) 14:42:20.03:lkrG/qbb0 slice : ◆QZaw55cn4c (ワッチョイ 5360-460t) [sage] 2018/12/07(金) 23:37:48.83:iNxdNg3x0 >N×N のテーブルを N 種類の値同士の演算結果と考えてその演算結果が群の性質を満たすパターンだけを取り出す すごく興味がありますね… 準同型を検出するのが難しそうですが、ガウス吐き出し法で同一解(ただす解を小さいもの順に並べなおす)を弾くようにするだけでなんとかなりますか? ググッてみると、位数12 の群のひとつは、巡回群でも巡回群の直積でもない、これより低位には現れなかった新たなパターン、らしいのです、これはどんな群なのか具体的に知りたいものです : デフォルトの名無しさん (ワッチョイ 2be8-5wwv) [sage] 2018/12/08(土) 08:26:12.03:qW/ttJcB0 とうほぐの人? : デフォルトの名無しさん (ワッチョイ f9c3-+0bq) [sage] 2018/12/08(土) 08:34:46.70:Cv6IL/oI0 小さい群ならいいだろうけど、散在型単純群が出てくるサイズになっても対応できるかな : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/08(土) 13:35:08.63:cc77YSwU0 using FUNC = std::function<void(Params&)>; struct Params {}; template<> std::tuple<> convert_params(const Params&) { return {}; } template<> std::tuple<int> convert_params(Params& p) { return 0; } template<typename... Args> inline static auto message_handler(void(*func)(Args...)) { return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; } template<typename... Args> inline static auto message_handler(std::function<void(Args...)> func) { return [=](Params& m) { std::apply(func, convert_params<std::tuple<Args...>>(p)); }; } template<typename T, typename... Args> inline static auto message_handler(void(T::*func)(Args...), T* obj) { assert(obj != nullptr); return [=](Params& m) { std::apply(func, std::tuple_cat( std::tuple<T&>(*obj), convert_params<std::tuple<Args...>>(p)) ); }; } : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/08(土) 13:35:36.54:cc77YSwU0 ↑の続き 前の投稿で定義した関数を使い、下記の通りに呼び出そうとしているのですが std::functionを通さずにラムダ直で呼び出した場合に、なんとなく上手にやってくれる 方法がどうしても思いつけません。何か手はないでしょうか? 1 void myfunction(int); FUNC func = message_handler(myfunction); // OK グローバル関数 2 void myclass::myfunction(int); FUNC func = message_handler(myfunction, this); // OK メンバ関数 3 FUNC func = message_handler([](int){}); // NG ラムダ直 4 std::function<void(int)> myfunction = [](int){}; FUNC func = message_handler(myfunction); // OK std::function : デフォルトの名無しさん (ワッチョイ 2beb-xqdQ) [sage] 2018/12/08(土) 13:43:44.31:7QrgfN7v0 頭に+つけると上手くいくと思う FUNC func = message_handler(+[](int){}); : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/08(土) 14:25:14.54:cc77YSwU0 あれ、マジでうまくいきました。 調べ方がいまいちわからないのですが、これはどういった機能でしょうか? : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/08(土) 14:29:45.48:cc77YSwU0 すみません、お礼を言い忘れています。 ありがとうございます。 : デフォルトの名無しさん (ワッチョイ 2beb-xqdQ) [sage] 2018/12/08(土) 14:59:08.12:7QrgfN7v0 std::decayと同じ働きをするようなもので、ラムダ式を同等の関数ポインタへ変換する(ただしキャプチャをしてはいけない) なんて調べればいいのかはよくわからない・・・ : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/09(日) 14:22:21.02:xJ41Kt/M0 突然すまんが、 winnt.h の中に次のような構造体定義があって、外部では、構造体タグ名 _RTL_CRITICAL_SECTION が不完全定義すらもされないで、 _RTL_CRITICAL_SECTION_DEBUG の中でポインタのために使用されている。 仮にこれで、「内部クラス」扱いにならないのだとすれば、 逆に、「内部クラス」を使いたい場合、もし完全定義を与える前に、 不完全なままポインタのために使いたい場合は、どうしたらいいのだろう? typedef struct _RTL_CRITICAL_SECTION_DEBUG { WORD Type; WORD CreatorBackTraceIndex; struct _RTL_CRITICAL_SECTION *CriticalSection; LIST_ENTRY ProcessLocksList; DWORD EntryCount; DWORD ContentionCount; DWORD Spare[2]; } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG; typedef struct _RTL_CRITICAL_SECTION { PRTL_CRITICAL_SECTION_DEBUG DebugInfo; LONG LockCount; LONG RecursionCount; HANDLE OwningThread; HANDLE LockSemaphore; DWORD Reserved; } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION; : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/09(日) 14:26:38.84:xJ41Kt/M0 確か、構造体タグ名は、ブロックに名前空間があって、C と C++ で仕様がごちゃごちゃしていた 気がした。 確か、既に定義がある場合は、それが定義された段階の名前空間を使うが、 完全に新規に定義する場合は、最も内側のブロックの名前空間に登録される、という 感じだった気がしたんだけど。 一度も外部では定義も宣言もしなかった場合、最も内側のブロックの名前空間に登録されるの だとすれば、クラスや構造体内部の内部クラスに関してもそれの応用になって・・・、と思うんだが、 少なくとも、旧来の C のヘッダファイルでは、その解釈ではまずいことになっている気がする。 : デフォルトの名無しさん (アウウィフ FF05-GoBb) [] 2018/12/09(日) 14:59:08.32:rgDJoSoNF struct _RTL_CRITICAL_SECTION; って行があるんじゃね : デフォルトの名無しさん (ワッチョイ 81f2-Po2/) [sage] 2018/12/09(日) 15:15:39.34:LCYDMKL+0 不完全な型はそれを解決する必要があるときに完全な定義が得られればいいんで、 それがどこの名前空間に存在するかについてもそのときに解決できればよかったはず。 : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/09(日) 17:56:05.02:xJ41Kt/M0 無い気がする。 さっき思ったんだけど、C++ の場合、winnt.h の大部分は、extern "C" {・・・} で囲まれて パースされて、旧来の C の仕様のままになるので、内部クラスの概念が無いから あれでいいのかも知れない??? : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/09(日) 18:15:26.56:xJ41Kt/M0 _XXX_DEBUG の方で、_RTL_CRITICAL_SECTION を _XXX_DEBUG の構造体に所属する 「内部クラス」 に解釈してしまった場合、外側の _RTL_CRITICAL_SECTION では、 タグ名としては同じ名前であっても、コンパイラにとっては全くの別の構造体に見なされて しまうので、たとえば、ポインタを代入する際に、 「異なるポインタ型への代入がある」 などのエラーが出る可能性がある。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-n9Ol) [sage] 2018/12/09(日) 18:24:17.47:hgaiHSHh0 extern はリンケージを制御する仕組みで、 extern "C" にしても文法の解釈には影響を与えない。 C として解釈されたりはしないはず。 : デフォルトの名無しさん (ワッチョイ 81f2-Po2/) [sage] 2018/12/09(日) 18:24:29.50:LCYDMKL+0 ? その「内部クラス」 の定義は存在しないんだから。 : デフォルトの名無しさん (ワンミングク MMd3-OBga) [sage] 2018/12/10(月) 11:35:19.25:z9e5AxLyM 何のための不完全型かと 型の中身を意識する必要はない リンケージなんか関係ない : デフォルトの名無しさん (ワッチョイ 937c-1aIk) [sage] 2018/12/10(月) 13:10:56.95:Hs8Qkrq90 不完全定義でも、厳密にどの構造体かは区別されている。 : デフォルトの名無しさん (ワッチョイ 73a5-n9Ol) [sage] 2018/12/10(月) 21:40:39.61:merQK3Z90 不完全型でいけそう ttp://https://ideone.com/SFcGAQ 内部クラスと解釈はされないみたい(内部クラスと解釈されたらリンクリストで困るような) ttp://https://ideone.com/DcYHNu 詳しい仕様は誰かプリーズ : デフォルトの名無しさん (ワッチョイ 937c-1aIk) [sage] 2018/12/10(月) 23:34:55.84:Hs8Qkrq90 >(内部クラスと解釈されたらリンクリストで困るような) しかし、外部クラスと解釈される場合は、本当に内部クラスにしたい場合で、 それ自身が自己参照を持つリンクリストにしたいような場合に、逆に困る 事になるかも知れない。 : デフォルトの名無しさん (ワッチョイ 81f2-Po2/) [sage] 2018/12/10(月) 23:43:57.33:ba1HqxVH0 struct Bの定義は内と外両方同時に存在し得て、検索順で近い方に解釈されるというだけだろ。 何を心配してるのか。 : デフォルトの名無しさん (ワッチョイ 937c-1aIk) [sage] 2018/12/10(月) 23:48:43.81:Hs8Qkrq90 別の名前空間の構造体だと解釈されれば、ポインタの代入も出来ない。 : デフォルトの名無しさん (ワッチョイ 9333-xqdQ) [sage] 2018/12/11(火) 01:46:14.52:sJmjlCIC0 このようにしたらいい。 struct _RTL_CRITICAL_SECTION; struct _RTL_CRITICAL_SECTION *CriticalSection; ttp://https://timsong-cpp.github.io/cppwp/n4659/basic.lookup.elab#2 ttp://https://timsong-cpp.github.io/cppwp/n4659/basic.scope.pdecl#7 : デフォルトの名無しさん (ワッチョイ 81f2-Po2/) [sage] 2018/12/11(火) 08:05:37.73:ULPnecUk0 1つのコンパイル単位内でそれはないだろ。 : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/11(火) 09:54:05.21:CMkzN/Tv0 変数の宣言をした時点で解決可能なクラスが使われるというしごく当たり前な結果に。 ttp://https://ideone.com/JyKDmi ttp://https://ideone.com/gTeZlX ttp://https://ideone.com/uPjViG 解決不可能だった場合は、一番近いnamespaceから選択される ttp://https://ideone.com/LpC58v : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/11(火) 10:10:46.46:CMkzN/Tv0 の一番近いnamespaceからというのは嘘でした × ttp://https://ideone.com/LpC58v 正しくは、解決不可能だった場合は、同じ階層から選択されるみたい。 AとBがともにNS2に存在する場合 ttp://https://ideone.com/m5leMs コンパイルエラー。 AがNS2 Bがひとつ外側のNS ttp://https://ideone.com/9IY4BC 同階層にBがない場合、グローバルからも選択されることはない。 ttp://https://ideone.com/cMhwpW : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/11(火) 10:13:00.28:CMkzN/Tv0 コンパイルエラー。 AがNS2 Bがひとつ外側のNS × ttp://https://ideone.com/9IY4BC 〇 ttp://https://ideone.com/JOSLLa : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/11(火) 14:13:57.27:TeIOtXwo0 ある。 単に人間に見えているタグ名が同じというだけで、コンパイラ内部では、 全く別の識別番号(というより、通常、コンパイラ内部の構造体定義データの先頭アドレス) になっており、タグ名が同じでも識別番号が異なれば、全く別物と扱われる場合がある。 : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/11(火) 15:07:44.16:TeIOtXwo0 ものすごい微妙な動きをするみたいだ・・・。 struct Base の定義を見てみると、外側に既に struct Data が定義されていても、 なぜか、Data は、「nested Data」すなわち、Baseの内部クラスの方を「参照」して しまうらしい。規則性はどこにあるんだろう。まだ英文読んでないけど。 struct Node { struct Node* Next; // OK: Refers to Node at global scope struct Data* Data; // OK: Declares type Data // at global scope and member Data }; struct Data { struct Node* Node; // OK: Refers to Node at global scope friend struct ::Glob; // error: Glob is not declared, cannot introduce a qualified type ([dcl.type.elab]) friend struct Glob; // OK: Refers to (as yet) undeclared Glob at global scope. /* ... */ }; struct Base { struct Data; // OK: Declares nested Data struct ::Data* thatData; // OK: Refers to ::Data struct Base::Data* thisData; // OK: Refers to nested Data friend class ::Data; // OK: global Data is a friend friend class Data; // OK: nested Data is a friend struct Data { /* ... */ }; // Defines nested Data }; : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/11(火) 15:29:10.50:TeIOtXwo0 【違いの分析】 1. 外部クラスを参照したい場合の書き方: struct Data { struct Node* Node; // OK: Refers to Node at global scope ・・・ }; 2. 内部クラスを参照したい場合の書き方: struct Base { struct Data; // OK: Declares nested Data ・・・ }; 【考察】 後者の方は、「『宣言子』を「何にも書かずに」、ただ不完全定義として、 「struct Data」と書いている。こういう独特の特徴的な書き方で、 新しいタグ名の導入と見なされているのではないか。 一方、前者の方は、 「struct Node」だけではなく、「*Node」という「宣言子」を 書いてしまっているので、新しいタグ名の導入とは見なされない気がする。 先日書いた、CRITICAL なんたらの例では、宣言氏を書いていたので、「1」 の方の扱いとなり、外部クラスの参照と見なされた・・・。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-n9Ol) [sage] 2018/12/11(火) 15:34:19.91:pCenHJYt0 D&E の 6.3.1 にそのあたりの解説があるので読んでみると面白いかも。 「病的な例」を含めてわかりやすい解決ルールを作ろうと奮闘したあげくに まあまあマシなルールとしてそうなったって感じ。 : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/11(火) 17:25:37.23:TeIOtXwo0 結局、 のような結論であってるのかな? : デフォルトの名無しさん (ワッチョイ 2b80-Po2/) [] 2018/12/11(火) 22:53:03.48:yA4tg2d20 ぜんぜん違う ポインタだからサイズが決定できることになる ポインタなら前方宣言で前方参照できる : デフォルトの名無しさん (ワッチョイ 93b3-eP6C) [sage] 2018/12/11(火) 22:54:56.40:essnCSQz0 2. のほうは構造体を宣言してるから、そこに新しく nested class が作られてる。 1. のほうは構造体へのポインタを宣言してるから、対応する構造体を探して外部の定義を見つけてる。 そんなに微妙でもないと思う。 : デフォルトの名無しさん (ワッチョイ 2b80-Po2/) [sage] 2018/12/11(火) 22:59:45.95:yA4tg2d20 そもそもポインタでない場合、前方宣言でなくクラス(もしくは構造体)の宣言がないと インスタンスのサイズが決定できないし コンスタラクトタも呼び出せない 普通にコンパイルエラーになる クラス(もしくは構造体)のメンバにアクセスする場合も同じく 前方宣言でなくクラス(もしくは構造体)の宣言がないと メンバがわからない 普通にコンパイルエラーになる : デフォルトの名無しさん (ワッチョイ 2b80-Po2/) [sage] 2018/12/11(火) 23:02:27.89:yA4tg2d20 ポインタもしくは&の参照だけなら 前方参照だけで問題はない マジで頭悪いシロウトしかいない : デフォルトの名無しさん (ワッチョイ f9c3-+0bq) [sage] 2018/12/11(火) 23:59:39.80:6HVoAQt60 おじいちゃん今はタグ名前空間の話でしょ 不完全型のポインタが完全型になる話なんか今更ドヤ顔でしても恥ずかしいだけだよ : デフォルトの名無しさん (ワッチョイ 2b80-Po2/) [sage] 2018/12/12(水) 00:09:55.89:1Fc61En10 また低学歴知恵遅れが的外れなこといってるし 低学歴知恵遅れってなんでこんな頭悪いん 頭悪いくせに頭悪いレスをする : デフォルトの名無しさん (ワッチョイ 2b80-Po2/) [sage] 2018/12/12(水) 00:10:41.87:1Fc61En10 まず低学歴知恵遅れはC/C++言語の特性すらわかってない : デフォルトの名無しさん (ワントンキン MMd3-OBga) [sage] 2018/12/12(水) 08:26:27.80:G3zhlg3lM 半角恥ずかしいな さすが低学歴 : デフォルトの名無しさん (ワッチョイ d9e3-1aIk) [sage] 2018/12/12(水) 08:48:09.25:RRyKxOPE0 C/C++ では、ある1つの宣言で、ポインタ変数を定義する場合でも、それと同時に構造体の 宣言(定義)が行われる事がある。たとえば、 TYPE *ptr; は、ポインタ変数の ptr を定義しているが、TYPE の部分が struct TPerson { ・・・ } だった場合は、変数 ptr の定義と同時に、構造体 TPerson も定義する。 さらに、TYPE の部分が、 struct TPerson であった場合も、不完全定義として構造体 TPerson を定義することがある。 実際、先に挙げた例では、1つの行で、全く始めて _RTL_CRITICAL_SECTION 構造体が 出てきて、その不完全定義と同時にその構造体へのポインタ型のメンバ変数を宣言 していた。 : デフォルトの名無しさん (ワッチョイ 93b3-eP6C) [sage] 2018/12/12(水) 21:29:50.61:6r+JK94x0 型が struct TPerson みたいに書かれてて、 TPerson の宣言が見つからない場合、そこで TPerson が前方宣言されたものとして扱われる。 この前方宣言は一番内側の namespace かブロックに所属する扱いになる。 要するに一部の前方宣言は省略できるってだけだよ。 : デフォルトの名無しさん (ワッチョイ 93bd-e/g/) [sage] 2018/12/12(水) 22:39:31.89:rtWaVZVk0 における2の書き方が新しいタグ名の導入と見なされる、というのが特殊ルールなだけで あとはでおk オール無問題 : デフォルトの名無しさん (ワッチョイ 93bd-e/g/) [sage] 2018/12/12(水) 22:45:13.11:rtWaVZVk0 における2の書き方を前方宣言と解釈するなら、 構造体定義の中で前方宣言可能なブツが他にはfriendぐらいしか無い件について: (externは書けない、staticは別の意味になる しかもfriendは直後に完全型かポインタか参照を要求するですしおすし、 struct Data;という構文の際立ったユニークさは明らかすぐる… : デフォルトの名無しさん (ワッチョイ 93bd-e/g/) [sage] 2018/12/12(水) 22:55:10.10:rtWaVZVk0 ていうかstruct Data;という構文には構造体の定義ブロックの外に書いたとき発動する存在意義が別にあるが そちらは前方宣言と言って良いかも試練、 : デフォルトの名無しさん (ワッチョイ 93bd-e/g/) [sage] 2018/12/12(水) 23:07:33.30:rtWaVZVk0 こういうやつ↓↓↓ struct Data; struct Foo { struct Data* m_pData; // struct Fooはstruct Dataへのリンクを有する /*....*/ }; struct Data { struct Foo* m_pFoo; // Dataはstruct Fooへのリンクを有する /*...*/ }; そもそもなんで型の名前やクラス名だけではなくて、タグ名なんてものが存在し続けているのかというと、 struct Data;というのがやりたかったから、およびその必要が(上のようなケースで)あったからに他ならない : デフォルトの名無しさん (ワッチョイ 899f-QT7o) [sage] 2018/12/12(水) 23:22:51.72:0D13QgVz0 struct Data* ptr;の記法が特殊なだけで、 struct Data;は一貫して前方宣言なのでは? : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/13(木) 00:40:06.98:6BRdw/E00 >struct Data* ptr;の記法が特殊なだけで、 (不完全型)* ptr; とされてもコンパイラはptrへの代入や関数に引数渡しするコードを問題なく吐けるから int val; というのと大して変わらない話 コンパイラにとってはスゲー普通の日常業務 >struct Data;は一貫して前方宣言なのでは? 前方宣言というにはにおける2の書き方で新しいタグ名の導入と見なされるという挙動がビョーキ もはやそれは内部クラスの定義にほぼ等しい(不完全な定義というだけ : デフォルトの名無しさん (ワッチョイ 079f-Buu6) [sage] 2018/12/13(木) 00:47:56.23:fs9Sguzb0 struct Data* ptr;の記法が特殊な根拠 struct A { struct Data* ptr; // as ::Data : デフォルトの名無しさん (ワッチョイ 079f-Buu6) [sage] 2018/12/13(木) 00:52:46.20:fs9Sguzb0 struct Data* ptr;の記法が特殊な根拠 struct A { struct Data* ptr; // ::Data }; struct A { struct Data; struct Data* ptr; // A::Data }; 前方宣言のあるなしで、解釈の変わるstruct Data* ptr;の記法はやっぱり特殊なんだと思うけど。 C++において、不完全な型という概念はあるけど、不完全な定義という概念はないのでは? : デフォルトの名無しさん (ワッチョイ 079f-Buu6) [sage] 2018/12/13(木) 00:59:11.60:fs9Sguzb0 struct A { struct Data* ptr; }; と記述した場合、そこからたどれる名前空間のどの階層であっても 事前に宣言または定義が行われていれば、その時点で特定可能なstruct Dataへのポインタと解釈されるけど、 解決不可能であった場合には、struct Aと同階層にあるstruct Dataとみなされる <- この動作が特殊 : デフォルトの名無しさん (ワッチョイ 8a34-kzSl) [sage] 2018/12/13(木) 01:06:53.33:RmgWred00 アタリマエじゃん バカなのかな? : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/13(木) 01:25:06.35:6BRdw/E00 struct Bar;が前方宣言では「ない」という主張は撤回する なぜなら、次のコードの(A)、(B)のコメントアウトを外しても それ自体はエラーにならない(つまりstruct Bar; は同一スコープ内で重複が許される このときは(D)でエラーになる しかし、(A)と(B)をコメントアウトすると何のエラーにもならない むしろstruct Bar* m_pBar; の方が普通に前方宣言的に働く(Fooのスコープに縛られない #include <stdio.h> struct Foo { //struct Bar; // (A) //struct Bar; // (B) struct Bar* m_pBar; // (C) }; struct Bar { int x; int y; }; struct Bar* g_ptr; int main() { Foo test; test.m_pBar = g_ptr; // (D) } : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/13(木) 01:32:49.21:6BRdw/E00 ちょっち訂正 △: struct Bar;が前方宣言では「ない」という主張 ○: 構造体の定義ブロック内のstruct Bar;が前方宣言では「ない」という主張 で、struct Bar* m_pBar; の方が普通に前方宣言的に働く(スコープローカルな新たなタグBarを作ったりしない)のに --(1) 構造体の定義ブロック内のstruct Bar;は明らかにスコープローカルな新たなタグBarを作り出すという変態機能を有している --(2) つまり(2)を指して一貫して前方宣言だと主張するなら、(1)のstruct Bar* m_pBar;も前方宣言の一種だと言わねば不正直である : デフォルトの名無しさん (ワッチョイ 8a33-3flP) [sage] 2018/12/13(木) 01:52:26.13:397gSR3k0 構造体の定義ブロック内のint i;は明らかにスコープローカルな新たな変数iを作り出すんだけど、 それも変態機能だと思うの? : デフォルトの名無しさん (ワッチョイ 8ab3-cZSF) [sage] 2018/12/13(木) 02:46:28.04:5hqeTMOU0 (1) が前方宣言的に働く理由は で説明したんだけど、通じなかったかな… : デフォルトの名無しさん (ワッチョイ 079f-Buu6) [sage] 2018/12/13(木) 08:36:49.07:fs9Sguzb0 >struct Bar;は明らかにスコープローカルな新たなタグBarを作り出す 構造体定義ブロック内に限らずとも、前本宣言はもともとすべてスコープローカルだけど。 それはグローバルであっても、中間階層の名前空間であっても、 多重ネストの構造体の中間階層で会っても同じ。 : デフォルトの名無しさん (ワイーワ2 FF42-yWnt) [] 2018/12/13(木) 13:11:12.72:zFPTCGevF 拘ってる人は自前でコンパイラでも作ろうとしてるのか? : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/13(木) 16:31:01.00:jSkPpV300 ポインタでない場合というと struct aho; struct boke { aho begin(); aho end(); }; こういうのもあるな : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [sage] 2018/12/14(金) 15:03:53.29:TcnBR/ER0 最初に質問を書いた者だが、この話は、実は仕様が決まっていて、 記憶だと、手元にある ARM(Annotated Reference Manual) にも、確か 何か書いてあった。 見るのがメンドクサくてここに質問を書いたんだ。スマン。 : デフォルトの名無しさん (ワッチョイ 2b23-yWnt) [] 2018/12/14(金) 17:33:38.94:6VLPSm+70 3日で忘れる脳みそ : 634 (ワッチョイ 8abd-U1IU) [sage] 2018/12/14(金) 20:33:44.26:PXFrjbZo0 レスdクス、 なるほどスゲーよくわかりた 構造体の定義ブロック内のint i;は2回同じものを書いたらエラーになるから宣言ではなくて定義じゃわパオーン 構造体の定義ブロック内のint i;は2回同じものを書いたらエラーになるから宣言ではなくて定義じゃわパオーン その他の方々もだいたいおk : デフォルトの名無しさん (アウアウウー Sa4f-POOn) [sage] 2018/12/15(土) 18:02:44.15:9IWy3eNma プログラム間でデータ共有する方法はメモリ共有とファイル経由以外に何がありますか : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/15(土) 18:19:26.83:a5AQAbac0 RPC : デフォルトの名無しさん (ワッチョイ 8a7c-S6R4) [sage] 2018/12/15(土) 20:09:27.38:0fkVwVva0 ・WM_COPYDATA メッセージで送り合う。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-UKyl) [sage] 2018/12/15(土) 20:24:45.65:l0ksdq3r0 Windows ならメールスロットとパイプもアリかな。 : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 20:36:21.43:NSrOcjuo0 質問者の意図がようわからんが データ本体(スゲー巨大かもしれない)の共有にいちいち通信時間を要する手段は除外されるんじゃ… やっぱプロセス間の同期をミューテックスか何かのプロセス間でも使える同期オブジェクトまたはソケット通信とかでとる前提で、 データ本体のはメモリ共有かファイルという手段になるのではなかろうかと、 : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/15(土) 21:19:09.14:hAY8T09E0 OpenClipboard : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/15(土) 21:55:14.09:px2y3yP70 ファイル渡しの方が通信よりよっぽど時間がかかると思うが。 : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/15(土) 22:03:48.34:hAY8T09E0 オンメモリのはずの処理が秒待たされて・・・ : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 22:05:56.86:NSrOcjuo0 共有のニーズが生じてからファイルを作るのならそうだが 最初から共有データとしてファイルが存在する場合はそうではない というわけで質問者の意図にはようわからん点がある : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/15(土) 22:15:15.80:px2y3yP70 ディスクアクセスの遅さ考えたらわかるだろ、ふつう。 : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 22:47:45.19:NSrOcjuo0 想像力が欠如すぐる… 共有しようとするデータのサイズが1 TBなら、全部送ろうとしたら3GB/sの転送速度でも333秒かかる ファイルを1個置いといてfseek()する方がまだまし : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/15(土) 22:51:21.25:a5AQAbac0 たった一行の素朴な質問からどこまで膨らませられるかコンテスト開始 : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 22:54:08.01:NSrOcjuo0 通信推しの人としてはそう言いたくなる気持ちもワカル : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/15(土) 22:58:01.76:px2y3yP70 1TBのデータ共有するのにファイルからは1TB読まなくてもいいという謎比較。 : デフォルトの名無しさん (ワッチョイ 1e80-2dqZ) [] 2018/12/15(土) 23:09:43.46:8aRCy95z0 同一の計算機で何度も読むことが分かってるのに 別の計算機でディスクアクセスさせて それを通信でやりとするアホなシステム構成にするヤツがあとを絶たないのがよくわかる 著しい低学歴知恵遅れがそういうことよくやる : デフォルトの名無しさん (ワッチョイ 1e80-2dqZ) [] 2018/12/15(土) 23:23:37.08:8aRCy95z0 世の中には常識をこえるすごい頭悪いヤツラがいるからな 何度も何度も計算機Aから計算機Bの数十ギガを超える共有ファイルの内容を計算機Aにすべて読み込んで 計算機Aで処理をなん百回も繰り返す しかも共有に使うSamba つまりNBT() Windows共有とまったく同じ つまり毎回毎回計算機Bにディスクアクセスして通信(NBT経由)使って 計算機Aで読込むということを意味する それで遅い遅いなんでといってたからな。。。 世の中には想像を超えるこんな頭悪いのが現実にいる : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 23:35:37.00:NSrOcjuo0 むしろ毎回データ全部を丸ごと送る想定なら、高速な通信手段で良くて 「データ共有する」()という質問者の動機にならない件について: メモリ共有であれば通信より高速を目指す目的で毎回データ全部を丸ごと送る風に使われることもあるが 質問者は共有手段として「ファイル」も挙げているから いきなりそこまで話を限定できないワケ : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/15(土) 23:49:56.32:NSrOcjuo0 んまー今思いついたがメモリ共有やファイルの他には データベースみたいなデータを出し入れ管理するプロセスなりサーバなりを設けるというのも の答えに含まれるのかもしれん… の思い込みとはうらはらに、 データベースXにアクセスするプロセスA、Bは、明らかにXが管理するデータを共有しているが、 Xの管理するデータ丸ごとを毎回送りつけ合うわけではないし、 : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/16(日) 08:13:31.96:OmvADhcW0 なんか長々と書いているようだが、全部送ろうが一部だろうが正しく同条件で比較すれば一目瞭然だろう。 1. プロセスAが巨大なファイル中の一部のデータの読み込みをファイルシステムに要求する 2. ストレージから読みだされたデータが返される 1. プロセスAがプロセスBが持つ巨大なデータ中の一部のデータをRPCで要求する 2. プロセスBからデータが返される : デフォルトの名無しさん (ワッチョイ d3b3-UKyl) [sage] 2018/12/16(日) 08:26:49.11:sqE5CAYo0 データベースなら例えばSQLでやりとりやね 既にオンメモリで数ギガ扱うのに対応してるしプログラム間通信も高速 なにより統一されたプロトコルでオンメモリからネットにまでアクセスできるのが便利 : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/16(日) 08:37:36.18:OmvADhcW0 >データベースみたいなデータを出し入れ管理するプロセスなりサーバなりを設けるというのも これを実現する手段としてのような手段があるわけだが、それ認識してなかったのか。 : デフォルトの名無しさん (ワッチョイ d3b3-UKyl) [sage] 2018/12/16(日) 08:48:33.22:sqE5CAYo0 それはデータベースとは言わんのじゃ? COPY_DATAやメールスロットはOS提供の簡易的なプロセス間通信サービス RPCはデータ以に上さらに高度にアクセスするプロシージャ : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/16(日) 09:09:15.05:OmvADhcW0 データをどう持つかというのはこの際どうでもよくて、はそのサーバープロセスと データをやり取りする手段の話ね。 : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/16(日) 12:31:06.96:DTKapPnl0 >これを実現する手段としてのような手段があるわけだが、それ認識してなかったのか。 はデータを送りつけるという通信の手段のみ述べており、データ共有の実現に行き着いていない もちろん通信だけでもプロセスAとBの間で情報の共有はできるが、 の言説だけでは、情報を表す入れ物である「データ」の共有に行き着いていないワケ の言説が含意するのは、同じ情報iを、プロセスAがデータa、プロセスBがデータbとして持っている状況、 というところ止まりで、aとbは別物。さらにいうと、同じ形式のデータであることすら導くことができない この差異は形而上の問題ではなく、現実の設計の問題である だけでは、AがBに情報伝達するにあたりBに通信する(通信のエンドポイントとしてBを起こす)必要があるから Bが風邪で休んだりするとAの仕事まで止まってしまうことが確定する 一方、AがExcelシートXに情報を書き、Bが必要なときXの情報を参照する、という方式だと(他に付帯条件が無ければ)Aは問題なく仕事を続けられる データ共有というのは後者 : デフォルトの名無しさん (ワッチョイ ebf2-2dqZ) [sage] 2018/12/16(日) 13:20:15.29:OmvADhcW0 今度は「共有」という言葉の定義論か。それをで言っていたんならそう問題はなかったろうがな。 どっちにしても通信時間が云々というのが的外れなのは変わらない。 見苦しい。 : デフォルトの名無しさん (ワッチョイ 8ab3-skpA) [sage] 2018/12/16(日) 13:30:30.74:7UXd2BE00 なぜ機能とそれを実現する手段を混同して語るかなぁ… Excelのブック共有だってExcelアプリケーションがファイル共有とか使って頑張ってるから実現できてるんだし そもそもは手段レベルの話だし : デフォルトの名無しさん (ワッチョイ 8abd-U1IU) [sage] 2018/12/16(日) 13:34:08.04:DTKapPnl0 とは通信でおk、と叫びつつ、ネットワークのトポロジーの差異を認識しないおマヌケちゃん 結局通信についてもデータ共有についても素人なのでした : デフォルトの名無しさん (ワッチョイ 8ab3-skpA) [sage] 2018/12/16(日) 14:20:42.94:7UXd2BE00 ネットワークトポロジー 最近覚えたのかな? w : デフォルトの名無しさん (ワッチョイ d3b3-L470) [sage] 2018/12/16(日) 16:50:47.90:n9CIi+tQ0 郵送が確実。 : デフォルトの名無しさん (ドコグロ MMc2-skpA) [sage] 2018/12/16(日) 16:58:48.71:JWRTcoVNM 残念ながらリアル郵便網を使うプロトコルスタックはないので伝書鳩にした方がいい : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/16(日) 17:10:47.56:wjNPlWwl0 伝書鳩はパケットロスの可能性が高いので冗長化が必要 : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/16(日) 17:24:43.78:lv3vm4Nk0 ループバックができる鳩は往復鳩といって 普通の伝書鳩より訓練が難しいんだぞ : デフォルトの名無しさん (アウアウウー Sa4f-dRHH) [sage] 2018/12/16(日) 17:39:03.15:wY/NrJSLa 往復とか出来たのか… あれ一方通行だと思ってたわ : デフォルトの名無しさん (ワントンキン MMfa-sY6B) [sage] 2018/12/16(日) 17:49:06.67:i39EOxKBM 手段の話であれば極論口頭でもいいわけたが、勿論そんなこと聞きたい訳でもなし : デフォルトの名無しさん (ワッチョイ 0a7c-S6R4) [sage] 2018/12/18(火) 13:15:19.65:G1V4hdx+0 実は、GDI の Device Context の HDC も、プロセスの垣根を越えて渡す方法がある、 メモリコピーは伴わずに。やり方は、PrintWindow(HWND hWnd, HDC hDC, DWORD flag) API を使って、WM_PRINT メッセージを送るというもの。これを使えば、グラフィックデータ ならBITMAPデータも伝達できる。たとえば、HDC を用いて GDI+ の LockBits() を 使うと良い。L。 ttps://mevius.5ch.net/test/read.cgi/tech/1474384848/338 : デフォルトの名無しさん (ワッチョイ 2b23-yWnt) [] 2018/12/18(火) 13:30:16.37:/M0/bFGF0 共有メモリにクラウドが入ってくる時代はもう来てる : デフォルトの名無しさん (ラクッペ MMb3-74rI) [sage] 2018/12/18(火) 14:51:58.63:RxVtOB6VM C++を使ってる仕事につきたいのですが、どこもC++を使ってるところは組み込み系とかの経験の募集ばっかです 私はwebしかやったことないので組み込み系の経験はありません : デフォルトの名無しさん (アークセー Sxa3-JU2d) [sage] 2018/12/18(火) 15:31:06.75:aA/jUlRpx ここはダーマの神殿ではない、と言いたいとこだけど、年齢によるね。 未経験でも30歳前後なら余裕、35歳超えなら諦めろ。 というか組み込み系でC++を使っている分野ってあるにはあるけどそんなに多くはないよ。 組み込みLinuxでのアプリ開発ぐらいなんじゃない? 老害から言わせてもらうとアレは組み込みソフトじゃないけど。 : デフォルトの名無しさん (ラクッペ MMb3-74rI) [sage] 2018/12/18(火) 17:11:33.44:RxVtOB6VM 25です Linuxでのアプリ開発分野ならあるんですね‥ 別に組み込みじゃなくてもいいんですけど、探したら組み込みがほとんどって感じです 本気で探しているのですが、難しいです‥ 頑張って探してみます : デフォルトの名無しさん (バットンキン MM33-JU2d) [sage] 2018/12/18(火) 17:30:13.67:zLgJOfCSM 25歳なら第二新卒扱いで組み込み未経験でも全然OKよ。 募集要項に経験者って書かれてても怖がらずどんどん応募してみては? 相変わらずこの業界は人手(奴隷)不足なのでそう苦労せず転職できると思う。 売り手市場の今は転職先の会社を見極めて選り好みすることができるので、下手に妥協せず納得行くまで転職活動頑張って! : デフォルトの名無しさん (ラクッペ MMb3-74rI) [sage] 2018/12/18(火) 17:36:02.29:RxVtOB6VM ありがとうございます! 目標に向かって頑張ります 相談に乗ってもらってありがとうございます 相談してよかったです! : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/18(火) 17:41:07.57:tlRM8wuS0 普通にC++でWindowsようのデスクトップアプリ作ってるけどなあ それように人員を募集してるかっていうとしてないけど : デフォルトの名無しさん (ラクッペ MMb3-74rI) [sage] 2018/12/18(火) 18:14:29.56:RxVtOB6VM 普通に羨ましいです‥ 自分は中々見つからないです : デフォルトの名無しさん (ドコグロ MMc2-skpA) [sage] 2018/12/18(火) 19:02:13.39:/UA4EEmuM 組込でガッツリは使ってないけどBetter CとしてC++使ってる所はそれなりにあるよ : デフォルトの名無しさん (ワッチョイ d3b3-c/Yr) [sage] 2018/12/18(火) 21:39:11.18:w60GoDWR0 ちっこく作って別プロセス立てするってやり方はあるけど それ以外だと大規模なゲーム開発くらいしかあんまり聞かないな。 : デフォルトの名無しさん (ブーイモ MM47-eJUM) [sage] 2018/12/18(火) 22:06:41.05:F4O/hB15M なんでc++の仕事したいんだ? 言語縛りにする意味がわからんな : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/18(火) 22:15:12.74:xgHv4hiI0 自分が使える言語で探すのはそんなにおかしいか? : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/18(火) 22:16:48.41:tlRM8wuS0 C++じゃないとやる気起きないし : デフォルトの名無しさん (ワッチョイ d3b3-c/Yr) [sage] 2018/12/18(火) 22:38:17.18:w60GoDWR0 それは異常だろ : デフォルトの名無しさん (ワッチョイ 4ab3-UKyl) [sage] 2018/12/18(火) 23:31:30.78:6RhNbAj70 C++の最新仕様に詳しくてもあんまり仕事で使えないからな メタプログラミング駆使して行数少なく書いてもぶっちゃけ大した価値ない 逆にやりすぎて嫌われるのがオチ CPU、キャッシュ、バスアーキ、OS、ABI、Toolchain、各種デバッグ手法などを知ってる方が重要 : デフォルトの名無しさん (ワッチョイ c6cd-sY6B) [sage] 2018/12/19(水) 00:09:24.93:GdGFtcE30 言語仕様詳しい癖にmake書けない奴とかいるからな : デフォルトの名無しさん (ワッチョイ 1eeb-3flP) [sage] 2018/12/19(水) 00:10:12.36:UC31GMnJ0 VisualStudioばっか使ってるからmakeかけないわ・・・ : デフォルトの名無しさん (ワッチョイ 1e80-2dqZ) [] 2018/12/19(水) 00:13:50.49:jOXn0Ht90 makeは依存ファイルと生成ルールをひたすら書くだけだからな あんなしょうもないのを書けないほうがおかしい : デフォルトの名無しさん (ワッチョイ 0a12-rp3U) [sage] 2018/12/19(水) 00:14:21.79:m3ixYsdj0 自作のmake.pyなら : デフォルトの名無しさん (ワッチョイ 0fc3-mUi7) [sage] 2018/12/19(水) 00:33:44.41:ct7Lx3nM0 makeは暗黙ルールとか特殊変数とか予約ターゲットとかアーカイブの特別扱いとか 罠や地雷や落とし穴が満載で人間が書くもんじゃない : デフォルトの名無しさん (ワッチョイ 83c3-UKyl) [sage] 2018/12/19(水) 00:38:35.31:PtV3oISf0 昔はmake書けないやつ馬鹿にしてたが、ひざに矢を受けてしまってな…… 今いるのやや学術よりのとこなんだけど、回りがPythonばかりになってきて690の気持ちが分かってしまう : デフォルトの名無しさん (オイコラミネオ MM8b-H2zD) [sage] 2018/12/19(水) 01:21:09.11:3jKO9qdxM linuxのmakefileをwindowsで使おうとしてハマってぶん投げたのはナイショ : デフォルトの名無しさん (オイコラミネオ MM42-c2YN) [sage] 2018/12/19(水) 01:42:35.97:+UCKDvEZM makeは泥沼、mkmfやら数多のツールすら呑み込む底無し沼・・ : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdaa-DjeH) [age] 2018/12/19(水) 02:18:50.35:BcJ2DwBBd makeからCMakeへ時代は動いている。 : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/19(水) 02:41:43.59:4vZcLUvu0 makeを書くだけなら簡単だがクロスプラットフォームで更にいくつもオプションが増えてくると人力で書くこと自体が間違いでしかなくなる : デフォルトの名無しさん (ワッチョイ 1eea-Y0Zn) [sage] 2018/12/19(水) 05:34:26.63:yisopo3/0 環境導入楽なGUIアプリケーション作成用ライブラリないかなぁ QtはQtCreatorが使いづらくて : デフォルトの名無しさん (ワッチョイ ebb3-k7+j) [sage] 2018/12/19(水) 08:20:09.90:fZnQLneQ0 標準ライブラリにGUIが入らないのは何故なんだぜ? 制御系とかそもそもGUIが無い環境に実装出来ないから? : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/19(水) 08:34:28.71:4vZcLUvu0 通信ライブラリですらいつ策定されるか分からない状態なのにGUIとかC++29くらいになりそう それに最近はGUIはweb方面のエコシステムを流用するのが流行だしはっきり言って厳しい : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-UKyl) [sage] 2018/12/19(水) 10:09:57.72:i1OD7WIV0 GUI ライブラリの提案だけは出てるけどね。 cairo を取り入れようとか、 ウェブアプリケーション風の DOM ベースのやつ (?) とか。 動作モデルが色々とあるので、 どれかに統一するのはしんどいと思う。 ベースの動作モデルを意識させないほど厚いライブラリを 標準に入れるのもちょっとどうかと思うし。 : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/19(水) 10:20:42.79:G6mG3us50 そういうのは「言語」かってことだよ ISO/IEC14882は言語を定義する規格で、 GUIを定義する規格なら別の文書番号になるだろう OSを定義する規格がそうであるように : デフォルトの名無しさん (ブーイモ MM47-eJUM) [sage] 2018/12/19(水) 11:42:47.34:auFS4SnhM 標準ライブラリは最小限でいい派 標準のスレッドすら不要 大抵結局native handle使うはめになるし デバッガと連携しないし 一方でatomicは使えるな : デフォルトの名無しさん (ワッチョイ 8beb-TixW) [sage] 2018/12/19(水) 12:28:04.06:o9SPlDa00 お酒はぬるめの燗がいい 肴はあぶったイカでいい : デフォルトの名無しさん (ワッチョイ eb8a-S6R4) [sage] 2018/12/19(水) 13:04:47.28:RjqFkMVC0 質問です。 ノートPCのキーが勝手に連打されるような状態になったので、 「キー入力の連打を感知したら、連打された入力をキャンセルする」というソフトが欲しいのですが、 どこかにあるでしょうか? 無ければ、自作も考えますが、キー入力をキャンセルさせる方法がよくわかりません。 : デフォルトの名無しさん (ワッチョイ fa7e-UKyl) [sage] 2018/12/19(水) 13:13:01.18:4vZcLUvu0 キー入力のイベントをフックしてごにょればできるんじゃないの : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-UKyl) [sage] 2018/12/19(水) 13:24:01.60:i1OD7WIV0 いわゆるチャタリングってことかな。 ざっとググってみた感じだと ccchattttter や Keyboard Chattering Fix というソフトがあるみたいだね。 ソフトウェアとしては、他のプロセスが受け取るイベントを横取りすることになるから、 アプリケーションレベルでやるならフックを仕掛ける (DLL Injection など) か、 あるいはデバイスドライバのレベルでどうにかするという方法も考えられる。 : デフォルトの名無しさん (ワッチョイ eb8a-S6R4) [sage] 2018/12/19(水) 14:20:16.58:RjqFkMVC0 ありがとうございます。 > ccchattttter や Keyboard Chattering Fix さっそく、試してみました。 これらは、同じキーが連打された場合のみのキャンセルでしょうか? 違うキーが連続で誤入力されたりするので、その場合は対応できないかも? フックするというのは、どうやるのかわかりませんが、ちょっと調べてみます。 : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [sage] 2018/12/19(水) 14:42:07.56:Yvire5cb0 ttp://https://qiita.com/leon-joel/items/81415c1ef355c6246280 constexpr unsigned N = 10; std::array<int, N> arr = {{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }}; 2行目の 二重の中括弧は何を意味してる? どう解釈するの? : デフォルトの名無しさん (アウアウウー Sa4f-lCXb) [sage] 2018/12/19(水) 15:04:48.65:wepwiZF/a その制限c++14で撤廃してなかったけ(うろ覚え) : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/19(水) 15:27:41.05:G6mG3us50 それキーボードに異物が入ってないか? かつて俺が面倒見てた客先ではホチキスの針が原因の障害が複数回あったぞ 異物が入っていない正常な状態で起きるチャタリングは 設計の段階でしっかり対策されているはずなので それまで問題なかったキーボードが突然そういう状態になったのなら 何らかの事故を疑ったほうがいい : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [] 2018/12/19(水) 15:30:09.30:Yvire5cb0 ttp://https://www.codesdope.com/cpp-stdarray/ 以下の二種類あるらしいけど、何で2.の方は二重括弧になってるの? 外側の括弧の意味、内側の括弧の意味がそれぞれ知りたい。 1. std::array<int, 5> n = {1, 2, 3, 4, 5}; 2. std::array<int, 5> n { {1, 2, 3, 4, 5} }; : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdaa-DjeH) [age] 2018/12/19(水) 15:36:10.74:7xp8Igl8d std::arrayのメンバーの初期化リストになってる可能性。 : デフォルトの名無しさん (ワッチョイ 6acb-UKyl) [sage] 2018/12/19(水) 15:56:47.23:G6mG3us50 外側の括弧はコンストラクタへの実引数ならびを囲む 内側の括弧はコンストラクタの仮引数がinitializer_listであることに対応 = は、一時オブジェクトを作ってコピコンかムブコンという意味だったが C++17でこの意味が廃止され単なる過去の名残となった : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [sage] 2018/12/19(水) 16:12:08.78:Yvire5cb0 つまり、2. の方は、以下の記法の ()を{} に変えただけということ? 3. std::array<int, 5> n ( {1, 2, 3, 4, 5} ); つまり、コンストラクタ名を Xxxx とすれば、 Xxxx( リスト型 &list1 ) { } みたいな事になってるということかな。 : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [sage] 2018/12/19(水) 16:21:41.32:Yvire5cb0 ttp://https://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a00752_source.html ↑ libstdc++ の template struct(?) の array のソースを見てみたら、 // No explicit construct/copy/destroy for aggregate type. とコメントされていた。明示的なデストラクタが何も無いので、その {・・・} の部分は、コンパイラが初期化処理まで全部やってるってことなのかも 知れないけど、どういう仕組み? TYPE _M_instance[N] みたいなメンバがあるけど、ここにコンパイラが初期値を 書き込むんだろうか。どういう仕様なんだろう。 : デフォルトの名無しさん (ワッチョイ 9fe3-S6R4) [sage] 2018/12/19(水) 16:35:50.86:Yvire5cb0 まず、以下の 2, 3 のような書き方が出来て、それで array の場合は、 ああなるってことかな。まだよく分からん。 1. CPerson person = CPerson( 25, MALE, "Yamada Taro" ); 2. CPerson person = { 25, MALE, "Yamada Taro" }; 3. CPerson person { 25, MALE, "Yamada Taro" }; : デフォルトの名無しさん (アウアウカー Sa6b-SUIi) [] 2018/12/19(水) 16:41:39.76:yP9yNdl2a 贅沢なお願いなんですが OpenGLを使って 注視点を行列で回転させたいのですが どなたか参考になるサイトやソースが あれば頂けないでしょうか : デフォルトの名無しさん (ワッチョイ 1eeb-3flP) [sage] 2018/12/19(水) 19:25:23.79:UC31GMnJ0 std::arrayはpublicに内部の配列を公開してて、コンストラクタデストラクタを一切書かないことで集成体となって、その初期化は集成体初期化で行う 二重かっこの外側はarrayの初期化、内側のかっこはstd::array内部配列への集成体初期化 ただし、C++14以降は二重かっこを省略できる ttp://https://cpprefjp.github.io/lang/cpp14/brace_elision_in_array_temporary_initialization.html : ◆QZaw55cn4c (ワッチョイ aa60-D8NS) [sage] 2018/12/19(水) 20:44:10.56:C9bIO99C0 >バスアーキ 古い8086とかだったら書籍に載っていましたが、最近はどうでしょうか?わけのわからない仕様書しかないのでしょうか? : デフォルトの名無しさん (ワッチョイ 4ab3-UKyl) [sage] 2018/12/19(水) 23:24:40.75:vlvnW3Fh0 PCならPCI Expressだな : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/20(木) 01:57:39.19:Gok/GJGq0 なるほどだんだん分かってきた。 struct CPerson { int m_dat1[2]; int m_dat2[3]; }; なら、古い C の時代から、確か、 CPerson person = { {1,2}, {3,4} }; // (1) みたいに書けた。だから、 struct CMyArray { int m_dat1[5]; }; なら、 CMyArray a = { {1,2,3,4,5} }; // (2) と書けるのは当然、ってことだよね。それでC++14以降はさらに、 (1)の場合は、全部一列に並べて、 CPerson person = { 1, 2, 3, 4 }; //(1') と書ける様になった。結果として、(2)も、 CMyArray a = { 1,2,3,4,5 }; // (2') と書ける様になった。 そういうことだよね、多分。それでさらに、「=」を省略したような書き方も できると。そういえば昔から、コンストラクタを持つ CPerson の場合に、 1. CPerson person=CPerson(・・・); 2. CPerson person(・・・); は確か等価で引数つきのコンストラクタが呼び出されるんだった。 そして、新しい C++ では、小括弧 () を、波括弧 {} に書き換えることも 可能になったみたいな話で、 3. CPerson person=CPerson{・・・}; 4. CPerson person{・・・}; みたいなことも書けるようになったのかな。 : デフォルトの名無しさん (ワッチョイ cbeb-pJxC) [sage] 2018/12/20(木) 08:10:15.22:qx3kfu0o0 その通りだと思う 集成体以外で{}を使う初期化を一様初期化と呼ぶそう ttp://https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html : デフォルトの名無しさん (アウアウカー Sa51-9xJM) [] 2018/12/20(木) 11:33:42.81:pms7BJwLa 贅沢なお願いなんですが OpenGLを使って 注視点を行列で回転させたいのですが どなたか参考になるサイトやソースが あれば頂けないでしょうか : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/20(木) 13:08:35.90:zDBAwFJg0 確か、古くからある OpenGL の場合、GL_XXXX 見たいな定数を指定して、ViewMatrix 見たいなのを設定するんだったはず。 : デフォルトの名無しさん (ワッチョイ 6d23-1q7i) [] 2018/12/20(木) 13:58:01.82:P4Rv6f7s0 ttp://http://www.mss.co.jp/technology/report/pdf/19-08.pdf ttp://http://www.mss.co.jp/technology/report/pdf/18-07.pdf : デフォルトの名無しさん (ササクッテロラ Sp61-CdSM) [sage] 2018/12/20(木) 14:06:29.86:Stk2JPJbp スレチ ここにもゲ製作技術板にもGLスレあるだろ あとは線形代数の勉強しろとしか そんな手順の話じゃないと思うぞ : デフォルトの名無しさん (ドコグロ MM93-7dv0) [sage] 2018/12/20(木) 14:19:20.62:BW/0WCvFM スレチ : デフォルトの名無しさん (ワッチョイ f5d7-ESEE) [sage] 2018/12/20(木) 23:21:08.79:mxfZwT1A0 C++でこんな感じの構文見たんですが、どういったものなんでしょうか? 「const auto 関数名 = [変数名](引数) -> 戻り値の型」 例えば、以下のように書くとcに5が返ります。 int X; const auto hoge = [X](int a, int b) -> int { return a + b; } int c = hoge(2, 3); [X]のところは、宣言してある変数ならなんでもいいみたいですが、何者かよく分かりません。 : デフォルトの名無しさん (ワッチョイ 8dc3-d5oK) [sage] 2018/12/20(木) 23:27:13.41:KfVqhHRV0 ラムダ式でぐぐれ : デフォルトの名無しさん (ワッチョイ 05eb-WCtl) [sage] 2018/12/20(木) 23:32:09.33:Lef4v1AJ0 俺はラムダ式は認めんぞ : デフォルトの名無しさん (ワッチョイ f5d7-ESEE) [sage] 2018/12/20(木) 23:35:27.42:mxfZwT1A0 ラムダ式なんてものがあるんですね 知らなかった。。 : デフォルトの名無しさん (ワッチョイ 037e-q1e7) [sage] 2018/12/20(木) 23:46:51.76:P+SDVgfX0 ラムダ式使わない奴はNGだわ : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/21(金) 00:39:41.69:JoOPbSrC0 その[X]は、関数外部の変数 X を関数内部で使えるようにする意味があるらしい。 それを書いておかないと、グローバル変数やクラスのメンバ変数以外は、参照できなく なるようだ。 : デフォルトの名無しさん (ワッチョイ cbeb-pJxC) [sage] 2018/12/21(金) 00:49:34.51:kHtIL9Hb0 なにか書くよりはとりあえず[&]って書いといた方が良いと思う : デフォルトの名無しさん (ワッチョイ 457f-q1e7) [] 2018/12/21(金) 00:57:46.38:8z6lrJJh0 必要ないなら何も書くなよ : デフォルトの名無しさん (ワッチョイ cbeb-pJxC) [sage] 2018/12/21(金) 01:08:05.95:kHtIL9Hb0 よく分からないまま書いて、使えないー、コピーされてるーとか言うことになるよりはトラブル少ないかと思った 必要ないなら空はその通りだと思う : デフォルトの名無しさん (ワッチョイ bd7b-5YD5) [sage] 2018/12/21(金) 04:24:29.96:z0fETMsD0 キャプチャーが空のラムダ式は関数オブジェクトと互換性があるので、可能ならインライン展開も行われたりするから、必要ないなら書かない方がいい。 : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/21(金) 15:04:45.84:JoOPbSrC0 C++って、「関数オブジェクト」ってあるんだっけ? : デフォルトの名無しさん (スップ Sd43-odIk) [sage] 2018/12/21(金) 15:09:53.69:SQCtvUnrd C++で言う所の関数オブジェクトはoperator()をオーバーロードしたクラスのオブジェクトであって、それは大昔からある お前さんが思い浮かべてるカッコで括ったそれと同じものかどうかは知らん : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/21(金) 15:12:43.01:JoOPbSrC0 >お前さんが思い浮かべてるカッコで括ったそれと同じものかどうかは知らん 特に何も思い浮かべてないけど。 : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/21(金) 22:35:22.62:SVNbSsFy0 じゃあ「関数オブジェクト」という名前で呼ばれるものがC++に存在するかという質問? : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/21(金) 22:37:25.80:Co0MMJAt0 #include <stdio.h> class Hoge { int m_x; Hoge(int x) : m_x(x) { } int operator(int a, int b) const { return a + b + m_x; } }; int main() { int X = 10; Hoge hoge(X); int c = hoge(2, 3); printf("c=%d\n", c); // 15 } : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/21(金) 22:39:05.01:Co0MMJAt0 キャプチャがあるからインライン展開されない、というのは C++におけるラムダ式の存在意義を半否定している と思ったり 思わなかったり… : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/21(金) 22:42:29.52:Co0MMJAt0 ちなhoge[&X]の場合の伝統的な関数オブジェクト版はこういったカンジになるヨカン↓↓↓ #include <stdio.h> class Hoge { int& m_x; Hoge(int x) : m_x(x) { } int operator(int a, int b) const { return a + b + m_x; } }; int main() { int X = 10; Hoge hoge(X); int c = hoge(2, 3); printf("c=%d\n", c); // 15 X = 20; int c2 = hoge(2, 3); printf("c2=%d\n", c2); // 25 } : デフォルトの名無しさん (ワッチョイ cb80-5YD5) [] 2018/12/22(土) 00:09:01.87:b6CiPLFa0 バカほど新しもの好き : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/22(土) 00:11:23.62:lj97J/9W0 スマン訂正orz 誤: Hoge(int x) : m_x(x) { } 正: Hoge(int& x) : m_x(x) { } : デフォルトの名無しさん (ワッチョイ bd7b-5YD5) [sage] 2018/12/22(土) 02:02:20.62:NPmZd5n00 関数オブジェクトって言わないのかな、良くしらんがw つまり、 auto f1 = [](int x){ retrurn x;} auto f2 = [&](int x){ reutrn x; } この場合、f1の型は通常の関数ポインタ、f2の型はstd::functionになるということ。 : デフォルトの名無しさん (アウアウウー Sac9-zV84) [sage] 2018/12/22(土) 02:05:38.24:DIzquj+Ya f1もf2も型不明じゃなかった? : デフォルトの名無しさん (ワッチョイ bd7b-pJxC) [sage] 2018/12/22(土) 02:21:53.10:NPmZd5n00 不明というか、auto以外で受けるのを禁止されているだけで、内部的にはちゃんと型を持ってるでしょ。 たとえば、 void hoge(auto func(int x)->int) { ..... } こういう関数を作ったとして、f1は引数に渡せるけど、f2はエラーになるし、 f2を渡そうと思ったら、std::functionで受ける必要がある。 : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/22(土) 02:36:35.21:lj97J/9W0 関数オブジェクト==ファンクタ 多分、 >この場合、f1の型は通常の関数ポインタ、 mjk、 に関数ポインタにならずにすむからくりまで示したのに… f2はテンプレート引数で渡せば良い 主にそういう目的のブツのはず : デフォルトの名無しさん (ワッチョイ cbeb-pJxC) [sage] 2018/12/22(土) 02:43:48.49:6gYvZ8/20 f1は同じシグネチャの関数ポインタに暗黙変換可能、であるだけで型自体はコンパイラ依存のラムダ式の型 : 756 (ワッチョイ 05bd-4M5M) [sage] 2018/12/22(土) 02:47:42.19:lj97J/9W0 スマンf2はテンプレート引数で渡せば良いは撤回 普通にf1を引数渡ししてインライン展開を気体するものでだいたい合ってるはず… : デフォルトの名無しさん (ワッチョイ 8dc3-d5oK) [sage] 2018/12/22(土) 06:27:13.75:K2b4MxYI0 関数ポインタに変換できるのはqsortとか昔のインターフェースに渡すのに便利なだけで 今から書くコードで積極的に使うもんじゃない : デフォルトの名無しさん (ワッチョイ bd7b-pJxC) [sage] 2018/12/22(土) 09:28:59.71:NPmZd5n00 関数ポインタとstd::functionじゃ実効コストが全然違うから、用途によって選べば良い。 qsortみたいな用途だったら、新しく書くコードでも関数ポインタが適していると思うけどね。 : デフォルトの名無しさん (ワッチョイ 8dc3-d5oK) [sage] 2018/12/22(土) 10:10:26.54:K2b4MxYI0 比較関数を動的にとっかえひっかえするんじゃなかったら全く適してないぞ : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd43-NaUf) [sage] 2018/12/22(土) 10:15:50.91:Op/4E6E/d インライン展開のできるstd::sortが最速なんじゃ。 : デフォルトの名無しさん (アウアウウー Sac9-zV84) [sage] 2018/12/22(土) 13:40:32.94:DIzquj+Ya 関数ポインタよりstd::functionの方が遅いんじゃないの? : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd43-NaUf) [sage] 2018/12/22(土) 14:28:59.21:Op/4E6E/d ttp://https://stackoverflow.com/questions/16729941/are-stdfunctions-inlined-by-the-c11-compiler std::functionよりテンプレートの方が早いみたいだね。 : デフォルトの名無しさん (ワッチョイ 1bcd-EJDH) [sage] 2018/12/22(土) 15:14:07.07:+oRc8mMV0 ポインタはどう頑張ってもポインタだが関数オブジェクトならインライン展開される可能性がある : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/23(日) 11:18:27.58:AQ4G8Wg10 クロージャみたいなものと、 関数の静的型チェック、自発的なメモリ管理 って恐ろしく相性悪いと思われる。 そんな無理するくらいならおとなしく継承、オーバーライド使った方がマシ。 : デフォルトの名無しさん (ワッチョイ 95b3-Kal0) [] 2018/12/23(日) 13:14:37.02:zy+sQveZ0 キャッシュミスを許さない会。 : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/23(日) 13:27:07.40:swCrUp5Z0 静的型チェックとクロージャの相性が悪いところってたとえばどんな? : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/23(日) 17:41:57.71:Wgmswpxd0 最近、QueryPerformanceCounter() を使って色んな速度測定をしていたら、 32バイトくらいの memcpy() でも、数マイクロ・セカンド位(1.0*10^(-6)(s))かかる事が分かった。 ちなみに、1クロックは、3.3 * 10^(-10) 位なので、たった32バイトに1万クロックくらいかかって いる事が分かった。 ためしに単純な for ループと DWORD *ptr で転送してみても結局、それ位の 小さなサイズだと、同じくらいかかることも判明。 同じマシンでも、もっと大きなサイズのコピーだと、for ループで行っても、 1回のループで、4クロックくらいしかかからない。 推測だが、jmp 命令は、10バイト程度前の番地に戻る程度でも、ループ回数が 少ない場合は、物凄く極端に遅いが、ループ回数が多くなるとなんと1クロックで 実行できるようになるらしい。 ただし、余り定かではない。 : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/23(日) 17:45:32.05:Wgmswpxd0 それか、QueryPerformanceCounter() の精度の問題かもしれない。 いくらなんでも、32バイトで1万クロックは遅すぎるように思う。 ちなみに、Sleep(1000); とすると、ちゃんと、1.0 (s) と表示されるので、 速度の計算ミスではないはず。 : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/23(日) 17:57:02.41:Wgmswpxd0 そうか、これは、RDTSC 使ってないのか・・・。 「高分解能」と言っても、1.0 マクロセカンド位の精度だったとは、予想外・・・。 : デフォルトの名無しさん (ワッチョイ 95b3-o5ET) [sage] 2018/12/23(日) 19:37:24.93:V9dsb1PW0 スレッドのディスバッチ、キャッシュのヒットミス、パイプラインストール、バスのI/O待ち、etc…。 memcpy1つとってもそうそう単純なものではない。 : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/23(日) 19:56:30.39:AQ4G8Wg10 引数がどんな型を持つ関数を渡すかを事前にどこで決めるかが問題だし、 それ事前に決められるならクロージャーの必要性は低くなるだろ。 あと資源解放のタイミングをどうするかを明示させるシンタックスってのは多分相当難しい。 その辺、クロージャーを用意する言語は普通はGCに任せる。 : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/23(日) 20:38:33.04:swCrUp5Z0 クロージャって関数とその外側の環境を合わせたものだろ。 「関数を渡す」って何がどこに関数を渡す話なんだろうか。 : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/23(日) 21:40:29.80:AQ4G8Wg10 色々シチュエーションは考えらるだろうけれどreactなら var ChildInput = React.createClass({ _onChange: function (e) { this.props.onChange(e.target.value); } } ) とかするやつをイメージしてる。 : デフォルトの名無しさん (ワッチョイ 95b3-aRw3) [sage] 2018/12/23(日) 22:50:15.98:zy+sQveZ0 キャッシュミスは犯罪です。 : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/23(日) 23:48:12.36:UknIutZS0 >クロージャって関数とその外側の環境を合わせたものだろ それは新たな関数を作ったことになるんじゃー の > int X = 10; > Hoge hoge(X); という部分は、f(a, b) = a + b + 10という関数を作ってゐる Xを変えることによってg(a, b) = a + b + 9とかh(a, b) = a + b + 8とか Hogeクラスのクロージャでいくらでもバリエーションを作れる : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/24(月) 00:09:16.83:MCFE6K0T0 で言えばHoge::operator()が関数でm_xがその外側の環境だろ。 そこで関数を渡すとか作るとかあるいは静的型チェックと相性が悪いというのが どういうことを言っているのかわからん。 関数オブジェクトを作ってるというならわかるけど。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/24(月) 01:08:30.96:+hyoXfJx0 C++ のラムダ式は関数オブジェクト生成の構文糖でしかないので、 従来と比べて特に良くなったり悪くなったりするわけはない。 オブジェクトの寿命の管理がやりづらいってのは C++ では今更な話で、 ラムダ式がどうこうとか言ってもしょうがなくない? : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/24(月) 01:17:53.78:GJkiS2EE0 >m_xがその外側の環境だろ オブジェクトhogeの中に囲い込まれている(キャプチャされたブツである)からちげう hogeをコピーしたり別の関数に引数渡ししたら付いていくという意味でも外側の環境ではない : デフォルトの名無しさん (ワッチョイ 95b3-6UAB) [] 2018/12/24(月) 01:47:35.44:SeeEk3oh0 諦めたらそこで終了だよ!!! : デフォルトの名無しさん (ワッチョイ 6d1b-HeWt) [sage] 2018/12/24(月) 03:46:32.26:6FDZj5qC0 長時間のプログラム終了を手元のスマートフォンで確認したい(メールなど)という願望からそういったプログラムを書きたいんですがさっぱり分かりません 開発環境はvisual studioです : デフォルトの名無しさん (ワッチョイ cb80-JI52) [sage] 2018/12/24(月) 06:57:18.93:N0NAok1A0 普通に、Linux コマンドを並べたら、1・2の順番で実行される。 PowerShell でも良い command_1 ; command_2 ; コマンド1 が終わったら、メール送信するなら、 command_1 ; メール送信 ; 複雑な処理は、コマンド・シェルスクリプトよりも、Ruby などで作る方がよい : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/24(月) 07:58:21.71:RySeMjgB0 今は知らんけど、数年前だったら、メール送信は知識が結構必要だった。 SendMail Transfer Protocol なるものを使うんだけど、それを便利に発行できる 関数なりCUIプログラムがあれば使えるんだけども。 : デフォルトの名無しさん (ワッチョイ ade3-u0Vw) [sage] 2018/12/24(月) 08:02:13.26:RySeMjgB0 Linux だったら、aaa.txt に以下のような内容を書いて、 --------------------------------------- From: my@mail.address (あなたのメールアドレス) To: foo@example.com Subject: This is test mail. (ここに空行を入れる。ここまでがヘッダ。ここから先がボディ) メールの内容 .(ドットのみの行を入力すると終了) --------------------------------------- $ sendmail foo@example.com < aaa.txt とすると後れるらしい。sendmail は、CUI コマンド。 だから、VisualStudio からだと、 system( "sendmail foo@example.com < aaa.txt" ); とすれば、sendmail コマンドが存在しているなら動作する。 : デフォルトの名無しさん (ワッチョイ cb80-JI52) [sage] 2018/12/24(月) 08:28:06.03:N0NAok1A0 Linux に、mail コマンドある : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/24(月) 08:57:29.99:MCFE6K0T0 で言っている関数の外側の環境って意味だよ。それがクロージャの中なのは当然。 いいかげん、元の「関数を渡す」って話からずれまくっているが、結局どういうことを言いたいんだろう。 : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/24(月) 10:01:04.57:JYq0MjYj0 いやだからc++なら継承でメソッドでオーバーライドする方が わかりやすいし、資源も管理しやすいんじゃない?って話。 他の言語にあるからみたいな理由で合わんもの入れてもなということなんだけど。 : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/24(月) 11:33:35.23:GJkiS2EE0 >結局どういうことを言いたいんだろう。 クロージャ=関数 特に()のオーバーライド(int Hoge::operator()(int a, int b) { ... })までやった場合、 HogeクラスのインスタンスhogeはC++の構文的にも関数同然に機能の呼び出しを行える (関数オブジェクトとかファンクタとか呼ばれるやつになる >元の「関数を渡す」って話 クロージャ=関数なのであるから、クロージャを、クロージャを受け取る他の関数またはクロージャに渡すという話、-- (A) 継承を使う場合のsome_typeのベースクラスをsome_typeのベースクラスを受け取る他の関数に渡すことに対応する --(B) この場合、クロージャを使うやり方に対する継承を使うやり方のデメリットは… 、と静的型チェック周辺の話に持っていくことができるが、その前に(A)や(B)が共通認識になったのか、それとも理解不能なのかどうか確認しておきたい : デフォルトの名無しさん (ブーイモ MM59-Lq2G) [sage] 2018/12/24(月) 12:11:45.35:up8qL/8xM デリゲートとクロージャを混同してるって話? : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/24(月) 12:34:04.96:MCFE6K0T0 >クロージャ=関数 そういう前提で言っていたのか? ID:AQ4G8Wg10は明らかにクロージャと関数を使い分けているようだが。>>773 じゃあそこは了解したとして、(A)(B)の条件の下でもう一度の質問をするよ。 関数の静的型チェックとクロージャの相性が悪いところってたとえばどんな? : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/24(月) 12:42:22.68:GJkiS2EE0 デリゲートは、オブジェクトを参照キャプチャするクロージャと同じ (マルチキャストみたいなおまけ機能もファンクタとして実現したクロージャになら追加できる ファンクタとしてクロージャする分には型安全性も同等なので、ファンクタとデリゲートは混同上等のはず… : デフォルトの名無しさん (ワッチョイ 05bd-4M5M) [sage] 2018/12/24(月) 12:55:51.01:GJkiS2EE0 >関数の静的型チェックとクロージャの相性が悪いところってたとえばどんな? 知らん はクロージャの実現方法について黒魔術的な何かを想定しているのではないか… C++におけるクロージャの簡単な実現方法はファンクタ、であって、ファンクタには特に型安全や資源解放に関するファンクタ固有の問題は無いと思う 何しろファンクタは普通のクラスHogeの普通のインスタンスhogeとして風に書けるので… 一方、広義のクロージャは、変数を束縛するしくみ=クロージャなので、型安全という概念をそもそも含まない この広義のクロージャをC++上で実現しようとしているのだとしたら知らん : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/24(月) 13:03:08.89:+hyoXfJx0 > いやだからc++なら継承でメソッドでオーバーライドする方が > わかりやすいし、資源も管理しやすいんじゃない?って話。 だからそんなことはないと私は述べてる。 ラムダ式を使いたいときというのはほとんどの場合は小さな関数を作りたいときなんだよ。 それも一回しか使われないような使い捨てのものをだ。 使い捨てるのならば、別の場所で定義して (名前を付けて) から使うのはまわりくどい。 わかりにくくて管理しづらくなる。 もちろん、場合によってはラムダ式が適さない場合だってある。 そういう場合まで何もかもをラムダ式に置き換えろってんじゃないだ。 ラムダ式が適しているときにラムダ式を使えってだけのことで、しかもそれは案外に多いってことだ。 : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/24(月) 13:07:57.67:MCFE6K0T0 ああわかった。 ではクロージャと関数を区別して書いていたのに対して、は単に >クロージャ=関数 と言いたかっただけなんだな。 : デフォルトの名無しさん (ワッチョイ c5f2-5YD5) [sage] 2018/12/24(月) 13:15:42.46:MCFE6K0T0 アンカー間違えた。じゃなくてか。 : 963 (ワッチョイ 05bd-4M5M) [sage] 2018/12/24(月) 14:08:48.90:GJkiS2EE0 訂正orz 誤: 変数を束縛するしくみ=クロージャ 正: 変数を束縛して作った関数(ただし束縛すべき変数のリストが空のときもある)=クロージャ 型安全な言語なら型安全に、そうでない言語でもそれなりにやっぱクロージャ=関数ェ、 : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/24(月) 18:39:17.08:JYq0MjYj0 >ラムダ式を使いたいときというのはほとんどの場合は小さな関数を作りたいときなんだよ。 >それも一回しか使われないような使い捨てのものをだ。 ここが自分の感覚と違う。 ラムダ式を使いたい時ってもう少し動的な関数作成に関わる場合という感覚。 単に名前付けを省略したいくらいならどうとでもなると思うし、個人的にはそんな興味ない用途。 : デフォルトの名無しさん (ワッチョイ 8dc3-d5oK) [sage] 2018/12/24(月) 20:19:23.43:5oUfBIDD0 C++のラムダ式でどうやって動的関数生成なんかやるの? 何かを根本的に勘違いしてるとしか思えない : デフォルトの名無しさん (アウアウウー Sac9-zV84) [sage] 2018/12/24(月) 20:43:50.96:NsJUy6rqa 生成と作成は違う・・・ : デフォルトの名無しさん (ワッチョイ 037e-q1e7) [sage] 2018/12/24(月) 20:57:22.56:xV9Qcj/20 どうやって動的に生成するんだ : デフォルトの名無しさん (ワッチョイ a3b3-bdUi) [sage] 2018/12/24(月) 21:38:45.00:SeZ4reQO0 jsのノリをc++に持ち込もうとして、 面倒だってぶつくさ言うやつ定期的に現れるよな なぜc++使おうとしているのか、自分を見つめ直した方がいいぞ : デフォルトの名無しさん (ワッチョイ 95b3-6UAB) [] 2018/12/24(月) 22:54:19.63:SeeEk3oh0 Javascriptのほうが速いのにな。 : デフォルトの名無しさん (ワッチョイ ade3-ESEE) [sage] 2018/12/24(月) 23:31:10.01:RySeMjgB0 有り得ない。 : デフォルトの名無しさん (ワッチョイ 95b3-6UAB) [] 2018/12/24(月) 23:33:25.79:SeeEk3oh0 さてはオヌシ、Javascript使ったことござらんな。 : デフォルトの名無しさん (スッップ Sd43-/Sup) [] 2018/12/24(月) 23:40:50.37:osgTLlKWd 何が速いの : デフォルトの名無しさん (ワッチョイ e35d-ivsE) [sage] 2018/12/24(月) 23:56:41.67:ckTogqpu0 ガイジやん : デフォルトの名無しさん (ワッチョイ 23d2-5YD5) [sage] 2018/12/25(火) 00:08:46.01:66hcSiRr0 new演算子について教えてください。 自分で定義したクラスをインスタンス化してグローバル変数として扱いたいです。 グローバル変数には実体がないといけないと思うのですが、new演算子は ポインタにしか使えないですよね? この場合どうしたらいいでしょうか : デフォルトの名無しさん (ワッチョイ e3a8-9ZqA) [sage] 2018/12/25(火) 00:19:05.74:wezhkWA50 newなんか使わずそのままグローバル変数として myclass mc; とか定義すればよい : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/25(火) 00:20:38.06:C9xreq1F0 いやだからc++でなんでラムダ式とか入れちゃうのかっていう話をだね。。 jsのノリを無理やり入れたがってるのはc++の仕様の方で別に俺は入れたくない って意見なのだが。 : デフォルトの名無しさん (ワッチョイ 037e-q1e7) [sage] 2018/12/25(火) 00:27:18.17:elDAcQKF0 wwwwwwwww : デフォルトの名無しさん (アウアウウー Sac9-zV84) [sage] 2018/12/25(火) 00:50:16.50:MFQdZUcza 無名関数としてのラムダはないと困る。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/25(火) 00:53:54.64:HIPAf7J10 オブジェクトとクロージャはメカニズム的には似たようなもんだ という感覚は言語処理系に明るい人の感覚としては元々ある。 C++ にラムダ式が追加される前に書かれたこの記事が面白いよ。 "クロージャとオブジェクトの微妙な関係" ttp://http://www.itmedia.co.jp/enterprise/articles/0703/29/news069.html JavaScript の「オブジェクト」だって、その内実は環境への操作だ。 つまりはクロージャを基礎にしてオブジェクトに見せているんだから、 その逆をやる言語があったって別に不自然なことではなかろ。 : デフォルトの名無しさん (ワッチョイ 23d2-5YD5) [sage] 2018/12/25(火) 01:47:45.90:66hcSiRr0 なるほど! 教えてもらったとおりnew使わないでできました! : デフォルトの名無しさん (ワッチョイ cb80-JI52) [sage] 2018/12/25(火) 03:05:41.87:hUN0giiJ0 クラス・クロージャは、同じ。 関数・メソッドから、引数渡しでもないのに、外側の変数を参照できるから Ruby のブロックがクロージャ。 ブロックの外側の変数が参照できる 一方、Ruby の関数は、外側の変数を参照できないから、 JavaScript, Python, PHP よりも、すごい強固 Ruby だけは、クロージャの外に、関数をスコープを作っている。 さらに関数の外側がクラスで、クラスの外側がモジュール モジュール > クラス > メソッド(関数) > ブロック(クロージャ) Ruby 独特の構造! : デフォルトの名無しさん (ワッチョイ 4bf2-q1e7) [sage] 2018/12/25(火) 17:51:31.77:Twr4vy9N0 エディッタだけで、Visual Studioコンパイル済まで持って行けた。。。 : デフォルトの名無しさん (ワッチョイ 2312-OVaG) [sage] 2018/12/25(火) 18:10:25.20:Ra4BufOa0 サンタさんがくれた素敵な奇跡。だからその瞬間を宝物にして、書き込みしたくなっちゃうんですね : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/25(火) 18:35:59.59:HIPAf7J10 恥ずかしいセリフ禁止! : デフォルトの名無しさん (ワッチョイ f54e-Wbbf) [sage] 2018/12/25(火) 18:44:45.00:C73Cga6+0 はちみつ餃子さんってC++を使ってる業務に就いてるんですか? : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/25(火) 18:50:42.42:HIPAf7J10 前にも書いたことあると思うけど、ワイは完全に趣味でやっとる人やで : デフォルトの名無しさん (ワッチョイ 95b3-lUk2) [sage] 2018/12/25(火) 19:33:29.77:C9xreq1F0 理解が深まった。ありがとう。 しかし理解すればするほど、c++ならやっぱクラス生成でよくね?って気になるが。 : デフォルトの名無しさん (ワッチョイ 8dc3-d5oK) [sage] 2018/12/25(火) 19:48:34.00:KqaRCMCm0 クラス生成するのがC++のラムダ式なんだが : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-q1e7) [sage] 2018/12/25(火) 21:36:34.76:HIPAf7J10 繰返して述べるが、 C++ のラムダ式は単純なクラスの定義と使用を同時に出来る構文糖でしかない。 何故か「クロージャ」と混同した書き込みがあるが (もちろんいわゆるクロージャの概念からおおいに影響は受けているのだろうが) C++ のラムダ式は C++ に新しい概念を導入するものではない。 : デフォルトの名無しさん (アウアウウー Sac9-zV84) [sage] 2018/12/26(水) 00:41:02.88:qfoPSrF6a c++の属性構文が出来たけどc++17で不明な属性は無視するという規定が出来たからには、コンパイラによっては独自の属性があるの? : デフォルトの名無しさん (ワッチョイ 4bd7-q1e7) [sage] 2018/12/26(水) 06:42:20.48:GQqJjkng0 > C++ のラムダ式は C++ に新しい概念を導入するものではない。 これはさすがに言い過ぎ 関数型のリテラルという概念は C++98 にはなかった だから C++11 になったとき新しく憶えた 既存の概念の組み合わせでできているから 割とすんなり憶えられたけどね : デフォルトの名無しさん (ドコグロ MM93-ckn8) [sage] 2018/12/26(水) 07:11:59.75:Y8+MwfS4M 元々各社の属性指定方法を統一化したものだし : デフォルトの名無しさん (アウアウウー Sac9-6UAB) [] 2018/12/26(水) 21:22:57.27:qfoPSrF6a VC++で[[deprecated]]使ったら警告じゃなくてエラーになっちゃう。 いやまあ正解なんだけどさ・・・ : デフォルトの名無しさん (ワッチョイ b6d7-SF4R) [sage] 2018/12/27(木) 10:07:41.48:1rJdmURK0 ん、cl.exe の 19.16.27024.1 では通るが? : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/27(木) 18:09:20.50:DLCsZ7Bsa 警告になる? : デフォルトの名無しさん (ワッチョイ b6d7-SF4R) [sage] 2018/12/28(金) 06:03:28.17:4iocbykD0 ならない : デフォルトの名無しさん (ワッチョイ b6d7-SF4R) [sage] 2018/12/28(金) 06:04:31.02:4iocbykD0 つーか、[[deprecated]]って書いてある関数を使っても警告しないのはつまらない : デフォルトの名無しさん (ワッチョイ 91e3-h5Ay) [sage] 2018/12/28(金) 15:46:17.14:50PB7VSs0 Emscripten で、マウスの動きに合わせて JS の canvasに直線を描いたりする ようなGUIプログラムを作って試していて、local auto 変数に確保した 16バイトの char 配列に、sprintf で色の #RRGGBB の文字列を合成 して JS に渡して canvas の context の style に直線の色を設定していた。 で、同時に、KeyDown イベントでで20文字ほどのグラフィック文字列を出して いた。なお、そっちの方でも、全く同じ関数を使って、上記の色の文字列 を合成していた。 すると不思議なことに、KeyDownイベントで文字列を書いた後は、 必ず、直線の方の色が変わってしまう。必ず青色で書くようにしているはずなのに。 ログをとってみると、 char szBuf[16]; sprintf(szBuf, "#%02X%02X%02X", r, g, b); で szBuf に対して、最後の 0終端文字が、書き込まれていないことが判明。 よく見ると、KeyDownイベントで色のためではなく、出力したい 文字列そのものの文字の一部が直線描画の方の szBuf の #RRGGBB の直後に 残ったままコピーされているように振舞っていた。 ためしに、sprintf() の命令の直前に、memset(szBuf, 0, 16); とすると 正常化することも確認した。 Emscripten のライブラリの不具合だろうか? : デフォルトの名無しさん (ワッチョイ 91e3-h5Ay) [] 2018/12/28(金) 16:23:41.67:50PB7VSs0 char szCol[16]; memset( szCol, 0, 16 ); memset( szCol, 'W', 10 ); szprintf( szCol, ・・・ ); とした場合は、W の文字が残ったままになることも分かった。 : デフォルトの名無しさん (ワッチョイ 91e3-h5Ay) [sage] 2018/12/28(金) 16:55:00.81:bcsUwMQ/0 szprintf() の直後に szCol[7] = 0; とすると、正常化することも分かった。 : デフォルトの名無しさん (ワッチョイ 5ad2-4fyn) [sage] 2018/12/28(金) 19:27:07.61:NSIH2Vow0 C++でクラスポインタにnewしたオブジェクトを配列の様に複数作りたいのですが、 エラーがでてしまいます。 ポインタの宣言 TimerParameter *_timerParameter; インスタンス化 _timerParameter[_timerSize] = new TimerParameter(time, function, one_loop); TimerParameterコンストラクタ TimerParameter::TimerParameter(ULONG time, void(*function)(), bool one_loop) { _function = function; _oneLoop = one_loop; _timeSpan = time; resetTimer(); } 自分で作ったTimerParameterクラスをnewして_timerParameterメンバに入れると以下のエラーが発生してしまいます sketch\timerState.cpp: In member function 'bool TimerState::timerSet(long unsigned int, void (*)(), bool)': timerState.cpp:14:30: error: no match for 'operator=' (operand types are 'TimerParameter' and 'TimerParameter*') _timerParameter[_timerSize] = new TimerParameter(time, function, one_loop); インスタンス化の左辺が適切でないのが原因だと思うのですが、この書き方はダメなのでしょうか? : デフォルトの名無しさん (ワッチョイ 1ab3-iuWP) [sage] 2018/12/28(金) 19:48:22.38:S+ORIZ660 配列の実体がないじゃん : デフォルトの名無しさん (ワッチョイ 5ad2-4fyn) [sage] 2018/12/28(金) 20:14:43.49:NSIH2Vow0 newすれば実体確保できるとの認識でしたが、やはり別に実体を用意しないといけないのでしょうか ttp://https://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/newdelete.html : デフォルトの名無しさん (ワッチョイ aa7e-SF4R) [sage] 2018/12/28(金) 20:30:07.39:t3Tixi/x0 ポインタの配列が無いって話だろ : デフォルトの名無しさん (ワッチョイ 71e3-5EXd) [sage] 2018/12/28(金) 21:37:00.90:IR9VtjpT0 _timerParameter[_timerSize]の型はTimerParameter new TimerParameter(...)の型はTimerParameter * あと、 Type * ptr; ptr[2] = createType(); なんてやっちゃダメなのわかってる? Type * ptr; ptr = new Type[10]; ptr[2] = createType(); ならいいんだけど あと、"_"で始まる名前は処理系予約だし timeはcの標準関数にtime_t time(time_t *t);があるんでやめれ : デフォルトの名無しさん (ワッチョイ 5523-sckh) [sage] 2018/12/28(金) 23:30:44.23:2sBVkvJt0 アンダーバー2つかアンダーバー+大文字で始まるものが予約されてるだけでアンダーバー+小文字で始まるのは大丈夫 : デフォルトの名無しさん (オイコラミネオ MMad-vEXr) [sage] 2018/12/28(金) 23:49:39.38:foyNhCLxM vector<vector<float>> = { {1.33333334, 3.99918277}, {2.56883338, 1.29994666} } このようにvector<vector<float>>をdouble型の要素で初期化しようとすると縮小変換が必要とのエラーが出ます どうしたら縮小変換しつつ初期化出来るんですかね? : デフォルトの名無しさん (ワッチョイ 7a74-EZHq) [sage] 2018/12/29(土) 00:24:51.94:igG8GHWt0 floatのリテラルを使わない理由が分からない : デフォルトの名無しさん (ワッチョイ 6905-1n9i) [sage] 2018/12/29(土) 02:57:26.73:9LI18QIG0 >ならいいけど よくないだろ。なぜコピーさせるのか : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/29(土) 06:39:32.70:2E+KpNh/a 数字の末尾にf : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/29(土) 06:40:13.70:2E+KpNh/a もしくはstatic_cast<float> : デフォルトの名無しさん (ラクッペ MMa5-O+vW) [sage] 2018/12/29(土) 17:02:40.74:UQDnLnHIM BoostやSTLのDeveloperになりたいんですけど、テンプレートを極めればなれますか? : デフォルトの名無しさん (ワッチョイ 61c3-WBK1) [sage] 2018/12/29(土) 17:05:30.58:mHcV7M6o0 テンプレートに限らずC++を極めてるのは当然の前提として Developerとして参加するプロジェクトをどうしたいとか、どんな価値を提供できるかとかが重要じゃないかな : デフォルトの名無しさん (ワッチョイ aa7e-SF4R) [sage] 2018/12/29(土) 17:17:06.00:U1nQeVxJ0 BoostならBoost相当の性能のライブラリを作って水準に合うドキュメントと何故それがBoostに必要なのか説明する提案書を書いて提出すれば100回リジェクトされる頃には採用されるかも知れない : デフォルトの名無しさん (ラクッペ MMa5-O+vW) [sage] 2018/12/29(土) 17:35:17.80:UQDnLnHIM C++をより良い言語にしたいです 今はアルゴリズムの研究をしてるのですが、C++をより良い言語にしたいと個人的に思ってるのと、自分が作った言語機能を人に使ってほしいんです Boost‥ 100回リジェクトされた頃には相当な経験が詰めるはずなので挑戦してみます : デフォルトの名無しさん (ワッチョイ 61c3-WBK1) [sage] 2018/12/29(土) 17:56:06.46:mHcV7M6o0 C++自体を改良したいなら標準化委員会に行くかコンパイラの開発に参加しよう : デフォルトの名無しさん (ラクッペ MMa5-O+vW) [sage] 2018/12/29(土) 18:16:38.42:UQDnLnHIM どっちも検討してみます : デフォルトの名無しさん (ワッチョイ 697b-4fyn) [sage] 2018/12/29(土) 18:34:59.20:EkrQifAZ0 すばらしい、C++標準化に参加して、文字コードの扱いの混乱した現状をなんとかしてほしいw char型はwindowsがsjis、それ以外がutf8、 wchar型は64bit linuxが32bitで、それ以外は16bit、 どのプラットフォームでも同じようにつかえるchar16_t/char32_tはAPIやライブラリが未整備な上、エンディアンの問題がつきまとう、 と、マルチプラットフォームで各種文字コードの透過的な相互運用は事実上不可能な状態だからな…… : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/29(土) 18:45:45.22:fhXB+EYEa bomの有無とか? : デフォルトの名無しさん (ワッチョイ 697b-4fyn) [sage] 2018/12/29(土) 19:04:16.27:EkrQifAZ0 そう、それな、ポータブルな保存形式はutf8で良いと思うんだけど、BOMの有無とか、冗長コードの問題とかで実際にやってみると意外と面倒なんだよね。 : はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ae6f-SF4R) [sage] 2018/12/30(日) 05:24:49.23:I1/5m0WE0 Windows では Shift_JIS (CP932) という前提もホント駄目な勘違い。 : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/30(日) 08:17:58.30:vtZx8IN+a visual studioはいろんなエンコードに対応してるように見せかけてshift-jis前提で動いてる気がする。 デバッガでpngのシグニチャ確認したら臼ngとなるとか、コメントにπを書いたら赤の波線が出るとか。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdfa-Pp1Z) [sage] 2018/12/30(日) 11:01:04.79:KcpheNgcd ユーザーのコードページを変える以外に方法がないらしい。 : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/30(日) 11:15:52.66:vtZx8IN+a 方法あったの!? : デフォルトの名無しさん (ワッチョイ 95f2-4fyn) [sage] 2018/12/30(日) 11:36:24.11:JDxg8BDU0 Windowsの言語パック入れて表示言語を選択すればたぶん変わる。 : デフォルトの名無しさん (ワッチョイ aa32-SF4R) [sage] 2018/12/30(日) 11:43:21.51:TL6Cx54I0 windowsは英語設定安定 : デフォルトの名無しさん (ワッチョイ 694e-4fyn) [sage] 2018/12/30(日) 11:59:41.73:bm6ZOgnS0 まぁ、マイクロソフトも徐々にUTF8を標準サポートにする方向みたいだから、2〜3年したらVisual Studioもデフォルトがutf8になるかもね。 エンディアンの問題も、x86,ARMに続いてRISC-Vがリトルだから、流れとしてはリトルで統一ってことになるのかな。そうなったら楽でいいなw : デフォルトの名無しさん (ワッチョイ 1a01-SF4R) [sage] 2018/12/30(日) 13:40:53.27:Ux/rKcR40 RISC CPUが出始めたときはビッグの勢いあったけど 結局リトルに収斂したな おれは昔からリトルが自然と感じてたのでいい流れだ ネットとの相性が悪いのは残ってしまうが : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 13:46:05.24:31DgsdhN0 Emscripten で Cソース中に以下のようなプログラムを作ると、MyPrintf()内の (2) で (3)の vsprintf() を呼び出そうとした瞬間に、なぜか (4) に来ずに、 (5)に戻ってきて a4 に制御が戻って来てしまうことが判明。タイマーイベント を使ってる。誰か原因の見当が付く人いない? EM_ASM( { function js_OnTimer() { console.log( 'begin of js_OnTimer()\n' ); //a1 var cl_OnTimer = Module.cwrap('OnTimer', 'number', ['number']); console.log( 'js_OnTimer(), before calling cl_OnTimer(1)\n' ); //a2 var rc = cl_OnTimer(1); //a3 console.log( 'js_OnTimer(), after calling cl_OnTimer(1)\n' ); //a4 console.log( 'end of js_OnTimer()\n' ); //a5 } setInterval(js_OnTimer, 1000); }); extern "C" int OnTimer( int a ) { OnTimerCore(); return 0; } void OnTimerCore() { MyPrintf( "begin(MyPrintf) of OnTimerCore(), %d", 123 ); // (1) printf( "begin(printf) of OnTimerCore(), %d\n", 456 ); // (5) } : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 13:46:34.18:31DgsdhN0 void MyPrintf( const char *pszFormat, ... ) { char szBuf[2048]; va_list va; va_start( va, pszFormat ); EM_ASM( { console.log( 'MyPrintf, before call vsprintf()\n' ); }); //(2) vsprintf( szBuf, pszFormat, va ); // (3) EM_ASM( { console.log( 'MyPrintf, after call vsprintf()\n' ); }); //(4) va_end( va ); } : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 14:57:17.90:31DgsdhN0 原因は、main 関数の最後に書いておいた、次のループにあった : for ( ;; ) { emscripten_sleep(36000000); // 何日間も待つ。 } このループをコメント・アウトするだけで、vsprintf() が1つ前の戻り先に 戻ってしまう不具合も、sprintf() が 0 終端文字を書いてくれない不具合も 共に起きなくなった。 このループを書いていたのは、Emscripten 1.35 で、かつ、 wasm ではなく、asm.js で試していたときに、キー押下イベント などが発生した時に Assertion failed: the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits) というエラーが出るためだった。つまり、main() 関数が終わると、 「ランタイム」(ランタイム・ライブラリ?) も終了してしてしまうので、 main() を終わらせられなかった。だから、main() の最後に、なんらかの 無限待機の仕組みが欲しくなって書いていたのだった。 現在は このループを除去しても警告が出なくなっているが、 Emscripten の Version を上げたせいか、asm.js ではなく、wasm の方を 使うようになったせいかは分からない。 : デフォルトの名無しさん (ワッチョイ 557c-Oscs) [] 2018/12/30(日) 16:16:05.88:Y/PcKL5Q0 なんでリトルが自然なん? あとから拡張しやすいって意味か? : デフォルトの名無しさん (ワッチョイ 95f2-4fyn) [sage] 2018/12/30(日) 17:21:44.51:JDxg8BDU0 加算器は下の桁から処理していって桁上げする方が自然とか、複数バイト長のワードで ビットアドレスとバイトアドレスの増加方向が同じになるとかかな。 ワードサイズが変わっても低位バイトの位置が変わらないから拡張しやすいってのも もちろんあると思う。 : デフォルトの名無しさん (ワッチョイ da01-ZiiZ) [sage] 2018/12/30(日) 17:42:37.29:8KuoxE+z0 ハード作ってる時はビッグエンディアンの方が自然な気がするがソフト作ってる時はリトルエンディアンの方が自然な気がする まあ、FPGAと高級言語を使うようになってからは滅多に気にすることは無くなったけど : デフォルトの名無しさん (ワッチョイ 91e3-h5Ay) [sage] 2018/12/30(日) 17:43:15.81:+xBnY0nz0 cast するときにも便利。 メモリに書かれた 32BIT整数を 8BIT 整数として取得したい際など、 先頭アドレスが変わらないので、速度効率が上がりやすい。 もし、BIG ENDIAN だとそのようなときに、「3」足さないといけなく なってしまうと思う。 : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/30(日) 17:44:09.88:vtZx8IN+a fstreamでリトルとビッグの切り替えってどうするの : デフォルトの名無しさん (ワッチョイ 95f2-4fyn) [sage] 2018/12/30(日) 17:50:27.67:JDxg8BDU0 逆にビッグエンディアンの方が自然に思えるのは16進ダンプ見てるときくらいしか思いつかない。 : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 17:52:58.01:31DgsdhN0 Uint32 u32; BYTE u8; u8 = (BYTE )u32; とするコードがあったとする。u32 を、ポインタで置き換えたいとき、 Uint32 *pUint32; u8 = (BYTE )*pUint32; と書くのも正解だが、 u8 = *(BYTE *)pUint32; と書くのも正解で、実は、後者の方が効率は良い場合があるとされる。 なぜなら、メモリから前者は4バイト読んでから上位バイトを捨てるが、 後者では最初から上位バイトを読まないから。 この場合、Little Endian だと、後者の書き方でも混乱が少ないが、Big Endian だと何を意味しているのか分かりにくくなる。というのは、 (BYTE *)のようなポインタ型への cast は、旧来の C では、アドレス値自体は 変更せずに、型だけを変更するというのが伝統的な実装だったため (ただし、C++ の場合、多重継承していた場合は、その原則を破ってアドレス値が 変化する事があるが。)。 BigEndian の場合、最後の書き方の実装に不安定要素が残るように思える。 : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/30(日) 18:06:14.60:vtZx8IN+a この場合static_castは使えんの? : >>835 (ワッチョイ 5aad-4fyn) [sage] 2018/12/30(日) 18:10:27.41:Q7hIiacN0 , ありがとうございました。 配列の実態作ったらできました! _を接頭文字で使うのは結構規模の大きいオープンソースプロジェクトのソースで メンバー変数の頭に_を使ってたのでやってました。 気を付けます。 話は少し変わるんですが、でクラスをnewせずに使うというのが書かれていますが、 オブジェクトをnewせずに使うことって結構あるんでしょうか? 普段C#やっているのですが、クラスは基本的にnewでインスタンス化して使うものと思っていたので、(コンストラクタで特に初期化処理がなくても) : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 18:24:04.22:31DgsdhN0 >話は少し変わるんですが、でクラスをnewせずに使うというのが書かれていますが、 >オブジェクトをnewせずに使うことって結構あるんでしょうか? どちらかというと、C++では new する必要ない場合は、new しないことが 良い書き方。new は、好きなタイミングで削除したいようなオブジェクトの場合 のみ使用する。構造体やクラスのメンバの中に、別のクラスのオブジェクトが含まれている ような場合は、new しないのが原則。 ある意味では、そのような習慣があるからこそ、C++ は効率が良いともいえる。 実は、new や malloc は、確保するサイズにかかわらず、大体 170 クロックほど 必要。delete や free と合わせると、合計 300 クロック必要となる。 一方、そのまま、new せずに「埋め込んだ」場合は、基本的に「0」クロック。 この差はとても大きなものとなることがある。 : デフォルトの名無しさん (ワッチョイ 694e-4fyn) [sage] 2018/12/30(日) 18:27:37.01:bm6ZOgnS0 最初から最後まで存在し続けて、特別な終了処理が必要ないオブジェクトなら、わざわざヒープを確保して実行時に初期化する必要はないでしょ。 あと、staticなオブジェクトのコンストラクタはmain関数の前にグローバルコンストラクタから呼び出されるのだが、 これを利用して、プログラム起動時にやっておきたい初期化処理をクラス内で記述する目的に使うこともあるね。 : デフォルトの名無しさん (ワッチョイ 694e-4fyn) [sage] 2018/12/30(日) 18:32:12.30:bm6ZOgnS0 さすがに良い書き方っていうのはどうかと思うけどな。 staticなオブジェクトにしちゃうと、初期化の順番が制御できないから、気をつけて使わないとコンパイラ依存のコードになってしまうし。 : デフォルトの名無しさん (ワッチョイ 5aad-4fyn) [sage] 2018/12/30(日) 18:32:48.87:Q7hIiacN0 , ありがとうございます。 このあたりのC++とC#の慣習の差異に違和感を覚えていたのですが、かなりスッキリしました。 : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 18:55:41.08:31DgsdhN0 必要な場合は new しても良い。でも、クラス Cxxxの中には、文字列の CString クラスのオブジェクトや、何らかのリストのオブジェクトが複数含まれて いたりすることも多い。それらのメンバを全て new する場合と、埋め込み でそのまま使う場合とでは、Cxxx をインスタンス化するときの時間に雲泥の 差が出てしまう。Cxxx が、5つのクラス・オブジェクトを含んでいた場合、 それらを new するだけで、170 * 5 クロックも余分に掛かってしまう。 この数値には、各コンストラクタの処理時間は含まれていないので。 この場合だと、全て new すると、850 クロックも余計に掛かることになる。 さらに、Cxxx オブジェクトがデストラクトされる場合には、合計で、この 1.8 倍程度の時間が new しない場合より余計に掛かることになってしまう。 : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2018/12/30(日) 19:01:20.20:31DgsdhN0 思い出したので追加しておく。 Little Endian の場合、 >Uint32 u32; >BYTE u8; >u8 = (BYTE )u32; の代わりに、 Uint32 u32; BYTE u8; u8 = *(BYTE *)&u32; という書き方も出来て、こっちの方が、処理効率が良い場合があるとされている。 しかし、BigEndian だとこの書き方は混乱を招きやすく、かつ、処理効率も 上がらないと思われる。 総合的に考えると、Little Endian の方が処理効率が上がりやすいはずだ。 : デフォルトの名無しさん (ワッチョイ 3a52-MXej) [sage] 2018/12/30(日) 20:44:44.64:97KQkPau0 はstaticな変数のことははじめから言ってなくて、構造体のメンバやスタックに積まれるケースのように自動的にメモリ確保されるケースのことを言っていると思われる。 : デフォルトの名無しさん (アウアウウー Sa39-Rqk6) [sage] 2018/12/31(月) 19:30:23.55:WGWLmLufa cのsetjmpを使ってるコードはc++で例外に置き換えられますか? : デフォルトの名無しさん (ワッチョイ 9161-h5Ay) [sage] 2019/01/01(火) 22:54:34.62:H66xOrDI0 確か、関数呼び出し連鎖の途中の関数が誰も catch せずに放っておけば、 親の関数にまで戻れるはずなので、一応、同じようなことが出来る気もする。 長い間使ってないので、むしろ、setjmp, longjmp がどういうものだったか の方を忘れてしまったけど。 たしかそれでいけたと思うな・・・。 : デフォルトの名無しさん (ワッチョイ 81ad-RM76) [] 2019/01/05(土) 05:14:18.47:XzO5Y/Fl0 EASTL - 3.12.08 release ttp://https://github.com/electronicarts/EASTL.git : デフォルトの名無しさん (ワッチョイ 8901-ikDe) [] 2019/01/05(土) 08:34:01.93:rov9DpyB0 std::variantって見たんだけどこれいいね。 : デフォルトの名無しさん (ワッチョイ 1301-4rLr) [sage] 2019/01/05(土) 09:09:14.58:xejHmutN0 型安全なunionか なかなかいいかも : デフォルトの名無しさん (ワッチョイ 917c-aDDJ) [] 2019/01/05(土) 12:12:55.54:wMTnOPNR0 ttp://https://bitbashing.io/std-visit.html : デフォルトの名無しさん (ワッチョイ 917c-aDDJ) [] 2019/01/05(土) 12:13:54.68:wMTnOPNR0 ttp://https://qiita.com/ktokhrtk/items/9774208863f249007462 : デフォルトの名無しさん (ワッチョイ 917c-aDDJ) [] 2019/01/05(土) 12:14:18.25:wMTnOPNR0 ttp://https://nekko1119.hatenablog.com/entry/2016/11/21/060928 : デフォルトの名無しさん (ワッチョイ d93d-3A6Y) [sage] 2019/01/05(土) 12:21:03.48:ZukYwWxe0 やっぱ整数なら下の桁から上の桁に向かって書いたり送ったりするのが自然 上の桁とか(整数という概念上は)何桁まで伸びるかわからないのだから しかし一方人間の認識上は上の桁から見て量を把握したいという要求があり、 不幸にもラテン語が左から書くのにアラビア数字が右から書く慣習だったため 二つの文化を取り持つ玉虫色の解決策としてビッグエンディアンとかネットワークバイトオーダーみたいなものが生じた : デフォルトの名無しさん (ワッチョイ 5394-Fz1M) [sage] 2019/01/05(土) 14:23:51.42:o23qSFy30 スマホアプリとかのパケット解析するとわりとビッグエンディアン使われてる : デフォルトの名無しさん (ワッチョイ fb02-cuFO) [] 2019/01/05(土) 14:47:37.72:2c1WII2F0 だってビッグエンディアンはネットワークバイトオーダーでもあるから。 外に出すデータや互換性保ちたいデータは普通そうすると思うよ。 : デフォルトの名無しさん (ワッチョイ 8195-LRU4) [sage] 2019/01/05(土) 14:56:34.85:Mw4M2zcY0 アラビア数字書くとき右から書いてるの?変わった人ね : デフォルトの名無しさん (ワッチョイ 81ad-RM76) [] 2019/01/06(日) 10:53:29.24:2S4Gmo3N0 数の表記だけじゃないさ。日付、人名、住所の表記も。 単純なASCIIソートで正しくソートできるのはどれかという話にもつながる。 : デフォルトの名無しさん (ワッチョイ 8901-ikDe) [] 2019/01/06(日) 13:34:28.45:q7b7d/XL0 数値を数字に直すとき桁数を調べるには対数とればいいよ。 : デフォルトの名無しさん (ワッチョイ 917c-aDDJ) [] 2019/01/06(日) 14:27:57.77:UQlfmMBy0 中学生か : デフォルトの名無しさん (ワッチョイ 51e3-PFih) [sage] 2019/01/06(日) 16:25:01.53:gVP3A6Xh0 数学的にはそれで完全に正しい。 しかしコンピュータには誤差があるので、 itoa() や printf() などを自分で実装するような場合、 よく考えないといけないかも知れない。 log_10(x) で計算すると N 桁だということになったとしても、 itoa() などを実装するアルゴリズムによっては、ある条件の時に 誤差によって、1ケタだけずれるかもしれない。 めったに無いことだが、これで銀行システムや戦闘機のシステムが ダウンしたりするかも知れないので、数学は重要。 : デフォルトの名無しさん (ワッチョイ 51e3-PFih) [sage] 2019/01/06(日) 16:27:31.80:gVP3A6Xh0 ちなみにオイラは数学は首席だったが、どういう場合にそれが生じるかは 即答することは出来ない。アルゴリズムを慎重に選ばないと、その誤差によって システム・ダウンやアプリのハングアップ、保護例外などを引き起こす可能性が わずかだが存在するかもしれない。 : デフォルトの名無しさん (オッペケ Src5-mak3) [sage] 2019/01/06(日) 16:32:25.57:BCtLt9aar へぇ〜科目毎に首席決まるんだ笑 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 16:48:35.20:5fyS0TRC0 n>=0かつ10^n <= m < 10^(n+1) のときに整数mは十進n桁の数と言える。 不等式に常用対数を適用し、 n <= log_10 (m) < n+1 が得られる。つまり、1以上の整数mに常用対数を適用し、さらにガウス記号を適用したものがmの桁数だ。 m=0のときは一桁になることに注意する。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 16:50:11.91:5fyS0TRC0 計算結果の桁数が違うときは、常用対数の誤差とガウス記号の誤差の問題になる。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 16:57:04.99:5fyS0TRC0 常用対数の誤差については、有効桁数を使うか、区間演算により、誤差の範囲を見積もることが可能。そこで、誤差の範囲が整数をまたぐかどうかを判定すれば、問題は解決する。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 16:59:59.29:5fyS0TRC0 整数をまたぐ可能性があるときは実際に整数を文字列化すれば正確な桁数が算出可能。もしくは任意精度の多倍数演算により自由に精度を高めて再計算すればいい。 : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 17:00:41.37:5fyS0TRC0 *多倍長演算* : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-YfKw) [sage] 2019/01/06(日) 17:07:05.46:5LUvK3vXd オイラーは首席だったのか? : さまよえる蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-YfKw) [sage] 2019/01/06(日) 17:11:34.26:5LUvK3vXd NO DATA. : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 17:23:51.30:5fyS0TRC0 ほら、反論しろよ? : デフォルトの名無しさん (ワッチョイ 81ff-xhm2) [sage] 2019/01/06(日) 17:41:26.55:kxJaA4Vn0 ふつー数値から文字列に変換する変換関数そのものに長さを報告させるだろ 文字列の格納先のメモリを確保するときのサイズ見積もりに対数を使う場合は ワーストケースで誤差が出た場合に備えればいい : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 17:44:32.37:5fyS0TRC0 具体的なほとんどのプログラムでは常用対数の誤差を一桁以内にすることは可能だろう。 : デフォルトの名無しさん (ワッチョイ a97c-88M8) [sage] 2019/01/06(日) 18:06:44.32:z+pllqoQ0 ゲームエンジンでおすすめありませんか? : デフォルトの名無しさん (ワッチョイ 8901-ikDe) [] 2019/01/06(日) 18:12:46.00:q7b7d/XL0 本屋さんにはUnityコーナーがあるよ。 : デフォルトの名無しさん (ワッチョイ a97c-88M8) [sage] 2019/01/06(日) 18:19:00.70:z+pllqoQ0 siv3dみたいなのを探してます オープンソースで参考になるやつ : デフォルトの名無しさん (ワッチョイ b332-xhm2) [sage] 2019/01/06(日) 18:21:40.42:mghQxkOO0 glfw : さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 1901-YfKw) [sage] 2019/01/06(日) 18:22:16.06:5fyS0TRC0 スマホゲームならWebGL一択、ハイエンドならUnity、Unreal Engine、CoCo3D、ローエンドならOpenGL, DirectDraw, Haxeといったところか。 : デフォルトの名無しさん (ワッチョイ a97c-88M8) [sage] 2019/01/06(日) 18:34:54.20:z+pllqoQ0 うーん 一応webgl考えてみます : デフォルトの名無しさん (ワッチョイ 5161-PFih) [sage] 2019/01/06(日) 19:53:45.75:viPzIL890 変換関数そのものをプログラムしたい場合に、あらかじめ桁数が分かって いる方が便利 or 効率が良い、場合があり、log_10(x)を使用したくなってしまう。 ところがが、log 計算には誤差が有る可能性があるので、その値を過信するのは 問題だと言うことが言いたかった。 例えば、文字列化する際には、多くのアルゴリズムでは、下の方の桁から 決まっていく。しかし、文字列バッファには、上のケタから左詰で入れて 行く必要がある。となると、最初から桁数が分かっていれば、簡単に プログラムできるのではないかと言う誘惑に駆られてしまう。 後、10で割っていって余りを使う方法は簡単ではあるが、そのアルゴリズム そのものにも誤差が有る可能性が指摘されている。 : ◆QZaw55cn4c (ワッチョイ d347-5am+) [sage] 2019/01/06(日) 20:10:05.15:COVE8lO90 >10で割っていって余りを使う方法は簡単ではあるが、そのアルゴリズムそのものにも誤差が有る可能性が指摘されている。 え?10で割っていくのにどうして誤差が出るの? : デフォルトの名無しさん (ワッチョイ 81ff-xhm2) [sage] 2019/01/06(日) 20:16:22.17:kxJaA4Vn0 変換関数の中でメモリ割り付けを行うのが好みなのか? : デフォルトの名無しさん (ワッチョイ d93d-3A6Y) [sage] 2019/01/06(日) 20:27:50.31:Tw0qXLcy0 んま実際にわ数値の桁数とか型を見たら一発でわかるんですけどねwwwwww logは人間の感覚特性にマッチした量的尺度を表したり(例:dB)、 情報量の表現に使う(同じものがいっぱいあるという状況は情報量を上げない)という目的が大きい : デフォルトの名無しさん (ワッチョイ 8901-ikDe) [] 2019/01/06(日) 21:04:54.26:q7b7d/XL0 HTMLパーサーありますか? : デフォルトの名無しさん (ワッチョイ 81ff-xhm2) [sage] 2019/01/06(日) 21:27:13.56:kxJaA4Vn0 intは何桁だ? : デフォルトの名無しさん (ワッチョイ 79ab-cEz4) [sage] 2019/01/06(日) 22:23:30.07:IpTON8AO0 coronaがオープンソース化されたらしい 2dだが : デフォルトの名無しさん (ワッチョイ 5161-PFih) [sage] 2019/01/06(日) 22:46:51.25:viPzIL890 前提として浮動小数点数(float/double など) の話だけど、誤差が無いとは言い切れない 事は分かると思う。 誤差を少なくする方法として、10で割ったりせずに、最初から、 10000.0, 1000.0, 100.0, 10.0, 1.0, 0.1, 0.01, 0.001 20000.0, 2000.0, ・・・ 30000.0, 3000.0, ・・・ 40000.0, 4000,0, ・・・ のようなものを計算しておいて、比較したり引き算したりする方法が あるそうな。 浮動小数点値の場合、当然かもしれないが log を使わずに、IEEE の仕様を元に 指数部のBIT部分を読んで利用する方がいいらしい。 : デフォルトの名無しさん (ワッチョイ 8901-xhm2) [sage] 2019/01/07(月) 08:39:12.81:4xwPMGVF0 桁数が重要になるような銀行や事務系の話? それなら10進演算だろ IEEEでも定義されてる 科学計算だと対数で問題ない : デフォルトの名無しさん (ワッチョイ 51e3-PFih) [sage] 2019/01/07(月) 13:35:29.03:QyN6UiiI0 自分で printf() を実装する場合の、浮動小数点数を文字列に直す時の話。 : デフォルトの名無しさん (ワッチョイ b332-xhm2) [sage] 2019/01/07(月) 13:47:41.82:hsoUdh4l0 自分でprintfを実装するとか銀行のシステムを作るよりレアケースだな : デフォルトの名無しさん (ワッチョイ 81ff-xhm2) [sage] 2019/01/07(月) 17:09:10.70:Cio2TleD0 ここがC++スレということを忘れて内科医? printfはオーバーロードできるしグローバル以外の空間にも導入できる : デフォルトの名無しさん (ワッチョイ 8901-eTP0) [sage] 2019/01/07(月) 20:19:39.05:hm6qCAOJ0 そんなことするんじゃねーよカスが。 : デフォルトの名無しさん (ワッチョイ 5167-xhm2) [sage] 2019/01/07(月) 23:14:26.87:lPhgCzer0 Pythonには素の遅いPythonとJITを使った素のPythonよりとてつもなく速いPythonがあるようですが Boost.PythonでPythonスクリプトを読み込んで実行した場合は素の遅いPythonの速度になる認識であっているでしょうか? また、Boost.PythonでJIT版Pythonを実行することは可能でしょうか? : デフォルトの名無しさん (ワッチョイ 5161-PFih) [sage] 2019/01/09(水) 00:35:27.60:I3YK3qiz0 全然その辺知らないけど、 そもそも、python の言語仕様自体がJITを使ったとしてもC/C++ほどの速度には ならないはずだし、そもそも NumPy 使わないと遅いということは聞いてる。 大体のスクリプト言語は、言語仕様の段階で例えコンパイル言語化しても どうすることも出来ない遅さが含まれてしまってる。 : デフォルトの名無しさん (ワッチョイ 917c-aDDJ) [] 2019/01/09(水) 11:18:19.67:+j6Vua/i0 numpy使えばC並みの速度が出るようにも書けるが numpy使ったからと言って馬鹿が描くと素のpython以上に遅くなる : デフォルトの名無しさん (ラクッペ MMe5-88M8) [sage] 2019/01/09(水) 13:18:31.63:ePvWX0K6M 速度なんて誰でも気にしない優しい世界 : デフォルトの名無しさん (ワッチョイ 8901-eTP0) [sage] 2019/01/09(水) 19:27:53.32:LMntakFz0 用意されてるライブラリ使えと。 バカがイキって作ったライブラリより普通に速いから。 : デフォルトの名無しさん (ワッチョイ b332-xhm2) [sage] 2019/01/09(水) 19:38:55.54:P7Qg82S60 numpyの使い方の話ではなく? : デフォルトの名無しさん (ワッチョイ a97c-88M8) [sage] 2019/01/09(水) 20:20:55.44:1OkzU/m20 というかスレチでは? : デフォルトの名無しさん (ワッチョイ 5161-PFih) [sage] 2019/01/09(水) 21:54:22.59:eG2hyzXv0 ・動的型言語 ・自動メモリ管理 ・リンクリストと配列を余り区別しない書き方をする人が多い傾向。 これらがあるので、pythonをコンパイル型にしてもある程度以上の高速化は 難しいと思われる。 : デフォルトの名無しさん (ワッチョイ f15f-u+tM) [sage] 2019/01/09(水) 22:15:33.61:oaJURpH60 Cythonの話? : デフォルトの名無しさん (ワッチョイ 5161-PFih) [sage] 2019/01/09(水) 22:24:15.05:eG2hyzXv0 pythonの速度測定は、やってみたことないけどね。(^_^;) : デフォルトの名無しさん (アウアウエー Sa22-oec2) [sage] 2019/01/10(木) 08:22:27.02:jdFEneY4a Pythonにリンクリストなんか無いだろ Pythonの配列(list)はvector相当の動的配列 実はリンクリストが動的配列より速いケースってC++でも現実にはほとんど無くて、あまり価値のないデータ構造だよ 拡張・縮小にメモリの再確保が不要で抽象化を必要としないから、Cのような生ポインタを好んで使いまくる言語と相性がいいだけ : デフォルトの名無しさん (ワッチョイ faa5-rp4P) [sage] 2019/01/10(木) 13:04:00.84:EKtor9ZH0 ttps://github.com/python/cpython/blob/master/Modules/arraymodule.c 3000行のありがたいソースコードを読み解けば何かが分る : デフォルトの名無しさん (ブーイモ MM71-oec2) [sage] 2019/01/10(木) 13:06:20.15:RGz7BwRGM 普通に動的配列だな : デフォルトの名無しさん (ワッチョイ 4a32-VK1S) [sage] 2019/01/10(木) 15:05:21.30:681jFEkb0 ハード屋さんが頑張りすぎて必要なくなっちゃったな でも便利だからforward_listを使うことはある : デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk) [] 2019/01/10(木) 20:06:55.51:Dp9bpyFY0 tupleってメンバ関数で値取り出せないのね。 std::get<N>( t ) ってファンキー過ぎやしませんか。 下手に使うとコンパイルに時間食われそう。 : デフォルトの名無しさん (ワッチョイ f9ff-VK1S) [sage] 2019/01/10(木) 21:56:09.15:cH4uyoE20 関数やテンプレートで、できることとできないことを 冷静に考えてみな : デフォルトの名無しさん (ワッチョイ f995-peLi) [sage] 2019/01/10(木) 22:54:40.61:pr4jZotH0 テンプレート化すればメンバ関数にすることはできるのでは? : デフォルトの名無しさん (ワッチョイ 4a32-VK1S) [sage] 2019/01/10(木) 23:01:28.43:681jFEkb0 コードを生成するのはプリプロセッサの役割 : デフォルトの名無しさん (ワッチョイ f9ff-VK1S) [sage] 2019/01/10(木) 23:13:51.80:cH4uyoE20 すまん、いま泥酔状態だ あとでな : デフォルトの名無しさん (ワッチョイ 9a3a-w1rC) [sage] 2019/01/10(木) 23:31:47.36:lkkMD/RY0 メンバテンプレートにするとtupleをテンプレートに放り込んだときに t.template get<0>() と書かなきゃならなくなってこりゃないわーで皆が合意したからじゃ
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。