2ch勢いランキング アーカイブ

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
&copy;
デフォルトの名無しさん (ワッチョイ 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>()
と書かなきゃならなくなってこりゃないわーで皆が合意したからじゃ

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら