C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part145
http://mevius.5ch.net/test/read.cgi/tech/1568362404/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
探検
C++相談室 part146
レス数が1000を超えています。これ以上書き込みはできません。
2019/11/07(木) 11:35:36.76ID:4wggfTwe
2019/11/07(木) 11:36:06.80ID:4wggfTwe
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
2019/11/07(木) 12:30:45.15ID:BpK/Hm+b
今更だけどこのテンプレ何が面白いの?
2019/11/07(木) 13:14:32.06ID:S+DlaQTT
本人か?w
2019/11/07(木) 18:24:51.04ID:BQL6Knhs
2019/11/07(木) 18:28:59.01ID:N9TqrKuA
他の演算子と何も変わらんよ
2019/11/07(木) 18:37:13.58ID:lzcXDdMi
三項演算子は簡易的なif-else文
2019/11/07(木) 18:54:15.36ID:N9TqrKuA
>>7
文と式は区別しよう
文と式は区別しよう
2019/11/07(木) 19:12:41.49ID:BQL6Knhs
え?
三項演算子は参照返してるの?
〜〜?lvalue:rvalue;はどうあつかうんや?
三項演算子は参照返してるの?
〜〜?lvalue:rvalue;はどうあつかうんや?
2019/11/07(木) 19:42:30.16ID:N9TqrKuA
何を混乱してるのか知らんけど、四則演算や比較など他の演算子が返すものと性質は何も変わらんて
2019/11/07(木) 20:01:08.25ID:3d5Ufx/F
たぶん三項演算子で分岐後の型が異なっている場合の事を気にしているのでは?
三項演算子は変数セレクタ(変な表現だけど)ではないのだが
そういう使い方もできるだけ
三項演算子は変数セレクタ(変な表現だけど)ではないのだが
そういう使い方もできるだけ
2019/11/07(木) 20:04:20.83ID:BQL6Knhs
>>11
なるほど。了解です。
なるほど。了解です。
2019/11/07(木) 20:52:33.57ID:f0rTnBPE
上級者のvoid君によると、初心者避けのおまじないらしい
14はちみつ餃子 ◆8X2XSCHEME
2019/11/08(金) 14:37:15.05ID:qQX8Hix+ 条件演算子のことを三項演算子と呼ぶのは初心者。
2019/11/08(金) 15:36:38.98ID:D1bzmSlR
二択条件演算子を条件演算子と言うやつは
CとC++の区別がついていないやつ
CとC++の区別がついていないやつ
2019/11/08(金) 22:59:43.71ID:ggDD69r9
はて、ISO/IEC 14882:2017もISO/IEC 9899:2011もConditional operatorなのだが
JIS信者が崇拝する廃れたJISには二択条件演算子などというマヌケな用語が書かれていたのだろうか
JIS信者が崇拝する廃れたJISには二択条件演算子などというマヌケな用語が書かれていたのだろうか
2019/11/09(土) 01:06:14.38ID:UqQZQ0MX
それでは引き続きpimpl論争をお楽しみ下さい
2019/11/09(土) 03:18:51.08ID:HyuDdIlK
2019/11/09(土) 03:52:08.32ID:/c1qnHHd
ハエのクソほどの価値もない
これはなかなか良い煽り表現、メモしとこう
これはなかなか良い煽り表現、メモしとこう
2019/11/09(土) 11:52:01.08ID:YsXITINs
ふむふむ確かにJIS X 3010:2003は「条件演算子」、JIS X 3014:2003には「二択条件演算子」とあるな
Conditional operatorは正しいが「条件演算子が誤り」と言われても致し方ない
勉強になった
Conditional operatorは正しいが「条件演算子が誤り」と言われても致し方ない
勉強になった
2019/11/09(土) 15:27:24.52ID:HP/LflWX
『プログラミング言語C++』第4版の第2章のエピグラフには
シェイクスピアから引用されてるね。
「まず行うべきは、言語の法律家を皆殺しにすることだ。」
シェイクスピアから引用されてるね。
「まず行うべきは、言語の法律家を皆殺しにすることだ。」
2019/11/09(土) 16:40:09.54ID:UqQZQ0MX
JISwww
まぁ英語読めない人はそっち読んでればw
まぁ英語読めない人はそっち読んでればw
2019/11/09(土) 16:54:05.74ID:W5m3k6zs
JIS信者ってコンストラクタとデストラクタを生成子とか消去子とか呼んでるの?
話したくねえな
話したくねえな
2019/11/09(土) 17:53:12.69ID:HyuDdIlK
フレンドを随伴はさすがにやだな
2019/11/09(土) 19:31:08.91ID:7XYNyApp
友達よりはいいと思う
2019/11/10(日) 10:04:18.86ID:2HW6YGp5
随伴と言う言葉は、実は数学や物理で別の意味で使われているのでちょっと
抵抗を感じるのは否めない。量子力学でのエルミート共役や、リーマン幾何学
で使われることがある。数学の「双対」の概念とも関係していて、随伴に対して
もう一度随伴操作を行うと元に戻る性質がある場合もある。
抵抗を感じるのは否めない。量子力学でのエルミート共役や、リーマン幾何学
で使われることがある。数学の「双対」の概念とも関係していて、随伴に対して
もう一度随伴操作を行うと元に戻る性質がある場合もある。
2019/11/10(日) 10:10:28.39ID:jbBoRETA
friendというか奴隷宣言だよね
2019/11/10(日) 10:53:53.52ID:T+oiajnu
class 満州国
2019/11/10(日) 10:54:30.16ID:T+oiajnu
class 満州国 {
friend 大日本帝国
};
friend 大日本帝国
};
2019/11/10(日) 11:29:20.79ID:wGUp3v12
従属宣言
2019/11/10(日) 11:41:08.02ID:T+oiajnu
class 明 : public 元;
class 清 : public 金, 元;
class 李氏朝鮮 {
friend 明;
friend 清;
};
class 清 : public 金, 元;
class 李氏朝鮮 {
friend 明;
friend 清;
};
2019/11/11(月) 22:41:26.04ID:X/f1urlF
なんで元をprivate継承してんだ?
33デフォルトの名無しさん
2019/11/15(金) 07:53:04.32ID:NNCqRbhA34デフォルトの名無しさん
2019/11/15(金) 08:06:03.04ID:NNCqRbhA 北京は一見すると漢民族の首都のように見えるけどまったく違う。
最初に現在の北京を首都にしたのはモンゴル帝国の元。
北京は、漢人・モンゴル人・満洲人それぞれの活動域の接結点に位置している。
以下の事件では、内モンゴルから来た2人の患者が北京の病院で肺ペストと診断されている。
中国で2人が肺ペストに感染、危険性高い劇症型
https://www.cnn.co.jp/world/35145373.html
2019.11.14 Thu posted at 10:04 JST
最初に現在の北京を首都にしたのはモンゴル帝国の元。
北京は、漢人・モンゴル人・満洲人それぞれの活動域の接結点に位置している。
以下の事件では、内モンゴルから来た2人の患者が北京の病院で肺ペストと診断されている。
中国で2人が肺ペストに感染、危険性高い劇症型
https://www.cnn.co.jp/world/35145373.html
2019.11.14 Thu posted at 10:04 JST
2019/11/15(金) 09:44:31.26ID:IxoIS27H
しかし継承ってほんと駄目な語だよな
インターフェースに対する実装感が無い
インターフェースに対する実装感が無い
2019/11/15(金) 09:56:13.83ID:CeuK/dHL
お前の国語力もダメだな
37デフォルトの名無しさん
2019/11/15(金) 23:57:33.98ID:/yBuhf/V じゃあ遺伝にすればいいのでは。
2019/11/16(土) 09:31:39.67ID:N74GdtKe
inheritを継承と訳したバカが悪い
2019/11/16(土) 09:55:02.91ID:fbhJUidB
禿1の日本語版で始めて見た
2019/11/16(土) 10:09:43.47ID:Xo/j5+tn
じゃあinheritって言えば?
それで何が解決するのか知らんが
それで何が解決するのか知らんが
2019/11/16(土) 12:17:41.91ID:N74GdtKe
inheritには立場や役目をそのまま成り代わって継続する意味合いがある
そういう意味合い抜きで単に引き継ぐだけ(あとは後任の勝手)ならsucceedな
王位とか家督とかの相続はinherit
単に財産を相続するとか、社長なり議員なりの後任を単に務めるだけならsucceed
(ただし後任の社長が前任の右腕で忠実に同じやり方を継続していく意向、みたいなのはinheritでもいい)
「継承」は原語のinheritの含みがスッポリ抜け落ちてんだよ
派生クラスが基底クラスの完全な代替として振る舞う(べき)っていうニュアンスが消えてるから初心者が誤解する
そういう意味合い抜きで単に引き継ぐだけ(あとは後任の勝手)ならsucceedな
王位とか家督とかの相続はinherit
単に財産を相続するとか、社長なり議員なりの後任を単に務めるだけならsucceed
(ただし後任の社長が前任の右腕で忠実に同じやり方を継続していく意向、みたいなのはinheritでもいい)
「継承」は原語のinheritの含みがスッポリ抜け落ちてんだよ
派生クラスが基底クラスの完全な代替として振る舞う(べき)っていうニュアンスが消えてるから初心者が誤解する
2019/11/16(土) 13:30:15.21ID:c+ki5LNV
センスある和訳を教えてくれ
2019/11/16(土) 13:32:33.19ID:x87RiFEK
2019/11/16(土) 15:00:50.64ID:Xo/j5+tn
しょせんメタファーなんだから単語だけで正しく理解できるわけないだろ
あほちゃうか
あほちゃうか
2019/11/16(土) 16:15:31.56ID:fjjXSMO9
「継承」は老舗のお店や古典芸能の家系なんかの気持ちだったのかね。
先代の商売のやり方を引き継ぎながらも新しい世にも…みたいな。
「相続」は悪くない訳な気がするけどね。
祖先の遺産を使って苦労なく好きにアレコレできるとか、
変な具合にいじってお家断絶しちゃうとか。
先代の商売のやり方を引き継ぎながらも新しい世にも…みたいな。
「相続」は悪くない訳な気がするけどね。
祖先の遺産を使って苦労なく好きにアレコレできるとか、
変な具合にいじってお家断絶しちゃうとか。
2019/11/16(土) 17:16:10.53ID:jURkcZzd
2019/11/16(土) 17:23:28.15ID:rW7Vu2CL
英語が曖昧すぎるからよほどぴったりじゃないと英語そのままのがいいでしょ
2019/11/16(土) 17:49:29.54ID:0kRbSQZl
こんなしょーもないことをいちいち気にしてたらプログラムなんてできんだろ。
まあいまだに「オブジェクト指向とは」みたいなしょーもない禅問答やってるバカもいるけど。
まあいまだに「オブジェクト指向とは」みたいなしょーもない禅問答やってるバカもいるけど。
2019/11/16(土) 19:38:23.83ID:gk1O1Pjk
むしろ継承にただ引き継ぐだけなんていう暗黙的意味があるなんて今知った
2019/11/16(土) 19:41:00.20ID:x87RiFEK
単に継承という言葉の意味を知らない馬鹿が発狂してただけという
2019/11/16(土) 19:45:39.83ID:gk1O1Pjk
伝承なんて伝言ゲームになりそうだな
2019/11/17(日) 03:14:32.70ID:unI7PN4C
2019年になってなお、訳文でもめるのかよ
もう全部英文で良くね?
もう全部英文で良くね?
2019/11/17(日) 03:30:27.32ID:/PPR+DNS
実際そうしてるでしょ
スマートポインタ、ムーブ、ラムダ、constexpr、noexcept、コンセプト、モジュール、
誰もゴミみたいな訳語当てたりせずに英語そのまま使ってるしそれが正しい
スマートポインタ、ムーブ、ラムダ、constexpr、noexcept、コンセプト、モジュール、
誰もゴミみたいな訳語当てたりせずに英語そのまま使ってるしそれが正しい
2019/11/17(日) 11:14:17.63ID:4jNKOHdS
訳でもめてるというより
ひとりだけ継承という訳にダメ出ししてる状況
一般論として訳や命名は軽視してはならないけど、
これに関してはかなりどうでもいい
ひとりだけ継承という訳にダメ出ししてる状況
一般論として訳や命名は軽視してはならないけど、
これに関してはかなりどうでもいい
2019/11/17(日) 11:52:02.68ID:ADq5wcSz
和訳とか関係なく、術語が一般用語としての意味と必ずしも一致しないなんてのはあたりまえなのにね。
数学なんかそんなのばっかり。
数学なんかそんなのばっかり。
2019/11/17(日) 12:31:55.03ID:JfnSUNsN
4人くらいいるだろう
ま、訳以前にそもそも継承という概念が役立たずだからな
ま、訳以前にそもそも継承という概念が役立たずだからな
2019/11/17(日) 14:14:53.18ID:0+nTbBo+
こうゆう機能、性質を○○と呼ぼうって順番なのに
○○って名前なのにこうゆう機能が無いのはおかしい!って言うのがアホ
○○って名前なのにこうゆう機能が無いのはおかしい!って言うのがアホ
2019/11/17(日) 14:33:49.67ID:cZKVuoHK
prvalueを純右辺値というだけで
ひっ絡んでくんの、このチンピラ?
ひっ絡んでくんの、このチンピラ?
2019/11/17(日) 15:03:16.97ID:Mp5WsRX6
おまいら暇だな
60はちみつ餃子 ◆8X2XSCHEME
2019/11/17(日) 18:41:21.48ID:zYX+B2Mq そんなの程度問題だろ。
2019/11/17(日) 19:00:44.78ID:4jNKOHdS
はいクソ正論でました
62はちみつ餃子 ◆8X2XSCHEME
2019/11/17(日) 23:37:51.82ID:zYX+B2Mq 仕様内で定義のある用語はその言葉の一般的な意味がどうあれ定義通りに理解すべきではあるんだが、
そもそもある語がテクニカルタームであることがわかりにくい場合ってのはイケてないと思う。
継承という言葉があったらどこかで定義されてるだろって思うけど、
右辺値って書いてあったら右辺にあるやつかなって思われても仕方がない感じがする。
そもそもある語がテクニカルタームであることがわかりにくい場合ってのはイケてないと思う。
継承という言葉があったらどこかで定義されてるだろって思うけど、
右辺値って書いてあったら右辺にあるやつかなって思われても仕方がない感じがする。
63デフォルトの名無しさん
2019/11/18(月) 05:59:05.21ID:mhcN03Rw defaultとかexecuteとかの英単語は、それ自体にいろんな意味あるじゃない。
2019/11/18(月) 06:04:42.98ID:oSLwFt1+
債務不履行に処刑かw
2019/11/18(月) 09:06:04.16ID:skAn5Z6m
ドスとかスワップとかコンピュータ用語って昔から怪し杉
2019/11/18(月) 09:42:03.87ID:/QuV8J26
だいたい元の英語のままでも日常語としてみたらなんじゃそら、みたいなのが
ちょいちょいあるのがコンピューター用語
バグ(虫)とか
ちょいちょいあるのがコンピューター用語
バグ(虫)とか
2019/11/18(月) 10:14:16.18ID:sZ0WVu3/
別にコンピューター用語に限らんけど
2019/11/19(火) 18:45:04.24ID:TjvO49h7
https://ideone.com/CMbxJf
ちょっと聞いてくださいよ。
ファクトリーメソッドのサンプル書いたんですよ。サンプル。
そしたら、子クラスのthisで親クラスのメソッド呼んだら、子クラスが記憶喪失になるんですよ。
おかしいじゃないですかこれ・・・。
あー、もどかしい。
ちょっと聞いてくださいよ。
ファクトリーメソッドのサンプル書いたんですよ。サンプル。
そしたら、子クラスのthisで親クラスのメソッド呼んだら、子クラスが記憶喪失になるんですよ。
おかしいじゃないですかこれ・・・。
あー、もどかしい。
2019/11/19(火) 18:45:47.67ID:TjvO49h7
コンパイルタイムに固定してしまうのか???
2019/11/19(火) 20:24:26.48ID:tvEitVpd
スマポのポリモはよくわかんないから触らないことにしてる
2019/11/19(火) 20:31:26.40ID:GNY4BPsd
DupってCreateのことだと思うんだけど
FactoryMethodなら呼び出し時にクラスのIdを指定しないといかんよ
この例だとDupの返す内容はIFactoryに固定されてしまうので
もともとIFactoryに存在していないXを表示させるのは鼻から悪魔
FactoryMethodなら呼び出し時にクラスのIdを指定しないといかんよ
この例だとDupの返す内容はIFactoryに固定されてしまうので
もともとIFactoryに存在していないXを表示させるのは鼻から悪魔
2019/11/19(火) 20:37:26.15ID:TjvO49h7
やっぱそうですかー。んー。
回答ありがとう。
回答ありがとう。
2019/11/19(火) 20:39:16.34ID:GNY4BPsd
で、もしIFactoryにXを持たせてもこうなる
https://ideone.com/s9beHs
IFactoryとAのメモリレイアウトが違うんだろう
あくまでもDupは生成時にmake_sharedするべき
https://ideone.com/s9beHs
IFactoryとAのメモリレイアウトが違うんだろう
あくまでもDupは生成時にmake_sharedするべき
2019/11/19(火) 21:14:56.35ID:hdRGMNcQ
キャストじゃなくて、インスタンス作るとこでディスパッチがないとな
2019/11/19(火) 21:51:12.33ID:8p0qWsch
ファクトリで思い出したけど
文字列をクラス名とみなしてインスタンス化するにはどーすりゃいいの
他言語のevalみたいなの
文字列をクラス名とみなしてインスタンス化するにはどーすりゃいいの
他言語のevalみたいなの
2019/11/19(火) 22:01:23.12ID:JHNr41O8
リフレ
2019/11/19(火) 22:06:20.10ID:+Lo3ALxa
>>74
んだね
C++ならif文を重ねるしかない
仮想関数の動きに惑わされず基本を押さえないとな
C++でデザパタやるとどうしても多少の泥臭さは我慢する必要がある
decltypeなんか使ったらコンパイル時に型が固定されちゃうよ
んだね
C++ならif文を重ねるしかない
仮想関数の動きに惑わされず基本を押さえないとな
C++でデザパタやるとどうしても多少の泥臭さは我慢する必要がある
decltypeなんか使ったらコンパイル時に型が固定されちゃうよ
2019/11/19(火) 22:10:34.14ID:+Lo3ALxa
createProduct()は仮想関数にできるね
これでかなりすっきりするのではないかと
んでIfactoryのcreateProduct()は純粋仮想関数にしておく
これでかなりすっきりするのではないかと
んでIfactoryのcreateProduct()は純粋仮想関数にしておく
2019/11/20(水) 12:38:11.71ID:V2Bfpb/x
IFactory内でdecltype(*this)取ってもIFactoryにしかならんよ、コンパイル時の型情報しか取れないんだから
そういうのは(すでに言われてるけど)仮想関数でごにょごにょすべき
仮想関数と共変使えばif文を排除できる
そういうのは(すでに言われてるけど)仮想関数でごにょごにょすべき
仮想関数と共変使えばif文を排除できる
2019/11/20(水) 12:48:17.01ID:V2Bfpb/x
すまん間違えた、共変使ってもIFactory内だとだめだな
make_sharedまでを派生でやらせればいける
make_sharedまでを派生でやらせればいける
2019/11/20(水) 13:12:40.35ID:tR9fBnD5
インスタンス作るとこの振り分けは愚直に書くのが保守性が高くなる気がしてる。
2019/11/20(水) 20:46:41.13ID:9SkvYyRu
2019/11/21(木) 14:19:11.68ID:+h+7QjsO
ストラウストラップのプログラミング言語C++Vol3以降、
ひさびさにできるだけ新しい仕様に準拠した日本語のC++本買おうと探したんだが
ほとんどまともな日本語本ってないのね
επιστημη、 高橋航平の独習C++
https://www.%61mazon.co.jp/dp/4798150231
表題だけみたけどマルチスレッドとか一切ふれてないのコレ?
とりあえずプログラム実装するならテンプレートなんかよりマルチスレッド/マルチコアプログラムのほうがよっぽど重要だと思うけど?
だれか買った人居ない?
レビューよろしく
ひさびさにできるだけ新しい仕様に準拠した日本語のC++本買おうと探したんだが
ほとんどまともな日本語本ってないのね
επιστημη、 高橋航平の独習C++
https://www.%61mazon.co.jp/dp/4798150231
表題だけみたけどマルチスレッドとか一切ふれてないのコレ?
とりあえずプログラム実装するならテンプレートなんかよりマルチスレッド/マルチコアプログラムのほうがよっぽど重要だと思うけど?
だれか買った人居ない?
レビューよろしく
2019/11/21(木) 14:23:43.46ID:Gb3w6aC2
江添の本
無料
無料
2019/11/21(木) 15:19:32.83ID:jw+Pn83o
何で禿4があるのに禿3なんかみてるの?
髪薄いから?
髪薄いから?
2019/11/21(木) 15:57:37.16ID:SOJnuxsg
ペアレントクラス、チャイルドクラス
2019/11/21(木) 16:06:01.43ID:wEG3pGFv
>>86
なんで?
なんで?
2019/11/21(木) 18:44:56.94ID:+h+7QjsO
>>85
日本語のC++本はVol3の時に買っただけで久しく入手してないという意味ね
Vol4は英語版のebookを持ってるが、ひさびさにできるだけ新しい仕様の日本語で書かれたC++が欲しいと言ってるんだよ。おつむの弱いお前
だいたい、C++-11で止まってるVol4今頃見てどーするつもりだおつむの弱いお前www
日本語のC++本はVol3の時に買っただけで久しく入手してないという意味ね
Vol4は英語版のebookを持ってるが、ひさびさにできるだけ新しい仕様の日本語で書かれたC++が欲しいと言ってるんだよ。おつむの弱いお前
だいたい、C++-11で止まってるVol4今頃見てどーするつもりだおつむの弱いお前www
2019/11/21(木) 18:46:35.73ID:+h+7QjsO
>>94
江添のような異常者の文章は読まないことにしてる
江添のような異常者の文章は読まないことにしてる
2019/11/21(木) 18:57:32.20ID:+dTDqVIf
標準委員会の人なのに・・・。
2019/11/21(木) 19:01:45.16ID:f5ecgBgu
なに勧めてもケチ付けるだろうから規格書をお勧めするよ
2019/11/21(木) 19:05:37.07ID:Ju9cDeqK
英語読めないのも知能異常では?
2019/11/21(木) 19:24:07.38ID:SB5I0OPT
>>85
あー、おまえ禿4の日本語版あるの知らねえウルトラ情弱かw
英語が苦手でググりスキルも家畜以下じゃ
C++に限ったことじゃねえよな
それはそれはステキな人生送ってそうだな
同業者として失笑が止まらんわw
内容くらい読んでからご託ぬかせよ
おまえみたいに物を知らんやつには
間違いなく勉強になるから
C++11がどういう位置付けかも知らず
営業呼称の数字がでかいの探してるだけだろ
う す ら ハ ゲ
あー、おまえ禿4の日本語版あるの知らねえウルトラ情弱かw
英語が苦手でググりスキルも家畜以下じゃ
C++に限ったことじゃねえよな
それはそれはステキな人生送ってそうだな
同業者として失笑が止まらんわw
内容くらい読んでからご託ぬかせよ
おまえみたいに物を知らんやつには
間違いなく勉強になるから
C++11がどういう位置付けかも知らず
営業呼称の数字がでかいの探してるだけだろ
う す ら ハ ゲ
2019/11/21(木) 19:24:50.50ID:SB5I0OPT
85じゃねえ89だ
2019/11/21(木) 19:25:54.77ID:qpXpGc2Y
ハ ゲ っ て 言 う な ! ! !
2019/11/21(木) 19:44:16.65ID:HPhky9Ev
江添ってひとははげてるの?
2019/11/21(木) 19:59:03.17ID:wlMAy4t9
無駄な抵抗はやめて丸刈りにすることだな。
2019/11/21(木) 20:15:37.46ID:+h+7QjsO
>> ID:SB5I0OPT
あほはアンカーのひとつもまともに入れられないってかウスノロ
原書持ってるのに11どまりの今頃Vol.4の日本語訳入手してどーするつもりだ低能
あほは死ねや
ご希望とあらば、ぶち殺してやってもいいぜwww
あほはアンカーのひとつもまともに入れられないってかウスノロ
原書持ってるのに11どまりの今頃Vol.4の日本語訳入手してどーするつもりだ低能
あほは死ねや
ご希望とあらば、ぶち殺してやってもいいぜwww
100デフォルトの名無しさん
2019/11/21(木) 20:30:56.20ID:+h+7QjsO101デフォルトの名無しさん
2019/11/21(木) 20:32:12.70ID:Ju9cDeqK 頭の程度がよくわかる
そりゃ英語も読めないさ
そりゃ英語も読めないさ
102デフォルトの名無しさん
2019/11/21(木) 20:32:45.47ID:JfgYWeJZ103デフォルトの名無しさん
2019/11/21(木) 20:46:13.11ID:JfgYWeJZ シングル毛根のくせに11やっても毛が2本に増えたりゃせんぞ
お ハ ゲ の 旧 太 郎 が
お ハ ゲ の 旧 太 郎 が
104デフォルトの名無しさん
2019/11/21(木) 20:56:51.29ID:JfgYWeJZ アンカー滑っちゃってすまんな
おまえもせめてアデランスが滑らないように気をつけな
おまえもせめてアデランスが滑らないように気をつけな
105デフォルトの名無しさん
2019/11/21(木) 21:02:49.63ID:JfgYWeJZ あ、よく見たらこいつC++-11だってw
禿本持っててこれじゃ英語白痴が絶望的なステージなんだな
なあbaldって意味わかる?
禿本持っててこれじゃ英語白痴が絶望的なステージなんだな
なあbaldって意味わかる?
106デフォルトの名無しさん
2019/11/21(木) 21:04:47.25ID:JfgYWeJZ あれ? 寝ちゃったのかな
それとも自分の頭から滑落死したか?
それとも自分の頭から滑落死したか?
107デフォルトの名無しさん
2019/11/21(木) 22:25:07.54ID:+3OggeIY ハゲ:規格と乖離した妄想言語をコンパイル確認せずにドヤ顔で披露する老害。頭頂部に髪が無いのが特徴的
添:ハゲを医者の不養生と揶揄しつつ自分もコンパイル通らないコードをドヤ顔で披露する委員会メンバ。頭髪を剃っているのが特徴的
添:ハゲを医者の不養生と揶揄しつつ自分もコンパイル通らないコードをドヤ顔で披露する委員会メンバ。頭髪を剃っているのが特徴的
108デフォルトの名無しさん
2019/11/21(木) 22:42:30.25ID:JfgYWeJZ 禿はcfrontの実装者だが
109デフォルトの名無しさん
2019/11/22(金) 01:23:48.58ID:9tWBQCxn ひさしぶりに見たらなにかよくわからないハゲのスレッドになってた
110デフォルトの名無しさん
2019/11/22(金) 15:37:51.30ID:h7twVaF1 俺たちがどれだけ頑張ってもC++でハゲには勝てない
111デフォルトの名無しさん
2019/11/22(金) 17:31:12.40ID:31qO4/Al このスレではじめてC++についてまったく非のうちどころのない正しい意見が書きこまれた
112デフォルトの名無しさん
2019/11/22(金) 23:28:36.47ID:4cuBkj+o まずハゲをスレッド生成します
113デフォルトの名無しさん
2019/11/22(金) 23:47:27.76ID:Y24HLISL 糸を生成できるなら禿やってない
114デフォルトの名無しさん
2019/11/23(土) 02:47:31.93ID:dFQ8RRrN C++はすぐ深刻なエラーになるからコーディングに注意を要しストレスで禿げる
115デフォルトの名無しさん
2019/11/23(土) 04:59:27.38ID:jWWyBC4d それはあながち否定はできない
まあ俺は禿げていないが
まあ俺は禿げていないが
116デフォルトの名無しさん
2019/11/23(土) 08:18:19.78ID:FPHze3FN プログラミング言語好きの人たちが集まるネットコミュニティの
雰囲気にあてられてハゲるんと違うか?
C++界隈は他の言語に比べて攻撃的な物言いをする人が多い気がするぞ。
皆がトーバルズ氏になりたがってる、みたいな。
ハゲ先生の本を(和訳本で)読むと穏やかな人格者っぽい感じなのに。
雰囲気にあてられてハゲるんと違うか?
C++界隈は他の言語に比べて攻撃的な物言いをする人が多い気がするぞ。
皆がトーバルズ氏になりたがってる、みたいな。
ハゲ先生の本を(和訳本で)読むと穏やかな人格者っぽい感じなのに。
117デフォルトの名無しさん
2019/11/23(土) 09:13:47.22ID:ugNYcsZK C言語使ってる日本人を想像しろ
118デフォルトの名無しさん
2019/11/23(土) 11:19:54.13ID:ZGOtfnpM C++はもうC#の後追いやってるだけだからなww
テンプレートにうつつ抜かしてる間に生産性以外でもC#に劣る言語仕様に成り下がった
テンプレートにうつつ抜かしてる間に生産性以外でもC#に劣る言語仕様に成り下がった
119デフォルトの名無しさん
2019/11/23(土) 11:54:18.05ID:EBCdzxcY C#がC++に勝る点って何?
120デフォルトの名無しさん
2019/11/23(土) 12:37:43.36ID:MxAA5A1q121デフォルトの名無しさん
2019/11/23(土) 13:16:56.60ID:iYvqsLVH 今はやりのpythonを使う人はpybind11とかでpython用のC++プラグイン作るだろうから、これからもC++は色んな所で使われ続ける。
122デフォルトの名無しさん
2019/11/23(土) 13:20:40.03ID:jA/F562D 後追いというか、C++を最も使い込んでいるのはMSなんだからC#に似てくるのは当然
123デフォルトの名無しさん
2019/11/23(土) 13:38:45.00ID:ZGOtfnpM 何寝言逝ってる
C#で新たな規格が決まって
だいぶ遅れて、C++がそれ取り込んでという順番がつづいてるだろうがwww
C#で新たな規格が決まって
だいぶ遅れて、C++がそれ取り込んでという順番がつづいてるだろうがwww
>>123
具体例を
具体例を
125デフォルトの名無しさん
2019/11/23(土) 15:03:58.13ID:BDEOs2uu 分かるところだとコルーチン
126デフォルトの名無しさん
2019/11/23(土) 15:06:16.23ID:BDEOs2uu C++/cli経由だけどenum classもそうじゃないかな
127デフォルトの名無しさん
2019/11/23(土) 16:14:47.04ID:KvoIJqUR ハーブシッターいるからね。委員会。
128デフォルトの名無しさん
2019/11/23(土) 16:18:17.70ID:pbrffxke 中間言語型のC#はC++の競合にはならない
129デフォルトの名無しさん
2019/11/23(土) 16:25:19.22ID:6kdTmmEk yieldは40年前からある技術だけどな。
cライクの言語に取り入れたという意味ではエポックメイキングだったんだろう。
その2つくらい?
cライクの言語に取り入れたという意味ではエポックメイキングだったんだろう。
その2つくらい?
130デフォルトの名無しさん
2019/11/23(土) 16:35:44.52ID:U8iKLMmJ131デフォルトの名無しさん
2019/11/23(土) 16:37:27.45ID:KvoIJqUR >>130
そこらへん。
そこらへん。
>>128
中間言語や VM の存在は C# の本質ではないと思います
マイクロソフトもいずれネイティブコードを吐く C# コンパイラを出してくるでしょう、私には VM なんてなんの腹の足しにもならない無駄な機構にしかみえません
中間言語や VM の存在は C# の本質ではないと思います
マイクロソフトもいずれネイティブコードを吐く C# コンパイラを出してくるでしょう、私には VM なんてなんの腹の足しにもならない無駄な機構にしかみえません
133デフォルトの名無しさん
2019/11/23(土) 16:49:37.49ID:KvoIJqUR PGのVM設計するときに参照するのがx86だったりとかで、結局ロックインしちゃってる気がする。
複数の未知のCPUにJITできるように組んでないような気がする。
複数の未知のCPUにJITできるように組んでないような気がする。
134デフォルトの名無しさん
2019/11/23(土) 17:12:01.03ID:3WxMvOwa wintelの目指すトコロはCPUアーキテクチャと専用高級言語の囲い込みでしょ
C++を潰すには、みたいな第二次ハロウィン怪文書を思案中だよきっと
C++を潰すには、みたいな第二次ハロウィン怪文書を思案中だよきっと
135デフォルトの名無しさん
2019/11/23(土) 17:37:47.06ID:CZ47p2RQ 言語で囲い込みとかないない
136デフォルトの名無しさん
2019/11/23(土) 18:11:45.72ID:U8iKLMmJ >>132
今でも .NET の中間コードは、native コード化できます。
今でも .NET の中間コードは、native コード化できます。
137デフォルトの名無しさん
2019/11/23(土) 18:14:16.80ID:U8iKLMmJ138デフォルトの名無しさん
2019/11/23(土) 18:31:11.69ID:D2JmV2eo GC無効化すればいいのか?
139デフォルトの名無しさん
2019/11/23(土) 18:34:17.97ID:pbrffxke deleteないのに
140デフォルトの名無しさん
2019/11/23(土) 20:26:44.43ID:pwNFgn+1 GC洗脳にかかったやつを正気に戻すのは大変だぞ
141デフォルトの名無しさん
2019/11/23(土) 20:59:39.93ID:W1wK9gMe ビジネス用途を想定しているC#と基礎技術を支えるC++が競合してると思ってるのが面白い
142デフォルトの名無しさん
2019/11/23(土) 21:20:13.50ID:fygFNKSM GC で止まるのが嫌なら、GCの無い、Rust を使え!
その代わり、かなり注意深くプログラミングしないといけないw
その代わり、かなり注意深くプログラミングしないといけないw
143デフォルトの名無しさん
2019/11/23(土) 21:24:45.73ID:W1wK9gMe 注意深くプログラミングしなくていい言語なんてあるのか
144デフォルトの名無しさん
2019/11/23(土) 21:28:04.03ID:ItEg5azI 昔は1日の業務の終わりにGCを走らせてから帰宅したもんだ。翌朝までにGCが完了してればそれで充分だった。
いまは物理メモリが広いので速度クリティカルな部分ではGCを無効化するのもありかもしれない。
それだとしてもC#はC++を置き換えられないよ。思想が違うもの。
いまは物理メモリが広いので速度クリティカルな部分ではGCを無効化するのもありかもしれない。
それだとしてもC#はC++を置き換えられないよ。思想が違うもの。
145デフォルトの名無しさん
2019/11/23(土) 21:35:18.52ID:fY6FJFDb やっぱ今衝突とか爆発しそうなその瞬間に寄りによってGC走ったら悔やんでも悔やみきれないからな
GCなし言語には生き残ってもらわないと
GCなし言語には生き残ってもらわないと
146デフォルトの名無しさん
2019/11/23(土) 21:57:34.36ID:jA/F562D147デフォルトの名無しさん
2019/11/23(土) 22:48:42.12ID:fY6FJFDb 詳しい情報サンクス
148デフォルトの名無しさん
2019/11/23(土) 23:09:28.20ID:rsD80hR9 >>145
えっ?
えっ?
149デフォルトの名無しさん
2019/11/23(土) 23:10:31.11ID:rsD80hR9150デフォルトの名無しさん
2019/11/24(日) 15:08:37.94ID:FJ6sVzWZ Rustはコンパイルが通った時点で(メモリ管理に関しては)注意深くプログラミングし終えたことになる、
抜け穴がないわけではないが普段気にするほどではない
抜け穴がないわけではないが普段気にするほどではない
151デフォルトの名無しさん
2019/11/24(日) 15:14:02.85ID:FJ6sVzWZ GCとプログラムの実行速度の姦計は、
GCが極力動かないようにプログラマの側で工夫する余地があるから必ずしも打つ手が無いわけでは…
(GCが動き出したらワーストケースの見積りが吹っ飛ぶというのはあるが
とゆーわけでC++に比べてC#がいまいち遅いのはGCが主犯というわけではなく、
オブジェクトに参照経由で毎回間接アクセスする言語仕様なのと
JITでマルチプラットフォーム対応可能なことと引き換えに最適化があんま利かせられていないせいだと思う
あとネイティブコードを呼び出す最にマーシャリングもするし、
ジャヴァのサンドボックス思想をパクるために仕方なかった側面、
GCが極力動かないようにプログラマの側で工夫する余地があるから必ずしも打つ手が無いわけでは…
(GCが動き出したらワーストケースの見積りが吹っ飛ぶというのはあるが
とゆーわけでC++に比べてC#がいまいち遅いのはGCが主犯というわけではなく、
オブジェクトに参照経由で毎回間接アクセスする言語仕様なのと
JITでマルチプラットフォーム対応可能なことと引き換えに最適化があんま利かせられていないせいだと思う
あとネイティブコードを呼び出す最にマーシャリングもするし、
ジャヴァのサンドボックス思想をパクるために仕方なかった側面、
152デフォルトの名無しさん
2019/11/24(日) 15:29:19.64ID:FJ6sVzWZ ユーザーコードがバックグラウンドタスク(応答時間非規定で可)でGCを使うだけなら
GCとリアルタイム性は両立しないわけでは無い
まあGC有りのプログラミング言語でプログラムする状況で
GCが使われる状況がバックグラウンドタスクのみに限定されるというのは
非現実的な想定かもしれんが
GCとリアルタイム性は両立しないわけでは無い
まあGC有りのプログラミング言語でプログラムする状況で
GCが使われる状況がバックグラウンドタスクのみに限定されるというのは
非現実的な想定かもしれんが
153デフォルトの名無しさん
2019/11/24(日) 16:02:47.84ID:s1tpy+px >>151
姦計とか、どんな文脈で使ってたんだよw
姦計とか、どんな文脈で使ってたんだよw
154はちみつ餃子 ◆8X2XSCHEME
2019/11/24(日) 17:46:57.62ID:FzCW75Pg 今時のよくできた GC (の実装) はインクリメンタル化されてるから、
良い感じに暇なときを見つけて動いてくれるっしょ
良い感じに暇なときを見つけて動いてくれるっしょ
155デフォルトの名無しさん
2019/11/24(日) 18:07:45.83ID:lsOVnPbd 技術職としての適性を著しく欠いた発言だな
156デフォルトの名無しさん
2019/11/24(日) 18:49:08.07ID:np+ynBzF あれ?この人職業プログラマなの?
趣味でお気楽にやってるだけの人だと持ってた
趣味でお気楽にやってるだけの人だと持ってた
157デフォルトの名無しさん
2019/11/24(日) 18:50:48.11ID:lsOVnPbd どうりでな
158デフォルトの名無しさん
2019/11/24(日) 19:43:00.54ID:aq7LfmWh わたくしが「現代現象」と呼称する一連の悲劇的な出来事は
なんの変哲もない日常がいきなり変貌を遂げるものであり
その猶予は0.1秒もない
スイスチーズモデルを天文学的数字ですり抜けたそれら現代現象への対処時間は大抵は1秒未満になる
なので未来になればなるほど思いもよらない意味不明で突発的で素早い破壊事象が起こる
これを踏まえて車載映像の事故映像を見てみると猶予が本当に少ないことが分かる
なので自動運転では各種の重い処理はマーフィーの法則によれば衝突する0.1秒前の「暇な時」に動き出す
これを超克するには未来予知が必要になる
なんの変哲もない日常がいきなり変貌を遂げるものであり
その猶予は0.1秒もない
スイスチーズモデルを天文学的数字ですり抜けたそれら現代現象への対処時間は大抵は1秒未満になる
なので未来になればなるほど思いもよらない意味不明で突発的で素早い破壊事象が起こる
これを踏まえて車載映像の事故映像を見てみると猶予が本当に少ないことが分かる
なので自動運転では各種の重い処理はマーフィーの法則によれば衝突する0.1秒前の「暇な時」に動き出す
これを超克するには未来予知が必要になる
>>155
はちみつさんは lisp-er ですから、lisp-er 的な視点で現在のプログラミング環境をみれば、
やっと時代が lisp に追いついてきた、という感慨が発生するのも自然だと思いますよ
GC も lisp の産物ですから
「適正に欠く」と判断する推論内容は理解できませんね
はちみつさんは lisp-er ですから、lisp-er 的な視点で現在のプログラミング環境をみれば、
やっと時代が lisp に追いついてきた、という感慨が発生するのも自然だと思いますよ
GC も lisp の産物ですから
「適正に欠く」と判断する推論内容は理解できませんね
160デフォルトの名無しさん
2019/11/24(日) 20:23:39.32ID:lsOVnPbd >>160
私に適性がないのはそのとおりなのでしょうが、いちいち定量的に条件を明示して話をしなければならないわけでもないでしょう
魔法的にアレするレイヤーの話は別途規定する前提で、今は特に大局観を語りたいときにはね
あなたは、戦術レベルの話はできても戦略レベルの話は理解できない大局観に欠いた狭量な、例えば java 屋さんに見えますね
私に適性がないのはそのとおりなのでしょうが、いちいち定量的に条件を明示して話をしなければならないわけでもないでしょう
魔法的にアレするレイヤーの話は別途規定する前提で、今は特に大局観を語りたいときにはね
あなたは、戦術レベルの話はできても戦略レベルの話は理解できない大局観に欠いた狭量な、例えば java 屋さんに見えますね
162デフォルトの名無しさん
2019/11/24(日) 22:00:07.13ID:lsOVnPbd163デフォルトの名無しさん
2019/11/24(日) 22:15:54.73ID:zs+LjqkQ ほんと攻撃的なやつが多いな
これだからC++界隈は
これだからC++界隈は
164デフォルトの名無しさん
2019/11/24(日) 22:23:01.28ID:gOHxLuuk165デフォルトの名無しさん
2019/11/24(日) 23:26:27.29ID:O9JrjuKo C++erは献血してから書き込めよ
166はちみつ餃子 ◆8X2XSCHEME
2019/11/25(月) 00:55:16.50ID:a5DfrA3a167デフォルトの名無しさん
2019/11/25(月) 07:22:11.28ID:Nb9YSlRo > 富豪的プログラミング
相手してはいかんやつだったコイツ
相手してはいかんやつだったコイツ
168デフォルトの名無しさん
2019/11/25(月) 10:37:33.23ID:fJS33Jzt169デフォルトの名無しさん
2019/11/25(月) 10:43:38.75ID:Nb9YSlRo いや多様な使い方を求めるからこそ
GC厨の矮小な発想範囲を危惧するんだ
GC厨の矮小な発想範囲を危惧するんだ
170デフォルトの名無しさん
2019/11/25(月) 16:07:54.78ID:biP2ABGV この板にまともなやつ少ないだけじゃないの
171デフォルトの名無しさん
2019/11/25(月) 17:10:10.70ID:N1T6mRww >>170
じつは、きみが正解
じつは、きみが正解
172デフォルトの名無しさん
2019/11/25(月) 17:43:35.94ID:iOqWCNFx >>170
お前はいつも正しい
お前はいつも正しい
>>170
説得力のあるご意見ですね…
説得力のあるご意見ですね…
174デフォルトの名無しさん
2019/11/25(月) 20:35:32.15ID:0R6sv3EZ >>170
じゃあ俺もアンカつけとくか
じゃあ俺もアンカつけとくか
175デフォルトの名無しさん
2019/11/25(月) 20:50:09.52ID:X/XdXIky >>173
竹島はどこの国の領土ですか?
竹島はどこの国の領土ですか?
>>175
日本だと思っていますが?
日本だと思っていますが?
177デフォルトの名無しさん
2019/11/25(月) 20:59:20.98ID:jiZC6v9k >>170
この板で唯一まともな僕も赤くしておこう
この板で唯一まともな僕も赤くしておこう
178デフォルトの名無しさん
2019/11/25(月) 21:40:59.01ID:p8s7YmVo C#って、これ以上の普及はもう無理だろ。WindowsのUIアプリでしか存在価値はない。
MonoはイマイチでJavaはなくならんし、WebもAIもスクリプト言語系でOK。
タイムクリティカルなエンジン部をC++で書いて、スクリプト言語(Python含めて)
使うのが主流化してる。C#を使う場面が無い。
MonoはイマイチでJavaはなくならんし、WebもAIもスクリプト言語系でOK。
タイムクリティカルなエンジン部をC++で書いて、スクリプト言語(Python含めて)
使うのが主流化してる。C#を使う場面が無い。
179デフォルトの名無しさん
2019/11/25(月) 21:58:00.63ID:YppxgWfG Unity
180デフォルトの名無しさん
2019/11/25(月) 21:58:44.19ID:K0cOW7SD 会社の上層部がMSの営業に騙されてAzureの導入を決めてしまった場合、
マネージドサービスの利用のためにはC#を使用せざるを得ない
他の言語では事実上使い物にならない
マネージドサービスの利用のためにはC#を使用せざるを得ない
他の言語では事実上使い物にならない
181デフォルトの名無しさん
2019/11/26(火) 00:48:28.50ID:jE+AmQNT Windowsのデスクトップアプリを手っ取り早く作るにはC#以外の選択肢が無い
182デフォルトの名無しさん
2019/11/26(火) 00:49:10.79ID:FjVBoEgv 保守的な経営者とそこそこの技術力の社員でも使えるんだからAzureというのは大したもんだな
183デフォルトの名無しさん
2019/11/26(火) 03:32:39.97ID:PQgL7aAd windowsに関わってる限りC#とC++/CLIからは逃れられない
184デフォルトの名無しさん
2019/11/26(火) 03:38:53.96ID:jE+AmQNT C++/CLIと関わったことがない
185デフォルトの名無しさん
2019/11/26(火) 05:29:20.45ID:PYT33B53 >>132
制限付きながら、既にネイティブコードは吐ける
制限付きながら、既にネイティブコードは吐ける
186デフォルトの名無しさん
2019/11/26(火) 05:54:06.62ID:PYT33B53 >タイムクリティカルなエンジン部をC++で書いて、スクリプト言語(Python含めて)
>使うのが主流化してる。C#を使う場面が無い。
主流て、そんなもん昔からほぼこういう書き方してるだろwww
そこで、スクリプト言語を使ってどれだけ実行時間に影響与えてるか正しく認識してないのが多い。
ここでC#使ってこんなに違うのかと初めて気づく。
そして、単に実行速度ってことならエンジンにC++使わずともC#でもそこそこ勝負できるってことも認識するのが情弱。
タイムクリティカルな用途ならそれこそOSからしてラウンドロビンなんか使わない。
RTOSでわざわざ、メモリプール設定してるのに、new/delete繰り返すようなC++流の書き方はそもそもよろしくない。
C++で非推奨の限りなくpure Cに近い書き方してるのはもはやC++とはいわんだろ。
>使うのが主流化してる。C#を使う場面が無い。
主流て、そんなもん昔からほぼこういう書き方してるだろwww
そこで、スクリプト言語を使ってどれだけ実行時間に影響与えてるか正しく認識してないのが多い。
ここでC#使ってこんなに違うのかと初めて気づく。
そして、単に実行速度ってことならエンジンにC++使わずともC#でもそこそこ勝負できるってことも認識するのが情弱。
タイムクリティカルな用途ならそれこそOSからしてラウンドロビンなんか使わない。
RTOSでわざわざ、メモリプール設定してるのに、new/delete繰り返すようなC++流の書き方はそもそもよろしくない。
C++で非推奨の限りなくpure Cに近い書き方してるのはもはやC++とはいわんだろ。
187デフォルトの名無しさん
2019/11/26(火) 07:33:35.08ID:auNO4ARl > RTOSでわざわざ(中略)C++流
そう思い込んでる迷惑なのがいるんだよ
おまえみたいな
そう思い込んでる迷惑なのがいるんだよ
おまえみたいな
188デフォルトの名無しさん
2019/11/26(火) 08:07:38.46ID:uPJEEVDZ タイムクリティカルもいろんなレベルがあるから
ハード実装
FPGA
OSレスのフルアセンブラ
RTOS + C
....
クラウド
ハード実装
FPGA
OSレスのフルアセンブラ
RTOS + C
....
クラウド
189デフォルトの名無しさん
2019/11/26(火) 08:12:14.93ID:uPJEEVDZ > C++で非推奨の限りなくpure Cに近い書き方してるのはもはやC++とはいわんだろ。
テンプレート、ラムダ、...を使いまくるコーディングだけがC++じゃない
小規模組み込みでnewすら使わない泥臭いC++もC++
テンプレート、ラムダ、...を使いまくるコーディングだけがC++じゃない
小規模組み込みでnewすら使わない泥臭いC++もC++
190デフォルトの名無しさん
2019/11/26(火) 08:51:30.13ID:auNO4ARl 禿も必要な機能だけを使え、無理に全機能を使おうとするなって言ってるね
191デフォルトの名無しさん
2019/11/26(火) 10:50:10.03ID:6Teht3Z8 クラスにupdateという関数があってそれが何回もメイン関数にあるインスタンスから呼び出されるのですが
update内で変数宣言を書いている場合、領域の確保は呼び出される度に行われますか?
update内で変数宣言を書いている場合、領域の確保は呼び出される度に行われますか?
192デフォルトの名無しさん
2019/11/26(火) 11:27:29.29ID:auNO4ARl うん
193デフォルトの名無しさん
2019/11/26(火) 12:08:17.92ID:GwsQnBsH その宣言にstaticがついてなければ毎回領域確保が行われる
194デフォルトの名無しさん
2019/11/26(火) 12:56:56.77ID:BYZ9sIOZ 変数の宣言と定義、用語の違いを利用した罠かも知れん。
195デフォルトの名無しさん
2019/11/26(火) 13:01:29.72ID:njyF587z 変数自体はスタック(またはレジスタ)に割り当てられるから
確保解放のコストは気にするな
変数の内部(コンストラクタ他)でのメモリ確保解放や初期化処のコストは当然気にしよう
パフォーマンスの問題であればクラス変数にする等
確保解放のコストは気にするな
変数の内部(コンストラクタ他)でのメモリ確保解放や初期化処のコストは当然気にしよう
パフォーマンスの問題であればクラス変数にする等
196デフォルトの名無しさん
2019/11/26(火) 13:05:09.36ID:auNO4ARl 関数を使おうってときに
関数内変数をデータメンバに改造するアホが
うちの若いのにいたら焼きだ
関数内変数をデータメンバに改造するアホが
うちの若いのにいたら焼きだ
197デフォルトの名無しさん
2019/11/26(火) 13:11:02.62ID:njyF587z パフォーマンスに問題があるならやるしかない
198デフォルトの名無しさん
2019/11/26(火) 13:14:44.26ID:njyF587z バッファをあらかじめ確保しておくなんて
ごく当たり前のことだと思ってたけど
そうじゃないのか?
updateなんていう、
クラスの内部に直結してそうな関数ならなおさら
ごく当たり前のことだと思ってたけど
そうじゃないのか?
updateなんていう、
クラスの内部に直結してそうな関数ならなおさら
199デフォルトの名無しさん
2019/11/26(火) 13:16:07.35ID:XO/gVUyI とか抜かすやつに限って計測もせずに片っ端から最適化と称した難読化をしやがる
200デフォルトの名無しさん
2019/11/26(火) 13:18:32.56ID:njyF587z パフォーマンスの問題であれば
パフォーマンスに問題があるなら
パフォーマンスに問題があるなら
201デフォルトの名無しさん
2019/11/26(火) 13:20:23.43ID:XO/gVUyI202デフォルトの名無しさん
2019/11/26(火) 13:23:10.22ID:njyF587z パフォーマンスを考えなくていいプログラムなら
そもそもC++を選ぶのが間違い
そもそもC++を選ぶのが間違い
203デフォルトの名無しさん
2019/11/26(火) 13:24:09.92ID:njyF587z 少なくとも質問者は気にしている
204デフォルトの名無しさん
2019/11/26(火) 13:25:28.02ID:njyF587z パフォーマンスなのかフラグメントなのか使用リソースなのか
何を気にしてるのかはわからないけど
何を気にしてるのかはわからないけど
205デフォルトの名無しさん
2019/11/26(火) 13:35:02.29ID:XO/gVUyI 再入やマルチスレッドで死ぬ恐れもあるから、このレベルの初心者にバッファの事前確保が当然だなどという阿呆な考えを植え付けることはテロ行為に等しい
206デフォルトの名無しさん
2019/11/26(火) 14:14:31.87ID:jE+AmQNT 内部でnewを使ってるクラスの変数かも知れない
207デフォルトの名無しさん
2019/11/26(火) 15:17:34.53ID:GwsQnBsH >>191はstaticがついてなければyesで終わる話
それに勝手な前提つけたしていらん押し付けをするからお前らは駄目なんだぞ
それに勝手な前提つけたしていらん押し付けをするからお前らは駄目なんだぞ
208デフォルトの名無しさん
2019/11/26(火) 15:28:32.19ID:FGS0cB19 >>207
会話するのが嫌いならわざわざ書き込まなくて良いんだよ
会話するのが嫌いならわざわざ書き込まなくて良いんだよ
209デフォルトの名無しさん
2019/11/26(火) 15:51:04.71ID:jE+AmQNT ゴミみたいな会話するな
210デフォルトの名無しさん
2019/11/26(火) 16:11:06.83ID:FF/Zqwz/ https://ideone.com/kprgQF
ちょっと暇だったので、
昔のビットシフトの掛け算と割り算って、
今の技術使ったら爆速になるんじゃないかと思ったのですよ。
で、書いてみたのだけど、知識不足で到達しないんだ。
なんでだろう??
ちょっと暇だったので、
昔のビットシフトの掛け算と割り算って、
今の技術使ったら爆速になるんじゃないかと思ったのですよ。
で、書いてみたのだけど、知識不足で到達しないんだ。
なんでだろう??
211デフォルトの名無しさん
2019/11/26(火) 16:15:11.65ID:fUnM+X7O >>202
そのプログラム全体が速度が要求される訳でもなかろう。必要なところだけ必要なぶんだけ高速化しろよ。
速度が要求されない部分も別にわざわざ別の言語で作るメリットがなければC++のままで構わないわけだし。
そのプログラム全体が速度が要求される訳でもなかろう。必要なところだけ必要なぶんだけ高速化しろよ。
速度が要求されない部分も別にわざわざ別の言語で作るメリットがなければC++のままで構わないわけだし。
212デフォルトの名無しさん
2019/11/26(火) 16:18:03.80ID:fUnM+X7O >>208
質問者にとっては混乱させられるだけの余分な情報だし、知っている人からすれば当たり前で価値のない情報だし、実のない議論したいだけの無意味な付け足しは要らんよ。
質問者にとっては混乱させられるだけの余分な情報だし、知っている人からすれば当たり前で価値のない情報だし、実のない議論したいだけの無意味な付け足しは要らんよ。
213デフォルトの名無しさん
2019/11/26(火) 16:46:50.53ID:FF/Zqwz/ 俺が言いたいのは一つだ。
C言語は超高等言語なので、その前にC++使うのだ!
C言語は超高等言語なので、その前にC++使うのだ!
214デフォルトの名無しさん
2019/11/26(火) 17:39:44.76ID:M+fYb0eE215デフォルトの名無しさん
2019/11/26(火) 17:59:37.88ID:yLsU10sd216デフォルトの名無しさん
2019/11/26(火) 18:06:10.26ID:M+fYb0eE217デフォルトの名無しさん
2019/11/26(火) 18:06:14.04ID:Wuw5jSRm218デフォルトの名無しさん
2019/11/26(火) 18:52:42.91ID:FF/Zqwz/219デフォルトの名無しさん
2019/11/26(火) 19:27:14.09ID:Kb2Sko2q 爆速にならなくても1サイクルだろうよ
220デフォルトの名無しさん
2019/11/26(火) 19:41:24.45ID:78UVTJ0X 1サイクルじゃシフトしか出来ない
221デフォルトの名無しさん
2019/11/26(火) 19:48:34.46ID:2UYQ/Noe なんか根本的にconstexprを勘違いしてる初心者がよくそういうこと言うけど
定数同士の計算の省略なんか大昔からある最適化だぞ
C++03以前を偉そうにデイスってる奴(>>210は別として)最近多いけど、そういうのに限ってこういう基礎が全くわかってない
定数同士の計算の省略なんか大昔からある最適化だぞ
C++03以前を偉そうにデイスってる奴(>>210は別として)最近多いけど、そういうのに限ってこういう基礎が全くわかってない
222デフォルトの名無しさん
2019/11/26(火) 19:57:12.90ID:dLX9Z9/K constexprの利点はtemplateとif constexprの組み合わせがおすすめだと思うの。
224デフォルトの名無しさん
2019/11/26(火) 20:23:56.31ID:78UVTJ0X225デフォルトの名無しさん
2019/11/26(火) 20:29:02.34ID:78UVTJ0X よく分からない多倍長ライブラリを使うのであれば
当然コンパイル時に解決出来るとは限らない
当然コンパイル時に解決出来るとは限らない
226デフォルトの名無しさん
2019/11/26(火) 20:32:56.90ID:sE/nea3J >>223
多倍長の乗算は筆算の要領で出来るの算数程度の数学で足りるが、
多倍長の除算は、CPUが持っている除算命令を使って行おうとすると
数学的な考える力が必要になる。アルゴリズムは既に有ることはあるはずだが、
丁寧に解説されているわけではないので自分の力で証明できるくらいの
人で無いと難しいと思う。
多倍長の乗算は筆算の要領で出来るの算数程度の数学で足りるが、
多倍長の除算は、CPUが持っている除算命令を使って行おうとすると
数学的な考える力が必要になる。アルゴリズムは既に有ることはあるはずだが、
丁寧に解説されているわけではないので自分の力で証明できるくらいの
人で無いと難しいと思う。
227デフォルトの名無しさん
2019/11/26(火) 20:35:31.27ID:78UVTJ0X >>226
素人が適当な事を言わない方が良いかと
素人が適当な事を言わない方が良いかと
228デフォルトの名無しさん
2019/11/26(火) 20:39:17.37ID:78UVTJ0X 多倍長の乗算は、
非常に桁数が少ないときのみ筆算方式
もうちょっと大きいとカラツバ
もっと大きいとフーリエ変換
除算はニュートン法が一般的かと
もちろん、
特殊な形だと特殊な方法があったりする
非常に桁数が少ないときのみ筆算方式
もうちょっと大きいとカラツバ
もっと大きいとフーリエ変換
除算はニュートン法が一般的かと
もちろん、
特殊な形だと特殊な方法があったりする
231デフォルトの名無しさん
2019/11/26(火) 20:49:49.76ID:78UVTJ0X232デフォルトの名無しさん
2019/11/26(火) 20:51:56.72ID:78UVTJ0X 除算を筆算方式なんかでやってたら日がくれる
233デフォルトの名無しさん
2019/11/26(火) 20:54:28.73ID:78UVTJ0X 分子の桁数が大きくて分母の桁数が非常に小さい場合のみ筆算方式が有効
この場合も、
非常に遅い割り算命令なんかは使いませんが
この場合も、
非常に遅い割り算命令なんかは使いませんが
234デフォルトの名無しさん
2019/11/26(火) 20:56:28.50ID:sE/nea3J >>229
>除算は筆算流しか手はありません
そうではありません。除算をCPUにある除算命令を使った筆算で行うには、x/y の
xのBIT数を増やすのは容易ですが、yの方のBIT数を増やすのは非常に難しいのです。
不可能では有りませんが、非常に数学的な注意が必要となります。
私は数学マニアみたいなものなので、自分なりのアルゴリズムを作ったことが
ありますが、個人的には、それをするためにはテーラー展開の剰余項や解析学的な
知識が必要だと思っています。
考えもしませんでしたが、他にも除算は、ニュートン方を使う流儀もあるそうです。
>除算は筆算流しか手はありません
そうではありません。除算をCPUにある除算命令を使った筆算で行うには、x/y の
xのBIT数を増やすのは容易ですが、yの方のBIT数を増やすのは非常に難しいのです。
不可能では有りませんが、非常に数学的な注意が必要となります。
私は数学マニアみたいなものなので、自分なりのアルゴリズムを作ったことが
ありますが、個人的には、それをするためにはテーラー展開の剰余項や解析学的な
知識が必要だと思っています。
考えもしませんでしたが、他にも除算は、ニュートン方を使う流儀もあるそうです。
235デフォルトの名無しさん
2019/11/26(火) 20:58:37.06ID:sE/nea3J >>233
いえ、そうでもありません。テーラー展開の剰余項を注意深く扱うと、
CPUがもつdiv命令を使った筆算の場合でも、x/y の y の方のBIT数を
増やすアルゴリズムがありえます。何度も書いてますが、それは数学的に
とても慎重さを必要とします。
いえ、そうでもありません。テーラー展開の剰余項を注意深く扱うと、
CPUがもつdiv命令を使った筆算の場合でも、x/y の y の方のBIT数を
増やすアルゴリズムがありえます。何度も書いてますが、それは数学的に
とても慎重さを必要とします。
236デフォルトの名無しさん
2019/11/26(火) 21:00:22.71ID:sE/nea3J237デフォルトの名無しさん
2019/11/26(火) 21:03:02.62ID:78UVTJ0X238デフォルトの名無しさん
2019/11/26(火) 21:04:44.09ID:78UVTJ0X 分母、分子それぞれの桁数によって
最適な方法は変わる
だからそういった条件をセットで語らないと意味がない
最適な方法は変わる
だからそういった条件をセットで語らないと意味がない
239デフォルトの名無しさん
2019/11/26(火) 21:06:41.35ID:78UVTJ0X 巨大な桁数同士だとニュートン法が速い
乗算の3倍ほどの時間で出来る
割り算を組み合わせたらそんな時間では計算出来ない
乗算の3倍ほどの時間で出来る
割り算を組み合わせたらそんな時間では計算出来ない
>>231
ニュートン法(にゅーとんらぷそん)って、曲線で与えられる関数の根の一つを求める方法でしょ?
いわゆる実数の根を求める方法であって、整数の剰余を求めることはニュートン法では無理なのでは?
何がどうなって「当然」なんですか?
ニュートン法(にゅーとんらぷそん)って、曲線で与えられる関数の根の一つを求める方法でしょ?
いわゆる実数の根を求める方法であって、整数の剰余を求めることはニュートン法では無理なのでは?
何がどうなって「当然」なんですか?
241デフォルトの名無しさん
2019/11/26(火) 21:19:25.20ID:78UVTJ0X 除算が出来るんだから剰余も当然求められる
243デフォルトの名無しさん
2019/11/26(火) 21:23:39.77ID:78UVTJ0X 遅くないです
>>243
本当ですか?わざわざ、あらためて掛け算をするんですよ?私には馬鹿みたいな方法にみえますが?
本当ですか?わざわざ、あらためて掛け算をするんですよ?私には馬鹿みたいな方法にみえますが?
245デフォルトの名無しさん
2019/11/26(火) 21:26:45.06ID:78UVTJ0X 馬鹿みたいな方法にみえるのはあなたが馬鹿だからです
246デフォルトの名無しさん
2019/11/26(火) 21:29:07.44ID:sE/nea3J >>242
ニュートン法なので、
z = b / a の z を求めたい場合、直線 y = a * x - b と x 軸(y=0) との交点の
x を求めることによって行う。その際、x0, x1, ・・・, xn のように x を
漸化的に交点に近づけていく。数学的直感だと、その途中で剰余も求められ
るように出来そうな気がする。
ニュートン法なので、
z = b / a の z を求めたい場合、直線 y = a * x - b と x 軸(y=0) との交点の
x を求めることによって行う。その際、x0, x1, ・・・, xn のように x を
漸化的に交点に近づけていく。数学的直感だと、その途中で剰余も求められ
るように出来そうな気がする。
247デフォルトの名無しさん
2019/11/26(火) 21:43:45.68ID:sE/nea3J >>246
色々なやり方はあると思うけど、2^m <= a < 2^(m+1) の場合、
x_{k+1} = x_k - (y_k << m);
y_{k+1} = a * x_{k+1} - b;
の漸化式でいけるかも知れない。
間違っていたらゴメンなさい。
色々なやり方はあると思うけど、2^m <= a < 2^(m+1) の場合、
x_{k+1} = x_k - (y_k << m);
y_{k+1} = a * x_{k+1} - b;
の漸化式でいけるかも知れない。
間違っていたらゴメンなさい。
248デフォルトの名無しさん
2019/11/26(火) 21:44:43.61ID:78UVTJ0X249デフォルトの名無しさん
2019/11/26(火) 21:49:53.94ID:sE/nea3J250デフォルトの名無しさん
2019/11/26(火) 21:53:39.27ID:sE/nea3J >>247
ここで、0<= y_k < x_k が満たされれば、x_k が商、y_k が余りだと思う。
初期条件は、
x_0 = 1;
y_0 = a * x_0 - b;
とすればよいはず。
途中、y_k が負の値になることが有るが、問題ない。
ここで、0<= y_k < x_k が満たされれば、x_k が商、y_k が余りだと思う。
初期条件は、
x_0 = 1;
y_0 = a * x_0 - b;
とすればよいはず。
途中、y_k が負の値になることが有るが、問題ない。
251デフォルトの名無しさん
2019/11/26(火) 21:55:42.20ID:78UVTJ0X 前提は分母も分子も巨大な桁数で良いんだよね?
252デフォルトの名無しさん
2019/11/26(火) 21:56:38.32ID:78UVTJ0X 分母の桁数があまり大きくないならテーラー展開も有効だよ
253デフォルトの名無しさん
2019/11/26(火) 21:57:23.51ID:sE/nea3J >>251
一般的な場合を取り扱うのであれば、その条件が、もっともらしいと思います。
一般的な場合を取り扱うのであれば、その条件が、もっともらしいと思います。
254デフォルトの名無しさん
2019/11/26(火) 21:57:37.73ID:78UVTJ0X いずれにしろ、
除算命令を多用することは無い
除算命令を多用することは無い
255デフォルトの名無しさん
2019/11/26(火) 21:58:41.68ID:sE/nea3J ニュートン法を使うのは初めて聞きました。
とても勉強になります。
とても勉強になります。
256デフォルトの名無しさん
2019/11/26(火) 21:59:47.69ID:78UVTJ0X >>253
それで漸化式3回なんてことはあり得ないかと
それで漸化式3回なんてことはあり得ないかと
257デフォルトの名無しさん
2019/11/26(火) 22:01:24.02ID:sE/nea3J ○<< m とせずに ○<< (m+1) としておけば、y_k は負の数にならないかも
知れない。ただ、数学的直感的に、収束速度は、前者の方が速い気がする。
知れない。ただ、数学的直感的に、収束速度は、前者の方が速い気がする。
258デフォルトの名無しさん
2019/11/26(火) 22:03:05.27ID:78UVTJ0X259デフォルトの名無しさん
2019/11/26(火) 22:07:18.12ID:78UVTJ0X 八木アンテナを八木宇田アンテナと書かないのと同程度に
ニュートンラプソン法とは書かないと思っているので
印象に残ってます
ニュートンラプソン法とは書かないと思っているので
印象に残ってます
>>258
raphson の ph を摩擦音で読むか、有気破裂音で読むかは、選択可能かと思っていましたが
raphson の ph を摩擦音で読むか、有気破裂音で読むかは、選択可能かと思っていましたが
261デフォルトの名無しさん
2019/11/26(火) 22:10:11.81ID:sE/nea3J >>247
まず、シフトの向きが右で、正しくは、○>>○ でした。
まず、シフトの向きが右で、正しくは、○>>○ でした。
262デフォルトの名無しさん
2019/11/26(火) 22:16:30.64ID:78UVTJ0X >>260
何を指摘されてるのかわかってないwww
何を指摘されてるのかわかってないwww
263デフォルトの名無しさん
2019/11/26(火) 22:19:47.56ID:sE/nea3J >>256
では、BIT SHIFT ではなく、浮動小数点演算にして、以下の様にすれば速くなるかもしれません。
(i) 初期条件
η = 1/a; // 多倍長の浮動小数点
x_0 = 1;
y_0 = a * x_0 - b;
(ii) 漸化式
x_{k+1} = x_k - (int_N)(y_k * η);
y_{k+1} = a * x_{k+1} - b;
但し、int_N は、多倍長の浮動小数点を多倍長整数に直す cast。
では、BIT SHIFT ではなく、浮動小数点演算にして、以下の様にすれば速くなるかもしれません。
(i) 初期条件
η = 1/a; // 多倍長の浮動小数点
x_0 = 1;
y_0 = a * x_0 - b;
(ii) 漸化式
x_{k+1} = x_k - (int_N)(y_k * η);
y_{k+1} = a * x_{k+1} - b;
但し、int_N は、多倍長の浮動小数点を多倍長整数に直す cast。
264デフォルトの名無しさん
2019/11/26(火) 22:34:50.59ID:FauhtWma #include <iostream>
using namespace std;
int main() {
string str = "abc";
cout << &str << endl;
cout << str << endl;
cout << str.c_str() << endl;
return 0;
}
VisualStudio2019のdebugとreleaseとで&strのメモリダンプ内容が異なるのはなぜでしょうか?
debug : 78 f7 b6 00 61 62 63 00
release : 61 62 63 00
using namespace std;
int main() {
string str = "abc";
cout << &str << endl;
cout << str << endl;
cout << str.c_str() << endl;
return 0;
}
VisualStudio2019のdebugとreleaseとで&strのメモリダンプ内容が異なるのはなぜでしょうか?
debug : 78 f7 b6 00 61 62 63 00
release : 61 62 63 00
265デフォルトの名無しさん
2019/11/26(火) 22:34:54.21ID:78UVTJ0X 1/a が求まれば
あとは乗算2回(と軽い演算)で剰余が求まるでしょ
漸化式にするまでもなく
あとは乗算2回(と軽い演算)で剰余が求まるでしょ
漸化式にするまでもなく
266デフォルトの名無しさん
2019/11/26(火) 22:36:37.97ID:78UVTJ0X >>264
デバッグ情報とか破壊検出用データとかじゃ?
デバッグ情報とか破壊検出用データとかじゃ?
267デフォルトの名無しさん
2019/11/26(火) 22:37:41.67ID:sE/nea3J268デフォルトの名無しさん
2019/11/26(火) 22:42:23.06ID:FauhtWma269デフォルトの名無しさん
2019/11/26(火) 22:44:29.12ID:78UVTJ0X270デフォルトの名無しさん
2019/11/26(火) 22:45:06.01ID:sE/nea3J >>268
そうなりますね。
malloc() や new なども、Debug 版と Release 版ではライブラリに互換性が
有りません。Debug 版では、まさに、破壊検出用の埋め草のような物が入っていたり、
new を行った行番号情報が入っていたりします。
そうなりますね。
malloc() や new なども、Debug 版と Release 版ではライブラリに互換性が
有りません。Debug 版では、まさに、破壊検出用の埋め草のような物が入っていたり、
new を行った行番号情報が入っていたりします。
271デフォルトの名無しさん
2019/11/26(火) 22:46:50.29ID:FauhtWma272デフォルトの名無しさん
2019/11/26(火) 22:49:29.81ID:sE/nea3J >>269
私は特に仮定はしていませんが、四倍浮動小数点型などに興味があり、
それを整数演算に置き換えて実装してみようかと思っていたりするので、
割る数も割られる数も同じくらいのBIT数の整数の場合に興味があります。
前に調べたところ、倍精度浮動小数点演算を用いて、四倍精度浮動小数点
の乗算、除算まで実装する方法があるようですね。ただし、その場合、
Intelの内部拡張倍精度(80BIT)方式をONにしていると駄目なんだそうですが。
私は特に仮定はしていませんが、四倍浮動小数点型などに興味があり、
それを整数演算に置き換えて実装してみようかと思っていたりするので、
割る数も割られる数も同じくらいのBIT数の整数の場合に興味があります。
前に調べたところ、倍精度浮動小数点演算を用いて、四倍精度浮動小数点
の乗算、除算まで実装する方法があるようですね。ただし、その場合、
Intelの内部拡張倍精度(80BIT)方式をONにしていると駄目なんだそうですが。
273デフォルトの名無しさん
2019/11/26(火) 22:57:18.80ID:78UVTJ0X274デフォルトの名無しさん
2019/11/26(火) 22:58:49.33ID:YRq1zw3m275デフォルトの名無しさん
2019/11/26(火) 22:59:27.13ID:sE/nea3J >>265
aがN BIT の場合、例えば、1/a を、64BIT 程度で求めた場合は、
(N / 64) (回) 程度の乗算が必要になりそうです。
1/a を高速に N BIT まで求めるアルゴリズムがありますでしょうか?
aがN BIT の場合、例えば、1/a を、64BIT 程度で求めた場合は、
(N / 64) (回) 程度の乗算が必要になりそうです。
1/a を高速に N BIT まで求めるアルゴリズムがありますでしょうか?
276デフォルトの名無しさん
2019/11/26(火) 22:59:32.53ID:78UVTJ0X それ以前の普通の乗算でも出来るけど
AVXでSIMD化出来るのでたくさん計算するならぜひ
AVXでSIMD化出来るのでたくさん計算するならぜひ
277デフォルトの名無しさん
2019/11/26(火) 23:01:27.32ID:sE/nea3J >>273
興味深いです。教えていただければ幸いです。
興味深いです。教えていただければ幸いです。
278デフォルトの名無しさん
2019/11/26(火) 23:02:58.56ID:YRq1zw3m279デフォルトの名無しさん
2019/11/26(火) 23:05:02.93ID:78UVTJ0X >>275
私が何度か除算は乗算の3倍の時間と書いたのは
例えば100万桁同士の除算は100万桁同士の乗算の3倍な時間という意味
乗算命令の回数ではなくて
aが100万桁で1/aを100万桁精度で求めるのは
100万桁同士の乗算の2倍くらいの時間で出来る
私が何度か除算は乗算の3倍の時間と書いたのは
例えば100万桁同士の除算は100万桁同士の乗算の3倍な時間という意味
乗算命令の回数ではなくて
aが100万桁で1/aを100万桁精度で求めるのは
100万桁同士の乗算の2倍くらいの時間で出来る
280デフォルトの名無しさん
2019/11/26(火) 23:10:41.35ID:sE/nea3J 例えば、割り算部分をテーラー展開ですか。
281デフォルトの名無しさん
2019/11/26(火) 23:17:37.02ID:78UVTJ0X >>277
{a_hi, a_lo} と {b_hi, b_lo} の乗算で
a_hi * b_hi を求めてから、
本当の a_hi * b_hi との誤差を求めるところ
c_hi = a_hi * b_hi とやってから
a_hi * b_hi - c_hi
をFMAでやれば誤差が簡単に求まる
{a_hi, a_lo} と {b_hi, b_lo} の乗算で
a_hi * b_hi を求めてから、
本当の a_hi * b_hi との誤差を求めるところ
c_hi = a_hi * b_hi とやってから
a_hi * b_hi - c_hi
をFMAでやれば誤差が簡単に求まる
282デフォルトの名無しさん
2019/11/26(火) 23:19:37.46ID:78UVTJ0X fusedな3個の足し算命令とかもあると
加減算も簡単になるんだけど
そんな命令は(他のCPU含めて)見たことがない
加減算も簡単になるんだけど
そんな命令は(他のCPU含めて)見たことがない
283デフォルトの名無しさん
2019/11/26(火) 23:24:07.48ID:sE/nea3J a=1+q の時:
y/a=y/(1+q)
=y*{1 - q + q^2 - q^3 + ... }
=y*(1-q*(1-q*(1-q...))}
y/a=y/(1+q)
=y*{1 - q + q^2 - q^3 + ... }
=y*(1-q*(1-q*(1-q...))}
284デフォルトの名無しさん
2019/11/26(火) 23:30:51.74ID:sE/nea3J >>283
この式は、|q|<1の場合にだけ正しいので、
aをa=u*2^n (u = 1.0 + q)の形式に直してから
1/a = 1/(u*2^n)=1/(1+q)*2^(-n)
= (1-q*(1-q*(1-q...)))*2^(-n)
とするのですかね。
なるほど、qの精度を考えれば、乗算の回数は2個くらいまで
で済みそうですね。
この式は、|q|<1の場合にだけ正しいので、
aをa=u*2^n (u = 1.0 + q)の形式に直してから
1/a = 1/(u*2^n)=1/(1+q)*2^(-n)
= (1-q*(1-q*(1-q...)))*2^(-n)
とするのですかね。
なるほど、qの精度を考えれば、乗算の回数は2個くらいまで
で済みそうですね。
285デフォルトの名無しさん
2019/11/26(火) 23:36:41.80ID:sE/nea3J >>284
すみません、これだと二回では精度が足りなさそうですね。
すみません、これだと二回では精度が足りなさそうですね。
286デフォルトの名無しさん
2019/11/26(火) 23:37:21.85ID:78UVTJ0X287デフォルトの名無しさん
2019/11/26(火) 23:49:53.60ID:sE/nea3J >>286
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?
288デフォルトの名無しさん
2019/11/26(火) 23:53:50.60ID:78UVTJ0X289デフォルトの名無しさん
2019/11/27(水) 00:00:48.09ID:T7KqQ5kC290デフォルトの名無しさん
2019/11/27(水) 00:02:25.36ID:T7KqQ5kC >>289
すみません、違いますね。
すみません、違いますね。
291デフォルトの名無しさん
2019/11/27(水) 00:27:57.72ID:tKRTExPe 初歩的な質問ですみません
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか
#include<stdio.h>
double func(double,double); /*プロトタイプ宣言*/
int main(void)
{
double a,b;
printf("実数をスペースで区切って入力してください\n");
scanf("%d %d",&a,&b);
printf("%d",func(a,b)); /*呼び出し*/
return 0;
}
double func(double x,double y)
{
if(x/y > y/x) return x/y;
if(y/x > x/y) return y/x;
if(x==0) return 0;
if(y==0) return 0;
}
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか
#include<stdio.h>
double func(double,double); /*プロトタイプ宣言*/
int main(void)
{
double a,b;
printf("実数をスペースで区切って入力してください\n");
scanf("%d %d",&a,&b);
printf("%d",func(a,b)); /*呼び出し*/
return 0;
}
double func(double x,double y)
{
if(x/y > y/x) return x/y;
if(y/x > x/y) return y/x;
if(x==0) return 0;
if(y==0) return 0;
}
292デフォルトの名無しさん
2019/11/27(水) 00:33:48.17ID:ynQDuheL %dのところがおかしい
それは整数用
それは整数用
293デフォルトの名無しさん
2019/11/27(水) 00:42:47.79ID:tKRTExPe ありがとうございます 1時間くらい悩んでたのが馬鹿みたいだ
294デフォルトの名無しさん
2019/11/27(水) 00:53:21.44ID:ynQDuheL 入力に0を含めてテストするように
295デフォルトの名無しさん
2019/11/27(水) 01:11:14.78ID:tKRTExPe ifの順番変えたら完成しました
296デフォルトの名無しさん
2019/11/27(水) 02:13:53.15ID:XGkmLsxS QZは馬鹿
297デフォルトの名無しさん
2019/11/27(水) 02:41:24.38ID:Q9FMbuzn xとyが等しいケースは書いたんじゃろうか
298デフォルトの名無しさん
2019/11/27(水) 11:43:48.59ID:g3LmaZYt 世にある仕事の数でいうと
java:C#:C++が5:3:1くらいだな。
java:C#:C++が5:3:1くらいだな。
299デフォルトの名無しさん
2019/11/27(水) 12:16:41.56ID:zdI/1sLa このスレ過疎かと思ったら話題でた途端に加速するな
300デフォルトの名無しさん
2019/11/27(水) 13:47:03.06ID:KtqS+hCI const は要らない子
301デフォルトの名無しさん
2019/11/27(水) 14:58:41.90ID:vSkP4LPU 本当はね・・・constの逆が欲しいのさ
デフォが書き込み禁止で許可を明示だったらと
キャプチャのmutableみたいな
デフォが書き込み禁止で許可を明示だったらと
キャプチャのmutableみたいな
302デフォルトの名無しさん
2019/11/27(水) 15:05:41.36ID:Yu9S3/3Y めんどくさいだけ
303デフォルトの名無しさん
2019/11/27(水) 15:08:54.83ID:lAIqGT0K Pointという点を表すクラスがあって、2点間の距離を取得する関数を追加したいのですが、
double Point::GetDistance(const Point &p) const
にすべきか、ただのCの関数で
double GetDistance(const Point &p1, const Point &p2)
にしたほうがいいのか迷っています。
設計的にいいのはどっちなんでしょうか?
double Point::GetDistance(const Point &p) const
にすべきか、ただのCの関数で
double GetDistance(const Point &p1, const Point &p2)
にしたほうがいいのか迷っています。
設計的にいいのはどっちなんでしょうか?
304デフォルトの名無しさん
2019/11/27(水) 15:13:19.55ID:zdI/1sLa305デフォルトの名無しさん
2019/11/27(水) 15:32:27.13ID:FMRbYBnJ 下に1票。同じ理由
306デフォルトの名無しさん
2019/11/27(水) 15:33:34.15ID:vYtjQlD0 下だな
なんでもかんでもインスタンスに生やすのは厨臭くてダサいし、対称な操作は対象に見えるべき
なんでもかんでもインスタンスに生やすのは厨臭くてダサいし、対称な操作は対象に見えるべき
307デフォルトの名無しさん
2019/11/27(水) 15:34:48.68ID:lAIqGT0K308デフォルトの名無しさん
2019/11/27(水) 15:43:43.07ID:PahKH909 下の方が、スカラー値等の既存型や配列向けの特殊化をし易いメリットもあるかもねー
309デフォルトの名無しさん
2019/11/27(水) 15:55:14.01ID:xImtWZAs ベクトルの引き算を定義してやるのはありでは
310デフォルトの名無しさん
2019/11/27(水) 16:11:06.28ID:KtqS+hCI311デフォルトの名無しさん
2019/11/27(水) 16:12:16.87ID:KtqS+hCI ああ同じではないわ
ベクトルの引き算はスカラーじゃなくてベクトル
ベクトルの絶対値を定義する
ベクトルの引き算はスカラーじゃなくてベクトル
ベクトルの絶対値を定義する
312デフォルトの名無しさん
2019/11/27(水) 16:29:07.34ID:MN5dlGGA abs(a-b)
313デフォルトの名無しさん
2019/11/27(水) 18:11:30.16ID:p98u22dC ベクトルの加減算や符号は紛れが無いのでオペレータで実装
乗算は内積、外積と要素ごとの積の3種類あるので
関数にする
3次元ベクトルも作る可能性があるなら
2次元ベクトルだとわかる名前にしておく
可能性が無いならそのままで
絶対値やノルム、象限などをグローバルにするかメンバ関数にするかは一長一短
設計ポリシー次第
乗算は内積、外積と要素ごとの積の3種類あるので
関数にする
3次元ベクトルも作る可能性があるなら
2次元ベクトルだとわかる名前にしておく
可能性が無いならそのままで
絶対値やノルム、象限などをグローバルにするかメンバ関数にするかは一長一短
設計ポリシー次第
315デフォルトの名無しさん
2019/11/27(水) 19:21:07.28ID:fyVQDs9d316デフォルトの名無しさん
2019/11/27(水) 19:29:28.78ID:vSkP4LPU317デフォルトの名無しさん
2019/11/27(水) 19:31:20.95ID:nSz8Pwyp318デフォルトの名無しさん
2019/11/27(水) 19:40:34.02ID:nSz8Pwyp RTOSを使うような小規模環境だと
ヒープをしなかったりアロケートのみにしたりする
そんな環境でもC++は便利なので使えるなら使いたい
ヒープをしなかったりアロケートのみにしたりする
そんな環境でもC++は便利なので使えるなら使いたい
319デフォルトの名無しさん
2019/11/27(水) 19:40:48.50ID:nSz8Pwyp ヒープを搭載しなかったり
320デフォルトの名無しさん
2019/11/27(水) 19:48:12.34ID:nSz8Pwyp OSレスでもC++が使えるなら使う
実際それで製品出した
実際それで製品出した
321デフォルトの名無しさん
2019/11/27(水) 19:52:22.88ID:q8B3tEUN 対称が大事なのって、交換法則が成り立つ計算だから?
322デフォルトの名無しさん
2019/11/27(水) 19:54:03.88ID:nSz8Pwyp 引き算の立場は?
323デフォルトの名無しさん
2019/11/27(水) 19:57:18.53ID:nSz8Pwyp 主役がはっきりしてる場合はメンバ
同等な重要度の時は非メンバ
私の場合はだいたいこんな感じ
同等な重要度の時は非メンバ
私の場合はだいたいこんな感じ
324デフォルトの名無しさん
2019/11/27(水) 19:58:30.31ID:nSz8Pwyp 対称かどうかはあまり関係ない
325デフォルトの名無しさん
2019/11/27(水) 20:25:32.56ID:vYtjQlD0 対称性が特に問題になるのはオペランドの型が異なるケースだな
対称な演算a.op(b)をaのクラスに実装したらbのクラスにも同じものをコピペするのか?
C#の演算子オーバーロードがstaticなのはそのへんが理由だとか
Pythonなどのスクリプト言語では基本的にインスタンスメソッドとして演算子を実装するけど、
それは動的型故に事前に実装を解決できないからだね
対称な演算a.op(b)をaのクラスに実装したらbのクラスにも同じものをコピペするのか?
C#の演算子オーバーロードがstaticなのはそのへんが理由だとか
Pythonなどのスクリプト言語では基本的にインスタンスメソッドとして演算子を実装するけど、
それは動的型故に事前に実装を解決できないからだね
326デフォルトの名無しさん
2019/11/27(水) 20:29:53.87ID:EGeQZX97 >>317
かつて非メンバ関数のオペレータを名前空間の外から呼び出そうとするととても残念な気持ちになるからじゃね
かつて非メンバ関数のオペレータを名前空間の外から呼び出そうとするととても残念な気持ちになるからじゃね
327デフォルトの名無しさん
2019/11/27(水) 20:44:42.44ID:0U9h+SK3 オペレータオーバーロードを使うとカッコイイ気分にひたれるからだろ
それ以外の理由なんてあるのか?
それ以外の理由なんてあるのか?
328デフォルトの名無しさん
2019/11/27(水) 20:45:44.57ID:E2H9effp private変数の書き換えを伴うものだけメンバだな
Pointが座標値しか持ってないようなのならコンストラクタ以外は持たせない
Pointが座標値しか持ってないようなのならコンストラクタ以外は持たせない
329デフォルトの名無しさん
2019/11/28(木) 01:38:08.55ID:PoPpbfsh 代入は普通メンバだろ
=
+=
-=
*=
/=
[ ]も
=
+=
-=
*=
/=
[ ]も
330デフォルトの名無しさん
2019/11/28(木) 01:44:12.13ID:PoPpbfsh 当然符号も
331はちみつ餃子 ◆8X2XSCHEME
2019/11/28(木) 02:14:28.33ID:+45JwpRI >>303
これは後者が良い場合が多い。
型変換の対称性が絡むんだよ。
たとえば std::tuple<double, double> から Point への変換コンストラクタが用意されているようなとき、
メンバ関数として実装されていると左辺ではこの型変換が考慮されず、右辺では考慮されるということになる。
これは後者が良い場合が多い。
型変換の対称性が絡むんだよ。
たとえば std::tuple<double, double> から Point への変換コンストラクタが用意されているようなとき、
メンバ関数として実装されていると左辺ではこの型変換が考慮されず、右辺では考慮されるということになる。
332デフォルトの名無しさん
2019/11/28(木) 02:50:39.48ID:4GnG2KNj >>329
代入系と添字はそもそもメンバとしてしか書けない
代入系と添字はそもそもメンバとしてしか書けない
333デフォルトの名無しさん
2019/11/28(木) 06:43:27.57ID:PoPpbfsh334デフォルトの名無しさん
2019/11/28(木) 08:02:30.92ID:A3g54Di2335デフォルトの名無しさん
2019/11/28(木) 08:09:05.07ID:YpOyjZW5336デフォルトの名無しさん
2019/11/28(木) 08:20:32.24ID:PoPpbfsh フラグメントが問題になるならアロケート専用で解放出来ないようにするとかそもそもアロケート出来ないようにするとか
固定サイズを頻繁になら独立させておけばフラグメントしない
固定サイズを頻繁になら独立させておけばフラグメントしない
337デフォルトの名無しさん
2019/11/28(木) 08:21:42.93ID:PoPpbfsh ヒープはヒープで1個の研究分野になるくらい
いろんな技術、方法がある
いろんな技術、方法がある
339デフォルトの名無しさん
2019/11/28(木) 18:11:40.54ID:PoPpbfsh341デフォルトの名無しさん
2019/11/28(木) 19:15:35.47ID:nxFPf5Ar begin()とend()があればRangeなんですか?
342デフォルトの名無しさん
2019/11/28(木) 23:41:46.98ID:iCLeSa8c だいたいそうよ
343デフォルトの名無しさん
2019/11/29(金) 04:19:50.28ID:KHTBF+uC そうですか。
どうもありがとうございます。
どうもありがとうございます。
344デフォルトの名無しさん
2019/11/29(金) 08:06:17.26ID:R3LtoROu 新明解C++買ったけどなにもしてない
345デフォルトの名無しさん
2019/11/29(金) 08:29:36.34ID:KHTBF+uC std::uint8_tってstd名前空間にあるけど、名前空間で修飾しなくても使えるのは何故ですか?
347デフォルトの名無しさん
2019/11/29(金) 09:06:38.46ID:KHTBF+uC >>346
自分でusingしてなくても大丈夫ですか?
自分でusingしてなくても大丈夫ですか?
348デフォルトの名無しさん
2019/11/29(金) 09:34:32.80ID:N/f9f1S7 a[i] = b;
みたいなのき
a に対して a.setitem(i, b); するのと
a.getitem(i) が参照を返す様にしておいて a.getitem(i) = b; するのと
どっちが正解?
みたいなのき
a に対して a.setitem(i, b); するのと
a.getitem(i) が参照を返す様にしておいて a.getitem(i) = b; するのと
どっちが正解?
349デフォルトの名無しさん
2019/11/29(金) 09:41:11.46ID:B0LTR+GE JavaのArrayListは a.get(i) = b; になってるので長いもんには巻かれろと思考停止で真似るだけ
350デフォルトの名無しさん
2019/11/29(金) 11:40:28.80ID:oVgX/GuB >>345
#include <cstdint>は
#include <stdint.h>
つまりCのライブラリだからだ
typedef unsigned char uint8_t;
#ifdef __cplusplus
namespace std {
using ::uint8_t;
}
#endif
こうなっているだけだ
#include <cstdint>は
#include <stdint.h>
つまりCのライブラリだからだ
typedef unsigned char uint8_t;
#ifdef __cplusplus
namespace std {
using ::uint8_t;
}
#endif
こうなっているだけだ
351デフォルトの名無しさん
2019/11/29(金) 11:53:00.94ID:Ml/gOmNO さすがに整数型にまでstdつけるのはうざい
なのでcのヘッダーを使ってる
なのでcのヘッダーを使ってる
352デフォルトの名無しさん
2019/11/29(金) 12:40:38.17ID:pYMGuCeV stdを省略する方がウザい
353デフォルトの名無しさん
2019/11/29(金) 12:45:20.21ID:gmGtMFq3 何の情報も増えないし紛れも何もない
意味の無い情報に5文字も余分に使いたくない
画面も入力の手間も
意味の無い情報に5文字も余分に使いたくない
画面も入力の手間も
354デフォルトの名無しさん
2019/11/29(金) 12:47:51.78ID:gmGtMFq3 int8_t がcharで、std::int8_t がsigned char とか?
それは御愁傷様
それは御愁傷様
355デフォルトの名無しさん
2019/11/29(金) 12:52:13.51ID:lef7gBlN STL使ってスタティックビルドしてるコンソールプログラムあるけど、
ファイルサイズ 400KBぐらいだな。圧縮した状態で200KB
これが20KBぐらいに減るのかー、でも誰も喜ばないだろうな。
ファイルサイズ 400KBぐらいだな。圧縮した状態で200KB
これが20KBぐらいに減るのかー、でも誰も喜ばないだろうな。
356デフォルトの名無しさん
2019/11/29(金) 13:01:25.99ID:0dBBAnUQ STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
357はちみつ餃子 ◆8X2XSCHEME
2019/11/29(金) 14:15:39.12ID:J8eB3+F9358デフォルトの名無しさん
2019/11/29(金) 14:21:40.41ID:Tp6caFY5 変数名をメモリやオーバーヘッド無しでエイリアスつける方法ありますか?
メンバ変数に shared_ptr<Data> m_data; みたいなのがあるとして
using text = this->m_data->member.text;
みたいに使いたい変数だけ別名で取り出したい
メンバ変数に shared_ptr<Data> m_data; みたいなのがあるとして
using text = this->m_data->member.text;
みたいに使いたい変数だけ別名で取り出したい
359デフォルトの名無しさん
2019/11/29(金) 14:30:09.62ID:oVgX/GuB 現実問題としてCのライブラリをstdに入れるということ自体が馬鹿げた話だ
今の流れはuint8_tの話だが、extern "C"の関数は装飾名に名前空間が含まれない
今の流れはuint8_tの話だが、extern "C"の関数は装飾名に名前空間が含まれない
360デフォルトの名無しさん
2019/11/29(金) 14:35:12.66ID:yQ0DwMtc361デフォルトの名無しさん
2019/11/29(金) 14:37:49.63ID:Tp6caFY5 >>360
現状それでやってますが、コンパイル時に確定できるのなら他に方法があるのかと思いました
現状それでやってますが、コンパイル時に確定できるのなら他に方法があるのかと思いました
363デフォルトの名無しさん
2019/11/29(金) 14:56:28.90ID:KzrCIvE1 参照解決のコストすら嫌なら
#define text this->m_data->member.text
#define text this->m_data->member.text
364デフォルトの名無しさん
2019/11/29(金) 14:56:51.37ID:GB3X2IZU コンパイル時に確定してるじゃん
365デフォルトの名無しさん
2019/11/29(金) 15:07:19.89ID:M3WjIH4t むしろもとの書き方だと2度参照解決して3度足し算しているような…
366デフォルトの名無しさん
2019/11/29(金) 15:21:18.81ID:YkvT9y9m textに実行時にアクセスするなら
いずれにしろアドレス計算は必須になる
>>360のようにすれば
最適化がうんこで複数回計算されるのを防ぐ可能性すらある
アクセスしないならおそらく最適化によってアドレス計算コードは生成されない
いずれにしろアドレス計算は必須になる
>>360のようにすれば
最適化がうんこで複数回計算されるのを防ぐ可能性すらある
アクセスしないならおそらく最適化によってアドレス計算コードは生成されない
367デフォルトの名無しさん
2019/11/29(金) 15:50:36.19ID:N/f9f1S7 inline付けるとかえって損か
368デフォルトの名無しさん
2019/11/29(金) 17:45:51.93ID:/RbGsSZk m_data の型が shared_ptr<Data> なことを気にしてるのかな。
shared_ptr の指す先のメンバを参照変数でバインドするのは無作法か、とか。
と言うか、上の話は俺の疑問でもあるんだけど。
shared_ptr の指す先のメンバを参照変数でバインドするのは無作法か、とか。
と言うか、上の話は俺の疑問でもあるんだけど。
369デフォルトの名無しさん
2019/11/29(金) 18:15:50.93ID:4DEcYZGM ->
に副作用があるならそりゃ話は別だ
に副作用があるならそりゃ話は別だ
370デフォルトの名無しさん
2019/11/29(金) 18:44:49.74ID:xP2G2+ZO STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
371デフォルトの名無しさん
2019/11/29(金) 18:46:27.54ID:xP2G2+ZO STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
え?なんで俺が笑われてるの?
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
え?なんで俺が笑われてるの?
372デフォルトの名無しさん
2019/11/29(金) 20:21:36.93ID:KHTBF+uC どうもありがとうございます。
373デフォルトの名無しさん
2019/11/30(土) 16:27:23.28ID:4Yq6PogE constexpr定数とconst定数って結局何が違うの?
374デフォルトの名無しさん
2019/11/30(土) 16:40:26.74ID:WebQyLi7 コンパイラに対する単なるヒント
優れたコンパイラでも糞コンパイラでも動きほ同じ
中途半端なコンパイラだと最適化のレベルがもしかしたら違うかも
コンパイル単位にもよる
優れたコンパイラでも糞コンパイラでも動きほ同じ
中途半端なコンパイラだと最適化のレベルがもしかしたら違うかも
コンパイル単位にもよる
375デフォルトの名無しさん
2019/11/30(土) 17:34:29.84ID:sGzVq6Pz constexpr定数はコンパイル時に値が確定することが保証されている
376デフォルトの名無しさん
2019/11/30(土) 17:35:37.90ID:iKPiHg5H >>373
constexpr定数はconstexprな文脈を作る。つまり、
constexpr int a = func()
とするとfunc()はコンパイル時に実行される。当然constexpr関数でなければならない
一方、const定数はconstexprな文脈は作らない
const int a = func()
とした時、func()は実行時に処理される。constexpr関数である必要はない
constexpr定数はconstexprな文脈を作る。つまり、
constexpr int a = func()
とするとfunc()はコンパイル時に実行される。当然constexpr関数でなければならない
一方、const定数はconstexprな文脈は作らない
const int a = func()
とした時、func()は実行時に処理される。constexpr関数である必要はない
377デフォルトの名無しさん
2019/11/30(土) 17:40:18.51ID:4Yq6PogE ああ、初期化に関数を使うと違いが出るんですね
それにconstexprの場合は初期化が保証されていると
ありがとうございました
それにconstexprの場合は初期化が保証されていると
ありがとうございました
378デフォルトの名無しさん
2019/12/01(日) 01:46:51.73ID:j3uX5vWG constexprの強みは、配列のサイズみたいな定数を要求される文脈で使えるってこと。
const変数だとこれができないから、昔はマクロで定数定義するしかなかった。
const変数だとこれができないから、昔はマクロで定数定義するしかなかった。
379デフォルトの名無しさん
2019/12/01(日) 01:49:20.00ID:Hj4I5N6m380デフォルトの名無しさん
2019/12/01(日) 01:54:44.83ID:Nfz3Rlxp sizeofと何が違うんだ
381デフォルトの名無しさん
2019/12/01(日) 08:35:44.43ID:7fh/nHBZ constは設計ミスが多いな
382デフォルトの名無しさん
2019/12/01(日) 08:36:58.95ID:7fh/nHBZ とても神リッチーが作ったように見えない
383デフォルトの名無しさん
2019/12/01(日) 10:24:23.58ID:gHT6E7kc STLにはなぜ木が無いのですか。
384デフォルトの名無しさん
2019/12/01(日) 10:27:51.87ID:sKSeAmO2 大昔のC言語時代に考えた物だから
関数を使った初期化が出来ない時代の
関数を使った初期化が出来ない時代の
385デフォルトの名無しさん
2019/12/01(日) 10:31:53.72ID:sKSeAmO2386デフォルトの名無しさん
2019/12/01(日) 10:56:13.36ID:SqfEoEmM Javaでも.NETでも標準ライブラリに木は無いだろ
木はメモリへのシリアライズの仕方を工夫せずに素直にノード毎にnewしてたら殆どあらゆるケースにおいてクッソ非効率なデータ構造なので、
標準ライブラリとして提供する意義が薄い
誤った選択肢を提供することで余計にパフォーマンスを低下させることになるだけだ
木はメモリへのシリアライズの仕方を工夫せずに素直にノード毎にnewしてたら殆どあらゆるケースにおいてクッソ非効率なデータ構造なので、
標準ライブラリとして提供する意義が薄い
誤った選択肢を提供することで余計にパフォーマンスを低下させることになるだけだ
387デフォルトの名無しさん
2019/12/01(日) 11:03:00.54ID:sKSeAmO2 listもsetもノードごとにnewしてるけど
388デフォルトの名無しさん
2019/12/01(日) 11:15:38.03ID:gHT6E7kc ダブルアレイを変形させて木を表現できないでしょうか。
子は親のIDを知っていれば良く、親は子の個数を知っていれば良いので、出来そうな気がするのですが。
子は親のIDを知っていれば良く、親は子の個数を知っていれば良いので、出来そうな気がするのですが。
389デフォルトの名無しさん
2019/12/01(日) 11:16:42.54ID:SqfEoEmM >>387
うん。だから遅いよ。
うん。だから遅いよ。
390デフォルトの名無しさん
2019/12/01(日) 11:29:39.61ID:7fh/nHBZ だから形容詞には比較や数値をつけろってば
それじゃ健康産業で不安を煽る悪徳業者そっくりだろうが
それじゃ健康産業で不安を煽る悪徳業者そっくりだろうが
391デフォルトの名無しさん
2019/12/01(日) 11:50:38.89ID:p3Z7Nr0h 遅いlistやsetがstlに入っていて使われ続けてるんだから
stlに入れない理由にはならないってことだよあほ
stlに入れない理由にはならないってことだよあほ
392デフォルトの名無しさん
2019/12/01(日) 11:53:33.72ID:rKmqg7A0 いやそんなもん使うやつらがそもそもc++使う必要がねーって話だわ
393デフォルトの名無しさん
2019/12/01(日) 11:55:51.88ID:YWi4MX0G それはお前の個人的な意見?
それとも何かデータでもあるの?
それとも何かデータでもあるの?
394デフォルトの名無しさん
2019/12/01(日) 12:11:13.07ID:p3Z7Nr0h listやsetが適した用途があるから存在してるんだけどね
使いどころ間違ってるんじゃない?
使いどころ間違ってるんじゃない?
395デフォルトの名無しさん
2019/12/01(日) 12:14:27.64ID:p3Z7Nr0h 同じ用途なら
newやdeleteを使わなかったとしても
結局ノード作成時に空きエリアを探すことになるわけで
newやdeleteを使わなかったとしても
結局ノード作成時に空きエリアを探すことになるわけで
396デフォルトの名無しさん
2019/12/01(日) 12:17:14.00ID:p3Z7Nr0h ノード追加専用のスペシャルlistやsetなら速くなるけど
それはもはやlistやsetじゃない
それはもはやlistやsetじゃない
397デフォルトの名無しさん
2019/12/01(日) 12:21:44.69ID:vEIKl7N1 プログラムのすべての部分で最速の選択をする必要なんて全く無いのに>>392みたいなことを言うやつはCかFortranで書けばいいんじゃないかな
398デフォルトの名無しさん
2019/12/01(日) 12:29:30.42ID:SqfEoEmM399デフォルトの名無しさん
2019/12/01(日) 12:32:06.35ID:p3Z7Nr0h >>398
使いどころがわからないなら無理して使わなくて良いんだよ
使いどころがわからないなら無理して使わなくて良いんだよ
400デフォルトの名無しさん
2019/12/01(日) 12:33:53.83ID:SqfEoEmM >>399
具体例を示そうね
具体例を示そうね
401デフォルトの名無しさん
2019/12/01(日) 12:34:14.31ID:p3Z7Nr0h402デフォルトの名無しさん
2019/12/01(日) 12:41:44.01ID:IheeS71f ソートが早い
403デフォルトの名無しさん
2019/12/01(日) 12:47:37.78ID:gHT6E7kc イテレータの安定性が。
404デフォルトの名無しさん
2019/12/01(日) 12:53:47.75ID:ZEhocPVE405デフォルトの名無しさん
2019/12/01(日) 12:57:04.85ID:7fh/nHBZ 「そんなもん使う」なんて全面否定しといて
今さらアルゴリズムオーダーとか言い出すのは見苦しい
今さらアルゴリズムオーダーとか言い出すのは見苦しい
406デフォルトの名無しさん
2019/12/01(日) 12:58:17.95ID:gHT6E7kc 木とグラフが足りないと思います。
407デフォルトの名無しさん
2019/12/01(日) 12:58:25.43ID:n5DjgtsH イニシャルコストとランニングコストがあるだろ
数か月〜数年間止まらないようなソフトウェアだと初回起動時のデータ読み込み10億件・数分程度は誤差で済む
数か月〜数年間止まらないようなソフトウェアだと初回起動時のデータ読み込み10億件・数分程度は誤差で済む
408デフォルトの名無しさん
2019/12/01(日) 13:00:02.95ID:IheeS71f 現存するあらゆるコンテナを実装してくれ
409デフォルトの名無しさん
2019/12/01(日) 13:00:34.69ID:YWi4MX0G410デフォルトの名無しさん
2019/12/01(日) 13:02:56.20ID:7fh/nHBZ 実害が出るかどうかはケースによるのに
全てお見通しの仏様か何かになったつもりのやつが変なことぬかすんだよな
全てお見通しの仏様か何かになったつもりのやつが変なことぬかすんだよな
411デフォルトの名無しさん
2019/12/01(日) 13:08:14.41ID:p3Z7Nr0h >>409
1分と1000分なら大違い
トータル0.1ミリ秒なら何でも良いよ気にするな
データが多い時の話
オーダーが効いてくる
newの時間なんてオーダーの差に比べれば誤差
毎回newだから遅いとかトンチンカン
1分と1000分なら大違い
トータル0.1ミリ秒なら何でも良いよ気にするな
データが多い時の話
オーダーが効いてくる
newの時間なんてオーダーの差に比べれば誤差
毎回newだから遅いとかトンチンカン
412デフォルトの名無しさん
2019/12/01(日) 13:09:03.33ID:gHT6E7kc Boostにイテレータが安定なvectorがありますが、速度はlistに劣る場合があると但し書きがありますよ。
413デフォルトの名無しさん
2019/12/01(日) 13:16:11.26ID:p3Z7Nr0h データ構造は
list, set, リニア(vectorやdeque) で揃ってる
これでオーダー的には大抵は問題ない
微妙な高速化が必要なら専用を自作すれば良いが
組み込みでもなければ必要となることはあまりない
複雑なデータ構造は、
標準のデータ構造を組み合わせて作る
複雑なリンク構造はSLAMの世界だとよく使う
list, set, リニア(vectorやdeque) で揃ってる
これでオーダー的には大抵は問題ない
微妙な高速化が必要なら専用を自作すれば良いが
組み込みでもなければ必要となることはあまりない
複雑なデータ構造は、
標準のデータ構造を組み合わせて作る
複雑なリンク構造はSLAMの世界だとよく使う
414デフォルトの名無しさん
2019/12/01(日) 13:20:19.28ID:ZEhocPVE いや明らかにsetのオーダーに問題あるだろ。
415デフォルトの名無しさん
2019/12/01(日) 13:23:43.76ID:p3Z7Nr0h えっ?
416デフォルトの名無しさん
2019/12/01(日) 13:25:41.03ID:ZEhocPVE 思考停止してないでこれくらいは読んでくれよ。。
https://cpprefjp.github.io/reference/set/set.html
https://cpprefjp.github.io/reference/set/set.html
417デフォルトの名無しさん
2019/12/01(日) 13:31:07.65ID:gHT6E7kc 読みました。
418デフォルトの名無しさん
2019/12/01(日) 13:31:36.80ID:B2zYeZ5e メモリの再配置が起こると都合が(あるいは効率が)悪いオブジェクトを比較的頻繁にnew/deleteしつつ、
一覧を保持しておく用途にはlistが適していると思う。
あ、でも、本体をdequeに、ポインタをvectorに入れて管理する方が速いかな? バグりそうで恐いけどw
一覧を保持しておく用途にはlistが適していると思う。
あ、でも、本体をdequeに、ポインタをvectorに入れて管理する方が速いかな? バグりそうで恐いけどw
>>386
木をそこまで悪くいう人を初めて見かけました、大概のデータ構造は木だと思うのですけど…
木をそこまで悪くいう人を初めて見かけました、大概のデータ構造は木だと思うのですけど…
420デフォルトの名無しさん
2019/12/01(日) 13:56:38.18ID:p3Z7Nr0h 下手くそが巨体な木を作るとひどいって話だろ
下手に作らなきゃ良いだけ
下手に作らなきゃ良いだけ
421デフォルトの名無しさん
2019/12/01(日) 14:14:45.54ID:YC7h427T >>414
問題にならない用途、条件のもとで使う分には問題ない。
問題にならない用途、条件のもとで使う分には問題ない。
422デフォルトの名無しさん
2019/12/01(日) 14:32:23.94ID:9nkP+L/s きみはあれか
「ライトバンはセダンにくらべると速度も遅いし馬力もないしとてもあんなもの使えない!」
とかいっちゃうタイプ?
「ライトバンはセダンにくらべると速度も遅いし馬力もないしとてもあんなもの使えない!」
とかいっちゃうタイプ?
423デフォルトの名無しさん
2019/12/01(日) 14:47:10.92ID:HFxN8/oH >>419
お前は頭が悪いけどな
お前は頭が悪いけどな
424デフォルトの名無しさん
2019/12/01(日) 15:33:24.99ID:zRxwjdrk 一般的には、適切な二分木等で実装されたSetは、メモリ効率が悪いことはあっても速度のオーダーがひどいってことは無いだろ
425蟻人間 ◆T6xkBnTXz7B0
2019/12/01(日) 15:40:09.97ID:CG2Vs9XU C++11のstd::unordered_setに負けてる。
426デフォルトの名無しさん
2019/12/01(日) 15:45:18.33ID:7fh/nHBZ それはまた別な話だ
427デフォルトの名無しさん
2019/12/01(日) 16:25:31.35ID:BhgcTKiH 二分木がSTLにない理由は簡単。冗長だから。
428デフォルトの名無しさん
2019/12/01(日) 16:26:58.04ID:p3Z7Nr0h setは内部2分木だって言ってるのに
429デフォルトの名無しさん
2019/12/01(日) 17:09:51.64ID:7fh/nHBZ >>422
うまい喩えだなw
うまい喩えだなw
430デフォルトの名無しさん
2019/12/01(日) 17:18:14.34ID:BhgcTKiH >>428
もしかして二分探索と二分木を混同してる?
もしかして二分探索と二分木を混同してる?
431デフォルトの名無しさん
2019/12/01(日) 17:33:23.47ID:YHuSOkLJ 木の枝を回廊にしたらグラフになります。
グラフはスパコンのベンチマークにされるくらいにメジャーな構造です。
グラフはスパコンのベンチマークにされるくらいにメジャーな構造です。
432デフォルトの名無しさん
2019/12/01(日) 17:36:46.35ID:YWi4MX0G433デフォルトの名無しさん
2019/12/01(日) 18:14:48.13ID:XkMP/E25 普通ハッシュ使うよね?とかそういう発想が皆無なのが、
ここは馬鹿しかいないってことを示してるよな。。
ここは馬鹿しかいないってことを示してるよな。。
434デフォルトの名無しさん
2019/12/01(日) 18:19:34.55ID:Enyr5Fgf >>430
多分混同してるのはお前だけかと
多分混同してるのはお前だけかと
435デフォルトの名無しさん
2019/12/01(日) 18:22:27.22ID:Enyr5Fgf436デフォルトの名無しさん
2019/12/01(日) 18:36:45.84ID:n5DjgtsH ハッシュを使うんじゃねえな
ハッシュをどう作るか?になる
perl5/hv.h at blead ・ Perl/perl5 ・ GitHub
https://github.com/Perl/perl5/blob/blead/hv.h
cpython/dict-common.h at master ・ python/cpython ・ GitHub
https://github.com/python/cpython/blob/master/Objects/dict-common.h
ハッシュをどう作るか?になる
perl5/hv.h at blead ・ Perl/perl5 ・ GitHub
https://github.com/Perl/perl5/blob/blead/hv.h
cpython/dict-common.h at master ・ python/cpython ・ GitHub
https://github.com/python/cpython/blob/master/Objects/dict-common.h
437デフォルトの名無しさん
2019/12/01(日) 18:53:22.71ID:ManO1ilk 木やグラフがほしいって言ってる人が、ハッシュマップや内部実装だけが木構造のコレクションなんていらんだろ。。
438デフォルトの名無しさん
2019/12/01(日) 19:11:19.73ID:IheeS71f うんち
439デフォルトの名無しさん
2019/12/01(日) 19:20:12.56ID:fP4CRSrQ 「木が欲しい」という要件に対して確認もなく二分木渡すような奴はダメ
ディレクトリ構造表したい奴に二分木渡してどうすんだ
ディレクトリ構造表したい奴に二分木渡してどうすんだ
440デフォルトの名無しさん
2019/12/01(日) 19:25:06.56ID:WB/GHlzr 二分木って規格で決めてるの?
441デフォルトの名無しさん
2019/12/01(日) 19:36:32.68ID:IheeS71f うんち
442デフォルトの名無しさん
2019/12/01(日) 20:13:00.99ID:p3Z7Nr0h 「木が欲しい」なんていう人には
とりあえず何でもいいから木を渡しておけばいいんだよ
とりあえず何でもいいから木を渡しておけばいいんだよ
443デフォルトの名無しさん
2019/12/01(日) 20:31:05.42ID:p3Z7Nr0h 木は用途や使い方次第で適する作り方が異なるので
標準コンテナを組み合わせたカスタムで良いと思うよ
標準コンテナを組み合わせたカスタムで良いと思うよ
444デフォルトの名無しさん
2019/12/01(日) 20:51:16.81ID:YHuSOkLJ445デフォルトの名無しさん
2019/12/01(日) 21:01:15.36ID:BhgcTKiH C++11以降なら子ノードをweak_ptrの配列で持つとか?
446デフォルトの名無しさん
2019/12/01(日) 21:09:55.37ID:YHuSOkLJ447デフォルトの名無しさん
2019/12/01(日) 21:31:39.82ID:vEIKl7N1 著作権表示なしにMITライセンスにできたっけ
448デフォルトの名無しさん
2019/12/01(日) 22:14:07.56ID:9WgCOaQB サンプルとかライセンスとか頭沸いてんのかこいつ
下痢便を神棚に飾って人に配るような所業
下痢便を神棚に飾って人に配るような所業
449デフォルトの名無しさん
2019/12/01(日) 22:32:33.44ID:YHuSOkLJ 著作権表示は、
2019 Yakitori
が必要なら使って。
2019 Yakitori
が必要なら使って。
450デフォルトの名無しさん
2019/12/01(日) 22:32:48.31ID:YHuSOkLJ >>449
日本語不自由だな
日本語不自由だな
451デフォルトの名無しさん
2019/12/01(日) 22:38:20.61ID:vEIKl7N1 ?
452デフォルトの名無しさん
2019/12/01(日) 22:41:32.80ID:IheeS71f うんち漏れそう
453デフォルトの名無しさん
2019/12/02(月) 00:33:17.14ID:RIgVO6ZZ >>448
だな
だな
454デフォルトの名無しさん
2019/12/02(月) 02:45:23.23ID:btxUm/V/ オランダのTIOBEの調査でも、C#よりJavaやC/C++が人気で、
他の会社による日本での求人数もJavaやC/C++の方がC#より上だそうだ。
JavaScript、PythonやRubyは、求人数では大したことが無いらしい。
Webページを製作している人がネットでは多いので、JS、Python、Ruby
などが人気であるかのように見えるだけかもしれない。
他の会社による日本での求人数もJavaやC/C++の方がC#より上だそうだ。
JavaScript、PythonやRubyは、求人数では大したことが無いらしい。
Webページを製作している人がネットでは多いので、JS、Python、Ruby
などが人気であるかのように見えるだけかもしれない。
455デフォルトの名無しさん
2019/12/02(月) 03:22:15.51ID:Lvay36w9 >>454
すまん。日本での求人数は、
Java, PHP, Ruby, C#, JS, Python, Objective-C/Swift, C/C++,
HTML, Android, Unity, VB.NET, Scala
だそうだ。ただし、C#から、C/C++ までは横並びでどれが上とも
いえない僅差。そして、Java, Python, Ruby は伸びているが、
PHP, C#, JS, HTML は減っている。
ところが、プログラマ側からの「希望言語」としては、JSがTOP
らしい。アメリカでの今後学びたい言語としては、Java, Pyhtho,
C++ は上位に来るが、C#, Ruby はかなり下の方。
すまん。日本での求人数は、
Java, PHP, Ruby, C#, JS, Python, Objective-C/Swift, C/C++,
HTML, Android, Unity, VB.NET, Scala
だそうだ。ただし、C#から、C/C++ までは横並びでどれが上とも
いえない僅差。そして、Java, Python, Ruby は伸びているが、
PHP, C#, JS, HTML は減っている。
ところが、プログラマ側からの「希望言語」としては、JSがTOP
らしい。アメリカでの今後学びたい言語としては、Java, Pyhtho,
C++ は上位に来るが、C#, Ruby はかなり下の方。
456デフォルトの名無しさん
2019/12/02(月) 03:29:10.52ID:Lvay36w9 >>455
個人的見解としては、VS code が 5ch で評価が高かったのは、言語が
TypeScript や JavaScript と HTML で記述されているので、JSで
プログラムすることを希望するプログラマが、JSの求人を増やすために
JS製の成果物を高く評価していたからかもしれない。
また、Javaの伸び率はかなり高い。Rubyの求人は日本では多いようだが、
アメリカでは少ない。C#の人気は、ある時期までは延びたが、今は停滞期
に入ったようだ。しかも今後学びたい言語としては、C よりも低い。
個人的見解としては、VS code が 5ch で評価が高かったのは、言語が
TypeScript や JavaScript と HTML で記述されているので、JSで
プログラムすることを希望するプログラマが、JSの求人を増やすために
JS製の成果物を高く評価していたからかもしれない。
また、Javaの伸び率はかなり高い。Rubyの求人は日本では多いようだが、
アメリカでは少ない。C#の人気は、ある時期までは延びたが、今は停滞期
に入ったようだ。しかも今後学びたい言語としては、C よりも低い。
457デフォルトの名無しさん
2019/12/02(月) 03:36:47.51ID:Lvay36w9 TIOBEの調査では、Java と Cの人気が同列で高く、Python がそれに続く。
また、CとC++を合計すると、Javaよりもだいぶ高い人気となる。
Java 16.2% (-0.50)
C 16.0% (+1.64)
Python 9.84% (+2.16)
C++ 5.60% (-2.68)
C# 4.31% (+0.36)
VB.NET 4.22% (-2.26)
JS 1.93% (-0.73)
PHP 1.72% (-0.66)
SQL 1.69% (-.15)
Swift 1.65% (+0.20)
Ruby 1.26% (+0.17)
Objective-C 1.20% (-0.28)
・・・
D 0.927% (-0.64)
Go 0.853% (-0.64)
また、CとC++を合計すると、Javaよりもだいぶ高い人気となる。
Java 16.2% (-0.50)
C 16.0% (+1.64)
Python 9.84% (+2.16)
C++ 5.60% (-2.68)
C# 4.31% (+0.36)
VB.NET 4.22% (-2.26)
JS 1.93% (-0.73)
PHP 1.72% (-0.66)
SQL 1.69% (-.15)
Swift 1.65% (+0.20)
Ruby 1.26% (+0.17)
Objective-C 1.20% (-0.28)
・・・
D 0.927% (-0.64)
Go 0.853% (-0.64)
458デフォルトの名無しさん
2019/12/02(月) 03:57:59.67ID:qRRc8YVo CとC++とC#の区別ができる営業いないんだよな
459デフォルトの名無しさん
2019/12/02(月) 04:06:59.74ID:3lD7gpLY 営業って年取った技術者がやるもんだろ
460デフォルトの名無しさん
2019/12/02(月) 06:49:53.19ID:MoZo3p1s 今はもう戦力外技術者なんて即解雇だよ
そもそも大手だと営業と技術者は別会社
そもそも大手だと営業と技術者は別会社
461デフォルトの名無しさん
2019/12/02(月) 07:41:42.15ID:tW9RdYoY なんで大手条件が勝手に加わるのか
462デフォルトの名無しさん
2019/12/02(月) 08:23:03.95ID:mQVkXZA1 零細中小なんて誰も興味ない
463デフォルトの名無しさん
2019/12/02(月) 08:42:45.44ID:GldGaTIn 比較するもんじゃないだろ
C++は好きだが、在庫管理システムをC++で書けと言われたら全力で拒否してC#を推すぞ俺は
C++は好きだが、在庫管理システムをC++で書けと言われたら全力で拒否してC#を推すぞ俺は
464デフォルトの名無しさん
2019/12/02(月) 11:06:47.45ID:5u9Q6RC4 ほんとそれだな
きみらはいつになったらライトバンとセダンの使い分けができるようになるのか・・
きみらはいつになったらライトバンとセダンの使い分けができるようになるのか・・
465デフォルトの名無しさん
2019/12/02(月) 11:42:23.75ID:L9XsPrRa466デフォルトの名無しさん
2019/12/02(月) 13:15:55.16ID:/N45p/D+ でもJavaはベンチとると速いんだけど、実際は遅い。
これ、リソースを食いすぎるのが原因なので、本当はサーバーよりクライアントに向いているんじゃないのかな。
これ、リソースを食いすぎるのが原因なので、本当はサーバーよりクライアントに向いているんじゃないのかな。
467デフォルトの名無しさん
2019/12/02(月) 13:16:09.89ID:xJykAg3Z ライトバンとセダン?
スリッパと自転車と乗用車と飛行機とロケット
くらい使い分けないとダメ
スリッパと自転車と乗用車と飛行機とロケット
くらい使い分けないとダメ
468デフォルトの名無しさん
2019/12/02(月) 13:19:02.21ID:/N45p/D+ C++はメモリーの分断化があるので、長時間起動し続けるサーバーには向いていないと言われてるんだけど、実際にやってみたら全く問題なかった。
考えてみると、JavaプログラムをホストするシステムがC/C++で書かれてるんだから、本当に問題になるなら、Javaも無理なはず。
考えてみると、JavaプログラムをホストするシステムがC/C++で書かれてるんだから、本当に問題になるなら、Javaも無理なはず。
469デフォルトの名無しさん
2019/12/02(月) 13:20:28.22ID:/N45p/D+ Androidは特に不満もなく動くので、Javaはクライアントでこそ力を発揮するような気がします。
470デフォルトの名無しさん
2019/12/02(月) 13:21:19.03ID:xJykAg3Z メモリは潤沢にあるし
アドレス変換もあるので
よほど下手に作らなければ
PCでフラグメントは問題にはならない
そんな事を心配する時代じゃない
組み込みだと話は別
アドレス変換もあるので
よほど下手に作らなければ
PCでフラグメントは問題にはならない
そんな事を心配する時代じゃない
組み込みだと話は別
471デフォルトの名無しさん
2019/12/02(月) 13:21:57.37ID:/N45p/D+ 機種ごとの差を言語が吸収してくれるなら、こんな楽なことないし。
一方、サーバーは、サービス提供側が機種を自由に選べるのでJavaである必要が無いと思う。
一方、サーバーは、サービス提供側が機種を自由に選べるのでJavaである必要が無いと思う。
472デフォルトの名無しさん
2019/12/02(月) 13:23:17.46ID:xJykAg3Z473デフォルトの名無しさん
2019/12/02(月) 13:23:19.93ID:/N45p/D+474デフォルトの名無しさん
2019/12/02(月) 13:30:11.70ID:wB1a1keO >>468
それは完全に理解不足
Javaや.NETのVMはC++で静的に確保した大きなメモリ領域をヒープと呼んでいる
でアプリ内でnewするとオブジェクトとしてその中の領域が割り当てられ、ハンドル(生ポではない!)をアプリがオブジェクト参照として受け取る
C++のオブジェクトとの大きな違いはオブジェクトを再配置できることであり、
GCが必要に応じてヒープ上のオブジェクトを移動して詰めるため断片化が生じにくい
C++でも生ポを使わなければ再配置できるんだけどね
それは完全に理解不足
Javaや.NETのVMはC++で静的に確保した大きなメモリ領域をヒープと呼んでいる
でアプリ内でnewするとオブジェクトとしてその中の領域が割り当てられ、ハンドル(生ポではない!)をアプリがオブジェクト参照として受け取る
C++のオブジェクトとの大きな違いはオブジェクトを再配置できることであり、
GCが必要に応じてヒープ上のオブジェクトを移動して詰めるため断片化が生じにくい
C++でも生ポを使わなければ再配置できるんだけどね
475デフォルトの名無しさん
2019/12/02(月) 13:31:49.39ID:az4xQt0G メモリ激増のお陰じゃねえの
476デフォルトの名無しさん
2019/12/02(月) 13:41:55.06ID:qRRc8YVo その辺はOSの仕事であるべきやと思うわ
477デフォルトの名無しさん
2019/12/02(月) 13:49:06.39ID:az4xQt0G やってることがさほど変わらず100MB確保から1GB確保にするだけで
断片化率が1/10になる
プログラミングの技量が全く変化しないのにも関わらず安全性が10倍になる
つまりマシンの搭載メモリが1GBから10GBになるだけで安全係数が10倍になる
これぞ大富豪プログラミング
断片化率が1/10になる
プログラミングの技量が全く変化しないのにも関わらず安全性が10倍になる
つまりマシンの搭載メモリが1GBから10GBになるだけで安全係数が10倍になる
これぞ大富豪プログラミング
478デフォルトの名無しさん
2019/12/02(月) 15:06:09.31ID:rcvN6dfE >>474
windows3.1のGlobalAllocみたいのを今さらドヤられても…
windows3.1のGlobalAllocみたいのを今さらドヤられても…
479デフォルトの名無しさん
2019/12/02(月) 15:20:31.50ID:Vo2mhncO >>468
実はかなり古くから、C/C++ の malloc(), new のヒープメモリから確保したメモリの
断片化は、実際に問題になるようなことはとても少ないといわれています。
というのは、断片化というのは、確保したメモリを開放したときに出来た
「隙間にある空きメモリ」が再利用されにくい場合に起きるものなんですが、
実際には、再利用されることが多いためです。なぜなら、おなじサイズの
オブジェクトを new することが多いためです。この場合、完全に再利用されるので
断片化の問題と言うものは全く起きないと言っても過言では有りません。
それから、通常、1つのオブジェクトのサイズは小さく、それが多数集まって
データをなしていることが多いのです。このことから、異なるサイズのオブジェクト
であっても、1つ1つのオブジェクトのサイズが小さいため、断片化したとしても、
再利用される確率が高いのです。まず、同じサイズのオブジェクトであれば再利用されます。
異なるサイズであっても、昔開放されたオブジェクトよりも、小さいサイズのオブジェクトを
新しく確保する場合であれば再利用されます。
このようなことから現実の例では、断片化しても、使われないメモリの量はある程度の比率
に収まると言われており、それは GarbageCollection を行うためのオーバーヘッドの
メモリのサイズと比べても余り大きいものではないのです。
ゲームはメモリー効率も求められますが、それでも C/C++ が使われているのは、
メモリー断片化の量が一定比率より多くなら無い事が経験的に知られているためです。
実はかなり古くから、C/C++ の malloc(), new のヒープメモリから確保したメモリの
断片化は、実際に問題になるようなことはとても少ないといわれています。
というのは、断片化というのは、確保したメモリを開放したときに出来た
「隙間にある空きメモリ」が再利用されにくい場合に起きるものなんですが、
実際には、再利用されることが多いためです。なぜなら、おなじサイズの
オブジェクトを new することが多いためです。この場合、完全に再利用されるので
断片化の問題と言うものは全く起きないと言っても過言では有りません。
それから、通常、1つのオブジェクトのサイズは小さく、それが多数集まって
データをなしていることが多いのです。このことから、異なるサイズのオブジェクト
であっても、1つ1つのオブジェクトのサイズが小さいため、断片化したとしても、
再利用される確率が高いのです。まず、同じサイズのオブジェクトであれば再利用されます。
異なるサイズであっても、昔開放されたオブジェクトよりも、小さいサイズのオブジェクトを
新しく確保する場合であれば再利用されます。
このようなことから現実の例では、断片化しても、使われないメモリの量はある程度の比率
に収まると言われており、それは GarbageCollection を行うためのオーバーヘッドの
メモリのサイズと比べても余り大きいものではないのです。
ゲームはメモリー効率も求められますが、それでも C/C++ が使われているのは、
メモリー断片化の量が一定比率より多くなら無い事が経験的に知られているためです。
480デフォルトの名無しさん
2019/12/02(月) 15:28:19.20ID:/N45p/D+ フェイスブックがPHPのコードを翻訳機でC++コードに変換して配備してるそうですが。
そんなことするなら最初からC++で書けばいいのに。
そんなことするなら最初からC++で書けばいいのに。
481デフォルトの名無しさん
2019/12/02(月) 15:33:38.42ID:Vo2mhncO >>474
C/C++ では、配列ではなくリンクリストを積極的に使うようにすることに
よって、メモリーが断片化しても再利用される確率を高くすることができます。
というのは、データの基本となっている要素のオブジェクトのサイズが
小さいため、さまざまなサイズのデータを new しても、結果的に、
断片化された空きメモリも高い確率で再利用されるためです。
new、delete するオブジェクトのサイズがランダムな場合で、
断片化空きメモリが残っている場合、確率論的には、おおよそ 2回に1回は
断片化空きメモリが再利用されることになるでしょう。もちろん、
delete された回数が少な過ぎる場合、そもそも断片化空きメモリの個数が少なすぎる
ので、再利用できる確率は低くなります。それは、初期化時やファイルからデータ
読み込み時などにどんどんメモリを new していくよう場合ですので、そもそも
断片化が起きる余地も有りません。
なお、ポインタとリンクリストを組み合わせると、よくある場合には、他の
集合アルゴリズムよりも、効率が高くなりやすいことが知られています。
ただし、文字を集合させて文字列を作るような場合は例外です。
C/C++ では、配列ではなくリンクリストを積極的に使うようにすることに
よって、メモリーが断片化しても再利用される確率を高くすることができます。
というのは、データの基本となっている要素のオブジェクトのサイズが
小さいため、さまざまなサイズのデータを new しても、結果的に、
断片化された空きメモリも高い確率で再利用されるためです。
new、delete するオブジェクトのサイズがランダムな場合で、
断片化空きメモリが残っている場合、確率論的には、おおよそ 2回に1回は
断片化空きメモリが再利用されることになるでしょう。もちろん、
delete された回数が少な過ぎる場合、そもそも断片化空きメモリの個数が少なすぎる
ので、再利用できる確率は低くなります。それは、初期化時やファイルからデータ
読み込み時などにどんどんメモリを new していくよう場合ですので、そもそも
断片化が起きる余地も有りません。
なお、ポインタとリンクリストを組み合わせると、よくある場合には、他の
集合アルゴリズムよりも、効率が高くなりやすいことが知られています。
ただし、文字を集合させて文字列を作るような場合は例外です。
482デフォルトの名無しさん
2019/12/02(月) 15:39:04.52ID:Vo2mhncO >>481
配列の場合、delete するとメモリー上に大きな空き領域が出来ますが、
それより大きなサイズの配列を new しようとすると、そこが再利用できません。
なぜなら、配列の場合、連続したメモリ領域が固まって必要になるため、
要素の個数が N だとすると、N 個全てが一度にまとまって入りきる領域を探す
必要になるためです。
ところが、リンクリストの場合、要素数 N が大きくなっても、バラバラな
領域に分散して格納することが出来ます。すると、とても高い確率で、
分断化された空きメモリが再利用されることになります。
配列の場合、delete するとメモリー上に大きな空き領域が出来ますが、
それより大きなサイズの配列を new しようとすると、そこが再利用できません。
なぜなら、配列の場合、連続したメモリ領域が固まって必要になるため、
要素の個数が N だとすると、N 個全てが一度にまとまって入りきる領域を探す
必要になるためです。
ところが、リンクリストの場合、要素数 N が大きくなっても、バラバラな
領域に分散して格納することが出来ます。すると、とても高い確率で、
分断化された空きメモリが再利用されることになります。
483デフォルトの名無しさん
2019/12/02(月) 15:50:07.84ID:Vo2mhncO >>481
「2回に1回」と書きましたが、実際にはもっと確率は高いです。
リンクリストを使っている場合、要素を全部 delete したような場合は、開放された
空きブロックは、余り断片化せずに、比較的高い確率で結合され、大きな空きブロックに
なるためです。空きメモリは、元の要素のサイズの複数個分以上になっている確率が
高くなります(複雑ですが、管理領域のサイズもこれに加わります。)。
この性質があるため、現実には、小さいサイズのオブジェクトを要素とする集合
が多種類有った場合、それを好きに new, delete した場合、50% よりずっと高い確率で
断片化空きメモリーは再利用されます。
「2回に1回」と書きましたが、実際にはもっと確率は高いです。
リンクリストを使っている場合、要素を全部 delete したような場合は、開放された
空きブロックは、余り断片化せずに、比較的高い確率で結合され、大きな空きブロックに
なるためです。空きメモリは、元の要素のサイズの複数個分以上になっている確率が
高くなります(複雑ですが、管理領域のサイズもこれに加わります。)。
この性質があるため、現実には、小さいサイズのオブジェクトを要素とする集合
が多種類有った場合、それを好きに new, delete した場合、50% よりずっと高い確率で
断片化空きメモリーは再利用されます。
484デフォルトの名無しさん
2019/12/02(月) 16:10:33.93ID:Vo2mhncO >>483
誤解無きように細くしておくと、「50% より大きい」というのは、
「断片化された空き領域が再利用される確率」
のことで、「断片化率」ではありません、。断片化率はもっと
小さな値になり、条件によりますが、例えば、数%〜10%程度
が目安になります。最悪のケースだともっと大きいのですが、
ケースバイケースで適切なデータ構造(集合アルゴリズム)を
使っているとこの程度に収まります。また、適切なデータ構造を
選択することはそんなに難しいわけではありません、。
誤解無きように細くしておくと、「50% より大きい」というのは、
「断片化された空き領域が再利用される確率」
のことで、「断片化率」ではありません、。断片化率はもっと
小さな値になり、条件によりますが、例えば、数%〜10%程度
が目安になります。最悪のケースだともっと大きいのですが、
ケースバイケースで適切なデータ構造(集合アルゴリズム)を
使っているとこの程度に収まります。また、適切なデータ構造を
選択することはそんなに難しいわけではありません、。
485デフォルトの名無しさん
2019/12/02(月) 16:15:53.26ID:Vo2mhncO >>475
既に、Windows95くらいの時期のメモリ容量で、C/C++のメモリ断片化は
問題が無い程度になっていました。実際には、MS-DOSの時代でも既に
問題なかったのですが。
とにかく、今の若い人の目線で言えば、古代ともいえるくらい古い時代に
既に C/C++ のメモリー断片化問題は問題が無い程度にハードウェアが
発達済みなのです。PC-8801 の 8BIT 時代には問題があったので、
N88-BASIC を筆頭に、GarbageCollection 方式をとっていましたが、
それは、若い人には「超古代文明」時代でしょう。
既に、Windows95くらいの時期のメモリ容量で、C/C++のメモリ断片化は
問題が無い程度になっていました。実際には、MS-DOSの時代でも既に
問題なかったのですが。
とにかく、今の若い人の目線で言えば、古代ともいえるくらい古い時代に
既に C/C++ のメモリー断片化問題は問題が無い程度にハードウェアが
発達済みなのです。PC-8801 の 8BIT 時代には問題があったので、
N88-BASIC を筆頭に、GarbageCollection 方式をとっていましたが、
それは、若い人には「超古代文明」時代でしょう。
486デフォルトの名無しさん
2019/12/02(月) 16:34:28.08ID:Vo2mhncO >>485
また誤解が入りそうなので細くしておきます。
N88-BASIC などが GarbageCollection を使っていたのは、本当に
マシンのメモリが少ないのでデータをぎゅーぎゅー詰めに隙間無く
入れることが重要だったためです。
一方、JavaやC#がGarbageCollection を使っているのは、どちらかと
いうと、「メモリー開放の自動化」のためです。参照カウンタだけで
は、循環参照問題が生じるため、時々、広い範囲のメモリブロックを
巡回して、循環参照していても本当に使って無い場合を厳密に見つけ出して、
徹底的に開放することを行います。
そのため、メモリーの断片化問題とはまた違う意味で、メモリー開放の
自動化には、GarbageCollection が必要となっています。
N88-BASIC 時代と、現在の Java, C# とでは、同じ GarbageCollection
でも主な役割が違うと考えられます。もちろん、断片化を防ぐ役割も同時に
果たしてくれますが。
また誤解が入りそうなので細くしておきます。
N88-BASIC などが GarbageCollection を使っていたのは、本当に
マシンのメモリが少ないのでデータをぎゅーぎゅー詰めに隙間無く
入れることが重要だったためです。
一方、JavaやC#がGarbageCollection を使っているのは、どちらかと
いうと、「メモリー開放の自動化」のためです。参照カウンタだけで
は、循環参照問題が生じるため、時々、広い範囲のメモリブロックを
巡回して、循環参照していても本当に使って無い場合を厳密に見つけ出して、
徹底的に開放することを行います。
そのため、メモリーの断片化問題とはまた違う意味で、メモリー開放の
自動化には、GarbageCollection が必要となっています。
N88-BASIC 時代と、現在の Java, C# とでは、同じ GarbageCollection
でも主な役割が違うと考えられます。もちろん、断片化を防ぐ役割も同時に
果たしてくれますが。
487デフォルトの名無しさん
2019/12/02(月) 16:40:43.00ID:Vo2mhncO >>486
誤字訂正: 細く ---> 補足
・BASIC言語にはポインタが無かったので、循環参照問題は有りませんでした。
・BASIC言語における GarbageCollection は、主に文字列領域の開放のためです。
A$="HELLO WORLD" と入れた後、A$="" とした時、元の文字列に使っていた
領域は、しばらく経った後に GarbageCollection で開放される仕組みでした。
ですので、文字列を余り使わなければ GarbageCollection も余りおきませんでした。
なお、DIM A(100) のように確保した配列は、余り開放することは有りませんでしたが、
開放した場合も、しばらく後に GarbageCollection の対象になっていたと思われます。
誤字訂正: 細く ---> 補足
・BASIC言語にはポインタが無かったので、循環参照問題は有りませんでした。
・BASIC言語における GarbageCollection は、主に文字列領域の開放のためです。
A$="HELLO WORLD" と入れた後、A$="" とした時、元の文字列に使っていた
領域は、しばらく経った後に GarbageCollection で開放される仕組みでした。
ですので、文字列を余り使わなければ GarbageCollection も余りおきませんでした。
なお、DIM A(100) のように確保した配列は、余り開放することは有りませんでしたが、
開放した場合も、しばらく後に GarbageCollection の対象になっていたと思われます。
488デフォルトの名無しさん
2019/12/02(月) 17:06:01.34ID:wB1a1keO リンクリストってシーケンシャルアクセスで毎回キャッシュミスするから、
配列の代わりに全面的に使ったりしたら断片化とか最早どうでもいいレベルでパフォーマンス低下するぞ
配列の代わりに全面的に使ったりしたら断片化とか最早どうでもいいレベルでパフォーマンス低下するぞ
489デフォルトの名無しさん
2019/12/02(月) 17:15:40.51ID:Vo2mhncO >>488
リンクリストでシーケンシャルアクセスする場合、キャッシュ以前に
ポインタをたどるようにアクセスしないといけないのですが、
最近、配列と同じような通し番号方式でアクセスしようとする人が
多くなっています。ライブラリなどは、以前にアクセスした番号が
k の場合、そのポインタを覚えておいて、プログラマが k + 1 の番号
をアクセスしようとした場合、後続のノードへのポインタをたどる
ことで高速化している場合があるので、特に問題が無い場合がありますが、
それを深く理解せずに、本当に先頭のノードからたどってしまった場合、
本来なら O(N)で済むところが、O(N^2) になってしまいます。
リンクリストでシーケンシャルアクセスする場合、キャッシュ以前に
ポインタをたどるようにアクセスしないといけないのですが、
最近、配列と同じような通し番号方式でアクセスしようとする人が
多くなっています。ライブラリなどは、以前にアクセスした番号が
k の場合、そのポインタを覚えておいて、プログラマが k + 1 の番号
をアクセスしようとした場合、後続のノードへのポインタをたどる
ことで高速化している場合があるので、特に問題が無い場合がありますが、
それを深く理解せずに、本当に先頭のノードからたどってしまった場合、
本来なら O(N)で済むところが、O(N^2) になってしまいます。
490デフォルトの名無しさん
2019/12/02(月) 17:16:14.80ID:/N45p/D+ >>487
ヌルポ。
ヌルポ。
491デフォルトの名無しさん
2019/12/02(月) 17:18:32.46ID:Vo2mhncO >>489
C/C++ でのリンクリストは、場所を覚えるのは通し番号ではなく、ポインタ
で行うことが基本です。ところが、最近、通し番号で覚えてしまうプログラムを
書く人が増えているように感じます。それは、キャッシュのために遅くなっているの
ではなく、計算オーダーが完全に違ってくるために遅くなるため、ただごとではない
遅さを招きます。
C/C++ でのリンクリストは、場所を覚えるのは通し番号ではなく、ポインタ
で行うことが基本です。ところが、最近、通し番号で覚えてしまうプログラムを
書く人が増えているように感じます。それは、キャッシュのために遅くなっているの
ではなく、計算オーダーが完全に違ってくるために遅くなるため、ただごとではない
遅さを招きます。
492デフォルトの名無しさん
2019/12/02(月) 20:46:52.56ID:rSqEF7g8 ネトウヨ東大特任准教授、謝罪するも言い訳「AIの過学習によるもの」
https://medaka.5ch.net/test/read.cgi/jsaloon/1575275488/
https://medaka.5ch.net/test/read.cgi/jsaloon/1575275488/
493デフォルトの名無しさん
2019/12/02(月) 20:59:09.09ID:RyZvLJkF >>487
循環参照問題の有無はポインタ(アドレス)とは関係ないでしょ。
循環参照問題の有無はポインタ(アドレス)とは関係ないでしょ。
494デフォルトの名無しさん
2019/12/02(月) 21:16:13.89ID:6AEGHd3a TIOBEってなんて読めばいいの?
ちおべ?
ちおべ?
495デフォルトの名無しさん
2019/12/02(月) 22:59:36.28ID:OlcC/UBE ハッシュテーブルで要素Xが既存要素Yと衝突した場合でもXを格納したい場合は
リハッシュかリストになる
キモス
リハッシュで容量をちゃんと使い切るには相当にハッシュ関数を考えねばならない上に
衝突データを取り出すのに何回リハッシュしたかを見ながら要素をたどっていく必要があり、
ハッシュの検索性を帳消しにしてしまいかねない
よってリストのが圧倒的に簡単で速い
リハッシュかリストになる
キモス
リハッシュで容量をちゃんと使い切るには相当にハッシュ関数を考えねばならない上に
衝突データを取り出すのに何回リハッシュしたかを見ながら要素をたどっていく必要があり、
ハッシュの検索性を帳消しにしてしまいかねない
よってリストのが圧倒的に簡単で速い
496デフォルトの名無しさん
2019/12/02(月) 23:15:49.08ID:OlcC/UBE >>493
ある
ガベージコレクト対象データでもって他のガベージコレクト対象データを指し示すような
再帰構造が表現不可能なら循環参照は当然起きない
N88-BASICの文字列はキャラクターの集まりであって他の文字列を指し示したりできないから、
相当の無能か悪意を伴って設計しない限り、文字列メモリのガベージコレクションで
循環参照は起こしようが無い(やるべきことは素のmalloc/freeに他ならない
ある
ガベージコレクト対象データでもって他のガベージコレクト対象データを指し示すような
再帰構造が表現不可能なら循環参照は当然起きない
N88-BASICの文字列はキャラクターの集まりであって他の文字列を指し示したりできないから、
相当の無能か悪意を伴って設計しない限り、文字列メモリのガベージコレクションで
循環参照は起こしようが無い(やるべきことは素のmalloc/freeに他ならない
497デフォルトの名無しさん
2019/12/02(月) 23:29:11.52ID:VdJ0qliF498デフォルトの名無しさん
2019/12/02(月) 23:30:20.73ID:VdJ0qliF すまん>>497はまちがい
499デフォルトの名無しさん
2019/12/03(火) 04:41:05.52ID:LCf1R81a まだやってたのか
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
うんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんちうんち
500デフォルトの名無しさん
2019/12/03(火) 06:45:35.36ID:Ocr+v9UU C++20あたりになるともうついていけそうにないな。
501デフォルトの名無しさん
2019/12/03(火) 07:20:16.39ID:k7viogN8 conceptの仕上がり次第だろうな
Cのrestrictもそうであるように
うるさすぎると嫌気がさすやつが続出する
Cのrestrictもそうであるように
うるさすぎると嫌気がさすやつが続出する
502デフォルトの名無しさん
2019/12/03(火) 14:10:18.28ID:LOAssVxZ 実際にコードを書いてないやつほど仕様を知っててアホみたいなこだわりを見せる
ってことが常態化してる。
そろそろロクでもない結末を迎える。
ってことが常態化してる。
そろそろロクでもない結末を迎える。
503デフォルトの名無しさん
2019/12/03(火) 14:24:39.60ID:jKB+EPlO 並列処理じゃないですかねこれからは
マルチなコアをもりもり使えないと
マルチなコアをもりもり使えないと
504デフォルトの名無しさん
2019/12/03(火) 14:38:06.74ID:g2sdmHcp505デフォルトの名無しさん
2019/12/03(火) 15:33:28.77ID:+wDBcAl/ コンパイラやパーサーを作っているか、本を書こうとしている人だとすれば
隅々まで仕様を知る必要があるから、単なる自己満足の言語ヲタクとは
限らない。
隅々まで仕様を知る必要があるから、単なる自己満足の言語ヲタクとは
限らない。
506デフォルトの名無しさん
2019/12/03(火) 15:40:53.19ID:LOAssVxZ コンパイラやパーサを作ってる人よりも
本やブログを書くだけの馬鹿のが変な仕様にこだわってるのが問題。
後者は単なる自己満足の言語ヲタクと変わらん。
端的にカスでいなくなった方がいい存在と思う。
本やブログを書くだけの馬鹿のが変な仕様にこだわってるのが問題。
後者は単なる自己満足の言語ヲタクと変わらん。
端的にカスでいなくなった方がいい存在と思う。
507デフォルトの名無しさん
2019/12/03(火) 15:46:11.44ID:+wDBcAl/508デフォルトの名無しさん
2019/12/03(火) 16:08:25.07ID:fg+LqIKK 現場でガリガリ書いてる奴らが本を書かないのが悪いんだろ
えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
509デフォルトの名無しさん
2019/12/03(火) 16:50:33.73ID:lE3mHjqg ブログはともかく5chの情報を元に本を書くとか
勘弁してくれ
勘弁してくれ
510デフォルトの名無しさん
2019/12/03(火) 16:52:53.84ID:lE3mHjqg511デフォルトの名無しさん
2019/12/03(火) 16:59:39.64ID:+wDBcAl/ >>509
全く知識が足りて無い場合、知ってる人に聞くと大幅な時間短縮になる事がある。
全く知識が足りて無い場合、知ってる人に聞くと大幅な時間短縮になる事がある。
512デフォルトの名無しさん
2019/12/03(火) 17:42:58.95ID:PvjGA/Sr513デフォルトの名無しさん
2019/12/03(火) 17:45:16.73ID:PvjGA/Sr514デフォルトの名無しさん
2019/12/03(火) 17:50:23.07ID:Ht46Ytqh515デフォルトの名無しさん
2019/12/03(火) 18:43:45.39ID:0IYpewor 未来へのアンカー
516デフォルトの名無しさん
2019/12/03(火) 19:20:43.49ID:+wDBcAl/ >>514
考えてみれば、本を書く人はここでは聞かないかも。
考えてみれば、本を書く人はここでは聞かないかも。
517デフォルトの名無しさん
2019/12/03(火) 19:21:46.86ID:+wDBcAl/ Stroustrap の本とか高いし、cpprefemceは分かりにくいし、誰かに
聞いてみたくなる気持ちは分かるがな。
聞いてみたくなる気持ちは分かるがな。
518デフォルトの名無しさん
2019/12/03(火) 19:22:03.63ID:90Sp73uq >>513
C++のコンパイラ分野でいいので2~3冊あげてみ
C++のコンパイラ分野でいいので2~3冊あげてみ
519デフォルトの名無しさん
2019/12/03(火) 19:22:10.56ID:k7viogN8 けっ 言語についていけねえうえに
ろくな業績も出せてねえ真性ゴミクズが
書いたコードの量が多いんだと
精一杯のブラフで自我を保とうと必死こく
究極にくだらねえ茶番だろうが
ろくな業績も出せてねえ真性ゴミクズが
書いたコードの量が多いんだと
精一杯のブラフで自我を保とうと必死こく
究極にくだらねえ茶番だろうが
520デフォルトの名無しさん
2019/12/03(火) 19:25:02.10ID:A/ggV3OU コードを書けないのがコンプレックス?
521デフォルトの名無しさん
2019/12/03(火) 19:26:01.05ID:cEtr/lck 禿4はわかりやすかったけど、もう少し突っ込んだ話が読みたかったな。
522デフォルトの名無しさん
2019/12/03(火) 19:26:43.98ID:cEtr/lck 禿4はキンドルのセールに出ることあるよ。
523デフォルトの名無しさん
2019/12/03(火) 19:43:50.04ID:LOAssVxZ 禿4は量が少ないわけではないがc++を今からやるとしたら最低限ああなるだろ。
あれ以下に減らすのは実際無理。
あれ以下に減らすのは実際無理。
524デフォルトの名無しさん
2019/12/03(火) 19:55:41.70ID:PvjGA/Sr525デフォルトの名無しさん
2019/12/03(火) 21:01:44.02ID:z2MNOJTT >>524
違うんなら証拠出してみろよ
言ってることが薄っぺらくてゴミクズにしか見えねえが
そういう俺にお見それしましたと言わしめる内容がおまえにあるか?
身バレするようなことでなくて結構だ
話している内容に深みを感じるかどうかだ
もう一度言う、おまえの言葉にはそれがまるでない
違うんなら証拠出してみろよ
言ってることが薄っぺらくてゴミクズにしか見えねえが
そういう俺にお見それしましたと言わしめる内容がおまえにあるか?
身バレするようなことでなくて結構だ
話している内容に深みを感じるかどうかだ
もう一度言う、おまえの言葉にはそれがまるでない
526デフォルトの名無しさん
2019/12/03(火) 21:24:21.32ID:qY14OTyg527デフォルトの名無しさん
2019/12/03(火) 21:26:06.12ID:A/ggV3OU おまいらスレタイ
528デフォルトの名無しさん
2019/12/03(火) 21:30:25.58ID:3WzRY7Z3 実にC++erらしいこのスレにぴったりの会話だな
529デフォルトの名無しさん
2019/12/03(火) 21:58:21.97ID:c+vMaKjo530デフォルトの名無しさん
2019/12/03(火) 22:13:59.08ID:z2MNOJTT >>529
おまえ誰?
おまえ誰?
531デフォルトの名無しさん
2019/12/03(火) 22:43:52.58ID:Tjb84Rtt 「現場でガリガリ」って可愛い表現だなw
アマチュア精神がにじみ出てる
アマチュア精神がにじみ出てる
532デフォルトの名無しさん
2019/12/03(火) 23:17:48.08ID:jKB+EPlO 禿禿言うなよ
気にしてるらしいぞ
気にしてるらしいぞ
533デフォルトの名無しさん
2019/12/03(火) 23:39:54.64ID:l6CFXVtO お前らがC++高等テクニックww持ってるのは分かったから
まずまともな設計上げてこいやww
まずまともな設計上げてこいやww
534デフォルトの名無しさん
2019/12/03(火) 23:42:10.99ID:3WzRY7Z3 経験マウント vs 知識マウント
実に人格障害のC++erらしいスレだ
実に人格障害のC++erらしいスレだ
535デフォルトの名無しさん
2019/12/04(水) 01:05:50.07ID:FhHmXOPx 知識も経験も豊富な奴おらんのか?
536デフォルトの名無しさん
2019/12/04(水) 01:18:20.24ID:MnUOTj8y >>535
多分、C++の仕様が異常なほど膨れ上がってること、JavaScriptやWebGL、
AjaxやC#なども勉強しなくてはならない事が多くなったことなどもあって、
プログラムを沢山しながら仕様にも詳しい人は壊滅状態であることは想像に難くない。
多分、C++の仕様が異常なほど膨れ上がってること、JavaScriptやWebGL、
AjaxやC#なども勉強しなくてはならない事が多くなったことなどもあって、
プログラムを沢山しながら仕様にも詳しい人は壊滅状態であることは想像に難くない。
537デフォルトの名無しさん
2019/12/04(水) 01:23:07.75ID:MnUOTj8y >>536
というか、普通にプログラムしていても、HTML、CSS、HTTP などの仕様はもちろん
のこと、Androidやるなら、Java、Kotlin、NDK、iOSやるならSwift、
それに加えて、C#なら、WinFoms、WPFなどもあり、さらに、WSL、
PowerShellにbashやApacheの設定方法、ライセンス各種の勉強などなど、
やることが多くなってきている。本当は、React、Blazor、Vue.js、node.js
Electron、flutter、wxWidget、Qt、GTK。別に全部やる必要はないが、
予備知識として知ってないと技術資料も理解しにくいことが多くなってきた。
というか、普通にプログラムしていても、HTML、CSS、HTTP などの仕様はもちろん
のこと、Androidやるなら、Java、Kotlin、NDK、iOSやるならSwift、
それに加えて、C#なら、WinFoms、WPFなどもあり、さらに、WSL、
PowerShellにbashやApacheの設定方法、ライセンス各種の勉強などなど、
やることが多くなってきている。本当は、React、Blazor、Vue.js、node.js
Electron、flutter、wxWidget、Qt、GTK。別に全部やる必要はないが、
予備知識として知ってないと技術資料も理解しにくいことが多くなってきた。
538デフォルトの名無しさん
2019/12/04(水) 01:25:21.34ID:FhHmXOPx 自分の得意分野以外は浅く予習しておいて使うときになって覚えて使わなくなったら忘れてる
539デフォルトの名無しさん
2019/12/04(水) 01:26:04.91ID:MnUOTj8y540デフォルトの名無しさん
2019/12/04(水) 01:31:31.51ID:gHx24DkE 今時コードだけでプログラミングするもんでもあるまい
C++使いならフロントはばっさり切り捨ててAWSとGCPにスキルを振ったほうが一貫性があり無駄の少ないスキルセットになる
C++使いならフロントはばっさり切り捨ててAWSとGCPにスキルを振ったほうが一貫性があり無駄の少ないスキルセットになる
541デフォルトの名無しさん
2019/12/04(水) 01:36:36.01ID:4dvDh/Ut std::cout での出力フォーマット指定に関して教えてください。
cout.flag( ios::uppercase | ios::hex ) やら cout << setfill('0') とか
cout << scientific << setprecision(10) とかとか
大半の指定が 1回 数値 を出力した後も その状態が保持されたままなのに
cout << setw(24) による出力幅指定は その都度指定しないと忘れてしまう挙動になっています。
その都度指定する必要は他にもあるのか。それと、
http://www.cplusplus.com/reference/iomanip/setw/
みたいな仕様を見て、どう読み取ればそれが正しい挙動であると分かるのか教えてほしいです。
ある個人ブログには setfill も毎回出力する度に指定する必要があるのだと書かれていましたが、
自分の環境では setfill は状態が保持されました。
cout.flag( ios::uppercase | ios::hex ) やら cout << setfill('0') とか
cout << scientific << setprecision(10) とかとか
大半の指定が 1回 数値 を出力した後も その状態が保持されたままなのに
cout << setw(24) による出力幅指定は その都度指定しないと忘れてしまう挙動になっています。
その都度指定する必要は他にもあるのか。それと、
http://www.cplusplus.com/reference/iomanip/setw/
みたいな仕様を見て、どう読み取ればそれが正しい挙動であると分かるのか教えてほしいです。
ある個人ブログには setfill も毎回出力する度に指定する必要があるのだと書かれていましたが、
自分の環境では setfill は状態が保持されました。
542デフォルトの名無しさん
2019/12/04(水) 01:41:33.70ID:9acC9vOn フロントエンドは本当に時間の無駄
ましてC++プログラマならほとんど領域が被らないから単なる二足のわらじ状態で非効率なだけ
ましてC++プログラマならほとんど領域が被らないから単なる二足のわらじ状態で非効率なだけ
543デフォルトの名無しさん
2019/12/04(水) 04:32:29.80ID:mZNCV5xz544デフォルトの名無しさん
2019/12/04(水) 04:32:49.61ID:mZNCV5xz >>525
>えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
こんな腐りきった発言する思い上がったゴミアマチュアに教えてやることなど何もない
お前が使ってるその箱で動いてるソフトは誰が書いてくれてると思ってんだ
>えっ、ブラック労働環境で疲弊してて書く余裕がないって?w
こんな腐りきった発言する思い上がったゴミアマチュアに教えてやることなど何もない
お前が使ってるその箱で動いてるソフトは誰が書いてくれてると思ってんだ
546デフォルトの名無しさん
2019/12/04(水) 07:09:58.31ID:Z3kanSY4 >>536
うん、想像なら只だもんな
うん、想像なら只だもんな
547デフォルトの名無しさん
2019/12/04(水) 07:33:04.63ID:8KgKER1O そもそも現場の奴らは、現場のやり方しか身につける必要ないだろw
548デフォルトの名無しさん
2019/12/04(水) 07:54:48.53ID:Jd4YzzOQ549デフォルトの名無しさん
2019/12/04(水) 08:05:44.23ID:mZNCV5xz >>548
挙げたらどうなんの?お前には興味ない内容だと思うけど
「ド素人が言ってんだろ」と思ってるんだろうけど、お前の誤解を晴らすためになんで自分の分野晒さなきゃいけないの?
本の名前挙げたら謝るの?
挙げたらどうなんの?お前には興味ない内容だと思うけど
「ド素人が言ってんだろ」と思ってるんだろうけど、お前の誤解を晴らすためになんで自分の分野晒さなきゃいけないの?
本の名前挙げたら謝るの?
550デフォルトの名無しさん
2019/12/04(水) 08:06:15.64ID:mZNCV5xz >>546
実際そうだと思うよ
>>512にも書いたけど、仕事でやってる人もフリーソフト開発者も
規格読んだことある人なんか皆無だと思うよ
他に勉強しなきゃいけないこと山ほどあるし、仕様(新しいのも含め)は必要なときにググって確認するだけ(>>538も言ってるけど)、むしろそうであるべき
それを「言語についていけない」なんて貶せるやつの神経がわからん
>>519とか、ソフト開発もメタプログラミングも出来ないレベルのド素人だろ?
何調子乗ってんの?自分はついていけてんの?w
開発力も無いし言語を活かせてもないのに、実際にC++を実用してる人を貶すとか
頭おかしい真似してるから言語オタクって言われるんだよ
(C++専門のライターも最近そういう傾向あるけど)
>>547
それはそれでどうかと思うけど
実際そうだと思うよ
>>512にも書いたけど、仕事でやってる人もフリーソフト開発者も
規格読んだことある人なんか皆無だと思うよ
他に勉強しなきゃいけないこと山ほどあるし、仕様(新しいのも含め)は必要なときにググって確認するだけ(>>538も言ってるけど)、むしろそうであるべき
それを「言語についていけない」なんて貶せるやつの神経がわからん
>>519とか、ソフト開発もメタプログラミングも出来ないレベルのド素人だろ?
何調子乗ってんの?自分はついていけてんの?w
開発力も無いし言語を活かせてもないのに、実際にC++を実用してる人を貶すとか
頭おかしい真似してるから言語オタクって言われるんだよ
(C++専門のライターも最近そういう傾向あるけど)
>>547
それはそれでどうかと思うけど
551デフォルトの名無しさん
2019/12/04(水) 08:07:22.17ID:uB21TJa6 >>541 直接的な回答でない上に長々しい文章で気が引けるけど…。
『プログラミング言語C++』第4版の38章「入出力ストリーム」で
「width(n)の呼出しは、その直後に行われる<<による出力だけに影響を与える」
と書いてあるね(p. 1094)。
setw() は「次の出力のフィールド幅をn文字とする」(p. 1096 の下の表)
表の説明で“次の出力の”と限定されてるのはsetw()だけ。
で、一般的に書式指定やマニピュレータのうち、
どれが「一度指定したら別の指定をするまで有効」で、
どれが「指定された次の出力だけ有効、その後デフォルト状態に戻る」なのか、
N3337 の 27.5.3.2 周辺を見ても分からなかった。
基本的には ttp://www.cplusplus.com/reference/iomanip/setw/ よりも
少ない記述内容だし、「この指定は直後の一回の出力に限り有効」みたいな
補足の説明も見当たらない。
ISOやJISの規格に詳しい人が「素人め、ここに載ってるんだよ」と
ズバリ指摘してくれるのを期待して、調べた限りを投稿してみた。
『プログラミング言語C++』第4版の38章「入出力ストリーム」で
「width(n)の呼出しは、その直後に行われる<<による出力だけに影響を与える」
と書いてあるね(p. 1094)。
setw() は「次の出力のフィールド幅をn文字とする」(p. 1096 の下の表)
表の説明で“次の出力の”と限定されてるのはsetw()だけ。
で、一般的に書式指定やマニピュレータのうち、
どれが「一度指定したら別の指定をするまで有効」で、
どれが「指定された次の出力だけ有効、その後デフォルト状態に戻る」なのか、
N3337 の 27.5.3.2 周辺を見ても分からなかった。
基本的には ttp://www.cplusplus.com/reference/iomanip/setw/ よりも
少ない記述内容だし、「この指定は直後の一回の出力に限り有効」みたいな
補足の説明も見当たらない。
ISOやJISの規格に詳しい人が「素人め、ここに載ってるんだよ」と
ズバリ指摘してくれるのを期待して、調べた限りを投稿してみた。
552デフォルトの名無しさん
2019/12/04(水) 08:21:05.72ID:Jd4YzzOQ553デフォルトの名無しさん
2019/12/04(水) 08:24:57.77ID:uB21TJa6 >>541
setfill() じゃなくて setw() の話だけど、古い本に
「setw()の幅指定は、永続的に有効な実装と、直後の出力1回だけ有効な実装との
両方が存在するので、移植性を考えれば毎回指定する方が安全」とか載ってた。
もしかすると過去には「setfill() は1回だけ有効」な実装が存在したのかも知れん。
その後、規格で挙動が厳密に定められたのか、
今でも実装によって動作が違っても構わない(規格に明記されていない)のか、
肝心なその点は分からん。
setfill() じゃなくて setw() の話だけど、古い本に
「setw()の幅指定は、永続的に有効な実装と、直後の出力1回だけ有効な実装との
両方が存在するので、移植性を考えれば毎回指定する方が安全」とか載ってた。
もしかすると過去には「setfill() は1回だけ有効」な実装が存在したのかも知れん。
その後、規格で挙動が厳密に定められたのか、
今でも実装によって動作が違っても構わない(規格に明記されていない)のか、
肝心なその点は分からん。
554549
2019/12/04(水) 08:41:52.15ID:0MJ4ry5i555デフォルトの名無しさん
2019/12/04(水) 08:46:18.46ID:Z3kanSY4556デフォルトの名無しさん
2019/12/04(水) 08:48:00.43ID:6WV7ZyL7557デフォルトの名無しさん
2019/12/04(水) 09:05:20.91ID:Z3kanSY4558デフォルトの名無しさん
2019/12/04(水) 09:08:12.84ID:d8r3fnrq559デフォルトの名無しさん
2019/12/04(水) 09:15:53.35ID:Z3kanSY4 >>557
550は規格を読んだことがあるやつは皆無と言ったんだよ
それがC++だけにせよ規格全てにせよ
おかしい主張であることに変わりはない
自分の発言を読み返してみな
俺がわざわざ頓珍漢とか言ってやることもない
550は規格を読んだことがあるやつは皆無と言ったんだよ
それがC++だけにせよ規格全てにせよ
おかしい主張であることに変わりはない
自分の発言を読み返してみな
俺がわざわざ頓珍漢とか言ってやることもない
560デフォルトの名無しさん
2019/12/04(水) 09:16:34.99ID:Z3kanSY4 安価ミスった
558な
558な
561554=556=558
2019/12/04(水) 09:32:28.38ID:mZNCV5xz お前はC++の標準ライブラリ等の仕様の確認に毎回規格書読んでんの?
562デフォルトの名無しさん
2019/12/04(水) 09:53:35.71ID:4dvDh/Ut >>551, >>553 ありがとうございます。
今「C++ポケットリファレンス」を見たら
ほかのマニピュレータと異なり、std:setw()は例外的に効果が持続しません。
一度std::setw を指定した出力が行われると効果は解除されます
(std::setw(0)を呼び出した状態になります)。
とありました (p.250)。
それと...
$ man std::setw
〜
The width property of the stream will be reset to zero (meaning "unspecified") if 〜
ちゃんと書いてますね。何より先に man を見るべきでした。
とはいえ setw は "例外的" なのだとちゃんと教えてくれる本は助かるなあと思いました。
今「C++ポケットリファレンス」を見たら
ほかのマニピュレータと異なり、std:setw()は例外的に効果が持続しません。
一度std::setw を指定した出力が行われると効果は解除されます
(std::setw(0)を呼び出した状態になります)。
とありました (p.250)。
それと...
$ man std::setw
〜
The width property of the stream will be reset to zero (meaning "unspecified") if 〜
ちゃんと書いてますね。何より先に man を見るべきでした。
とはいえ setw は "例外的" なのだとちゃんと教えてくれる本は助かるなあと思いました。
563デフォルトの名無しさん
2019/12/04(水) 10:10:41.87ID:4dvDh/Ut それから man の最後には http://cppreference.com へのリンクがありました。
あまり www.cplusplus.com との違いを意識した事はなかったのですが、
公式仕様として参照するべきなのはそっちのようですね。
同じ内容の日本語版は
https://ja.cppreference.com/w/cpp/io/manip/setw
で見れました。
あまり www.cplusplus.com との違いを意識した事はなかったのですが、
公式仕様として参照するべきなのはそっちのようですね。
同じ内容の日本語版は
https://ja.cppreference.com/w/cpp/io/manip/setw
で見れました。
564デフォルトの名無しさん
2019/12/04(水) 10:52:51.16ID:vhuKISsK 規格確認部とかあるんじゃないの。
知らんけど。
知らんけど。
565デフォルトの名無しさん
2019/12/04(水) 10:57:38.20ID:Z3kanSY4566デフォルトの名無しさん
2019/12/04(水) 11:17:13.05ID:mZNCV5xz それ無駄に時間かかってるんじゃないの
よくクビにならないな
よくクビにならないな
567デフォルトの名無しさん
2019/12/04(水) 11:19:22.93ID:sb3P/SSe 1.禿でも判るC++入門
2.判ると禿げるC++入門
3.禿専用C++
2.判ると禿げるC++入門
3.禿専用C++
568デフォルトの名無しさん
2019/12/04(水) 12:23:43.29ID:Jd4YzzOQ569デフォルトの名無しさん
2019/12/04(水) 12:29:09.42ID:Jd4YzzOQ570デフォルトの名無しさん
2019/12/04(水) 12:36:02.75ID:mZNCV5xz571デフォルトの名無しさん
2019/12/04(水) 12:48:55.97ID:Z3kanSY4 いや、きちんと仕事したくて
伝聞に頼らず一次ソースを確認するんだよ
伝聞に頼らず一次ソースを確認するんだよ
572デフォルトの名無しさん
2019/12/04(水) 12:53:29.05ID:sb3P/SSe 実用コード書くより机上の空仕様書描くのが好きな人なんやろな
573デフォルトの名無しさん
2019/12/04(水) 13:03:10.48ID:Jd4YzzOQ574デフォルトの名無しさん
2019/12/04(水) 13:09:39.95ID:6uL3pMIB おまいらスレタイ
575デフォルトの名無しさん
2019/12/04(水) 13:17:06.83ID:mquXx5f5 みんな私のために争って!
576デフォルトの名無しさん
2019/12/04(水) 13:19:26.79ID:mZNCV5xz 「きちんと仕事したくて伝聞に頼らず一次ソースを確認」
なんか胡散臭くなってきたな・・・・
「仕事でやってる人もフリーソフト開発者も」のどちらにも当てはまらないのに噛み付いてきたんだろうな
エアプログラマの相手してスレ無駄遣いした、すまんかった
なんか胡散臭くなってきたな・・・・
「仕事でやってる人もフリーソフト開発者も」のどちらにも当てはまらないのに噛み付いてきたんだろうな
エアプログラマの相手してスレ無駄遣いした、すまんかった
577デフォルトの名無しさん
2019/12/04(水) 13:20:38.21ID:6uL3pMIB ソフトエンジニアでC++の規格書を読む人なんてほとんどいないよ
そんなのを読んでも良い設計にはつながらない
そんなのを読んでも良い設計にはつながらない
578デフォルトの名無しさん
2019/12/04(水) 13:23:39.63ID:6uL3pMIB 規格書で確認しないと書けない/読めないようなコードは
基本的には悪いコード
基本的には悪いコード
579デフォルトの名無しさん
2019/12/04(水) 13:26:15.79ID:sb3P/SSe ゴールポスト移動中ですね判ります
580デフォルトの名無しさん
2019/12/04(水) 13:27:52.48ID:Z3kanSY4 規格書ではなく規格票な
つまらん齟齬を避けたいのも
規格票を読む目的の1つだ
つまらん齟齬を避けたいのも
規格票を読む目的の1つだ
581デフォルトの名無しさん
2019/12/04(水) 13:42:20.48ID:MnUOTj8y >>578
でも最近、特に海外の方で自分が知っている素朴な C++ とは全く違う
書き方をしている C++ コードを良く見かけるようになったので、
新しい仕様を学ばないと理解できなくなってきた。
STLを深く使うと C++ とは思えないようなコードになるので。
でも最近、特に海外の方で自分が知っている素朴な C++ とは全く違う
書き方をしている C++ コードを良く見かけるようになったので、
新しい仕様を学ばないと理解できなくなってきた。
STLを深く使うと C++ とは思えないようなコードになるので。
582デフォルトの名無しさん
2019/12/04(水) 13:46:18.71ID:P3QxjggL フロント周りは全くついていけない
コロコロと次から次へ節操なく移り変わって馬鹿じゃねえの、とつい老害的思考に
コロコロと次から次へ節操なく移り変わって馬鹿じゃねえの、とつい老害的思考に
583デフォルトの名無しさん
2019/12/04(水) 13:48:46.17ID:rFzpkzsp C++20でコンセプトやモジュールやコルーチン記法が入ってきたら、そういう古兵にはもはやC++には見えんだろうなぁw
584デフォルトの名無しさん
2019/12/04(水) 13:49:01.49ID:sb3P/SSe CUIのフロントはTurboC++だったな
585デフォルトの名無しさん
2019/12/04(水) 14:25:33.26ID:33/nOLSe C++で音鳴らせるようになるの?
586デフォルトの名無しさん
2019/12/04(水) 15:02:13.63ID:vhuKISsK バスブーストですか?
587デフォルトの名無しさん
2019/12/04(水) 15:46:25.30ID:MnUOTj8y 「フロント周り」って何のことですか??
588デフォルトの名無しさん
2019/12/04(水) 16:29:27.61ID:vhuKISsK フロント企業が一般消費者と直接取引する会社で、バックが暴力団じゃなかったっけ。
589デフォルトの名無しさん
2019/12/04(水) 19:40:12.56ID:FhHmXOPx つまんな
590デフォルトの名無しさん
2019/12/04(水) 19:50:18.04ID:FhHmXOPx 企画書を読まないとわからないコードなんかあると思ってるのか?
読むべきはcppreferenceのようなアホにも分かるように優しく解説してくれてる文書
分からないことがあれば必要なキーワードを検索欄にぶち込んだらすぐに分かるようにできている
読むべきはcppreferenceのようなアホにも分かるように優しく解説してくれてる文書
分からないことがあれば必要なキーワードを検索欄にぶち込んだらすぐに分かるようにできている
591デフォルトの名無しさん
2019/12/04(水) 20:09:28.90ID:6yabeJe9 アホのサバイバルか
唾棄
唾棄
592デフォルトの名無しさん
2019/12/04(水) 20:33:31.84ID:ZHZFM6qI プロでもアマチュアでもいいんだよ
初心者でも学生でもいいんだよ
ただし
身の程知らずのド素人が知ったふうな口を利いてるとさすがに叩かれるよ
初心者でも学生でもいいんだよ
ただし
身の程知らずのド素人が知ったふうな口を利いてるとさすがに叩かれるよ
593デフォルトの名無しさん
2019/12/04(水) 20:49:47.75ID:+udf6Yna594デフォルトの名無しさん
2019/12/04(水) 21:20:21.85ID:xsMIF6qI ていうかC++のスレでこんな流れが加速するなんて
思ったよりC++erて数いたんだなぁ、というのが素朴な感想
思ったよりC++erて数いたんだなぁ、というのが素朴な感想
595デフォルトの名無しさん
2019/12/04(水) 21:22:48.52ID:DNIeF7b9 アホでも炎上商法はできるってことだ
596デフォルトの名無しさん
2019/12/04(水) 21:54:34.88ID:vhuKISsK じゃあ点呼取ります。
江添クン!
江添クン!
597デフォルトの名無しさん
2019/12/04(水) 22:15:09.71ID:ZHZFM6qI > 思ったよりC++erて数いたんだなぁ、というのが素朴な感想
C++erというよりここは単に無職と学生サンのすくつでしょw
C++erというよりここは単に無職と学生サンのすくつでしょw
598デフォルトの名無しさん
2019/12/04(水) 22:19:24.66ID:7vpFGLgR とりあえず>>593は無職だと思う
599デフォルトの名無しさん
2019/12/04(水) 22:27:51.85ID:UrCkYA+I c++11以降みたいなああいうコード書きたいなら変な見栄はらずにpythonでもrubyでもやってたらいいんだよ。
600デフォルトの名無しさん
2019/12/04(水) 22:31:45.53ID:QZ1McR0s C++コンパイラやSTL準拠ライブラリを作る仕事に関わってたら規格書を読まないとどうにもならないと思うけど、
そうじゃない人は市販のC++入門で十分じゃないかな。
そうじゃない人は市販のC++入門で十分じゃないかな。
601デフォルトの名無しさん
2019/12/04(水) 22:33:17.56ID:J7QAHgda602デフォルトの名無しさん
2019/12/04(水) 22:33:57.92ID:UrCkYA+I てか規格通りにまともに動くなんてのは例外ってことは
普通にc++を仕事で使ってりゃ分かるもんだがな。
その時点で江添みたいに実際の仕事で使ってないのが丸分かりになる。
普通にc++を仕事で使ってりゃ分かるもんだがな。
その時点で江添みたいに実際の仕事で使ってないのが丸分かりになる。
603デフォルトの名無しさん
2019/12/04(水) 22:58:37.27ID:CXPVLMHx 今時MSVCでも大部分は規格通り動くぞ
604デフォルトの名無しさん
2019/12/04(水) 23:08:27.56ID:7MoywY5f605デフォルトの名無しさん
2019/12/04(水) 23:22:31.61ID:vhuKISsK 式を教えてもいいけど、理解できるかどうか。
606はちみつ餃子 ◆8X2XSCHEME
2019/12/05(木) 00:23:37.10ID:XYdg44Nt 必要なら読むし必要じゃないならないなら読まないってだけのことだろ。
そんなん場合によるっつーつまらん結論しかないと思うが。
そんなん場合によるっつーつまらん結論しかないと思うが。
607デフォルトの名無しさん
2019/12/05(木) 00:28:04.37ID:wvPvimki はいいつものクソ正論いただきました
608デフォルトの名無しさん
2019/12/05(木) 00:35:44.19ID:dM4mxJ4y 実の無い(楽しそうでもない)話をつづけられるよりはクソ正論で鎮火してくれたほうがマシに思う。
件の人たちはそれで鎮火するような人でもないんだろうけど。
件の人たちはそれで鎮火するような人でもないんだろうけど。
609デフォルトの名無しさん
2019/12/05(木) 00:43:36.10ID:2jEFb1Vk 互いに見下しあい罵倒しあってこそC++er
ここは不毛なマウント取り合戦の場C++スレ
鎮火する必要なし
ここは不毛なマウント取り合戦の場C++スレ
鎮火する必要なし
610デフォルトの名無しさん
2019/12/05(木) 01:15:42.96ID:+j7BXLrg また髪の話をしてる
611デフォルトの名無しさん
2019/12/05(木) 02:59:31.66ID:9zn59iXI すまんが、レベルの低い人から見ると、レベルの高い人が気軽に話した
内容が「マウントをとられた」と思ってしまうんだと思う。
そういうつもりで言ってなくても。
これは、公立の小学校でよく起きる現象で、問題になっている。
内容が「マウントをとられた」と思ってしまうんだと思う。
そういうつもりで言ってなくても。
これは、公立の小学校でよく起きる現象で、問題になっている。
612デフォルトの名無しさん
2019/12/05(木) 03:04:36.20ID:9zn59iXI >>611
蛇足だが、これは欧米諸国でよく知られた現象。
アメリカで記名製掲示板が流行るのは、匿名性掲示板ではどうしても
それが起きてしまうので、それをよく分かった上でやっているのかも
知れない。それだけの理由ではないだろうけど。
蛇足だが、これは欧米諸国でよく知られた現象。
アメリカで記名製掲示板が流行るのは、匿名性掲示板ではどうしても
それが起きてしまうので、それをよく分かった上でやっているのかも
知れない。それだけの理由ではないだろうけど。
613デフォルトの名無しさん
2019/12/05(木) 06:18:49.18ID:eAZGTWY0614デフォルトの名無しさん
2019/12/05(木) 08:26:15.95ID:V4GZwDuE しかしあれだな、C++ほどハゲがよく似合う言語を知らない
615デフォルトの名無しさん
2019/12/05(木) 11:35:47.86ID:tjjaS4Ug 江添亮のC++入門 (webドラフト版? https://ezoeryou.github.io/cpp-intro/#再帰関数 )
を読んでます。
>例えば以下は階乗を計算する再帰で書かれたループだ。
> int factorial( int n ) { ...
> return n * factorial(n-1) ;
> ...
>このコードは末尾再帰になっている。
>末尾再帰は非再帰のループに機械的に変換できる特徴を持っている
これ factorial(n-1) が返ってきたらスタックに積んである n を掛けないといけませんよね。
厳密には末尾再帰とは言えない気がします。
そういうの無しに「直帰でコール元に値を渡せる場合」に末尾再帰と言えるのだと思ってたんですが、
私の理解が間違っているのでしょうか?
まあ今のコンパイラーは賢いので細かい事気にする必要ないのかもしれませんが。
を読んでます。
>例えば以下は階乗を計算する再帰で書かれたループだ。
> int factorial( int n ) { ...
> return n * factorial(n-1) ;
> ...
>このコードは末尾再帰になっている。
>末尾再帰は非再帰のループに機械的に変換できる特徴を持っている
これ factorial(n-1) が返ってきたらスタックに積んである n を掛けないといけませんよね。
厳密には末尾再帰とは言えない気がします。
そういうの無しに「直帰でコール元に値を渡せる場合」に末尾再帰と言えるのだと思ってたんですが、
私の理解が間違っているのでしょうか?
まあ今のコンパイラーは賢いので細かい事気にする必要ないのかもしれませんが。
616デフォルトの名無しさん
2019/12/05(木) 11:37:52.20ID:IbmhSLeW617デフォルトの名無しさん
2019/12/05(木) 12:32:19.12ID:RTwQsK8m >>615
末尾再帰じゃないよ
末尾再帰じゃないよ
618デフォルトの名無しさん
2019/12/05(木) 13:51:16.60ID:tjjaS4Ug >>617 ですよね。
ちょっと気になってたのでスッキリしました。
ちょっと気になってたのでスッキリしました。
619デフォルトの名無しさん
2019/12/05(木) 18:12:34.01ID:5PaJAEA2 簡単にループに出来るものはループで記述した方が良いよ
末尾再帰の場合もそうじゃない場合も
実行速度、使用リソース、
デバッグしやすさ、
スタック計算ツールなどツール類の使用、
などなどいろんな要素で
末尾再帰の場合もそうじゃない場合も
実行速度、使用リソース、
デバッグしやすさ、
スタック計算ツールなどツール類の使用、
などなどいろんな要素で
620デフォルトの名無しさん
2019/12/05(木) 18:50:53.78ID:9zn59iXI >>619
本当は、再帰呼び出しだとスタックサイズの制限により呼び出しの深さ(階数)
に制限が付いてしまう。ローカル変数を沢山使っている関数で、
1000万個のオブジェクトを再帰的に処理すると、スタックオーバーフロー
が出てもおかしくない。しかも、最近のマルチスレッド環境だと、
スタックのサイズはどうしても制限が強くなり勝ち。
本当は、再帰呼び出しだとスタックサイズの制限により呼び出しの深さ(階数)
に制限が付いてしまう。ローカル変数を沢山使っている関数で、
1000万個のオブジェクトを再帰的に処理すると、スタックオーバーフロー
が出てもおかしくない。しかも、最近のマルチスレッド環境だと、
スタックのサイズはどうしても制限が強くなり勝ち。
621デフォルトの名無しさん
2019/12/05(木) 18:58:39.27ID:5PaJAEA2 一言で言うと「使用リソース」だね
622デフォルトの名無しさん
2019/12/05(木) 19:02:32.74ID:5PaJAEA2 「最近のマルチスレッド環境」はあまり関係ない
固定スタックサイズの組み込みCPUの方がヤバい
PICみたいなハードウェアスタックだともっとヤバい
固定スタックサイズの組み込みCPUの方がヤバい
PICみたいなハードウェアスタックだともっとヤバい
623デフォルトの名無しさん
2019/12/05(木) 19:28:34.51ID:ZSRmDUxb 検討事項が増えるから仕事で再帰は使わんね。
理解できない人も多いし。
理解できない人も多いし。
624デフォルトの名無しさん
2019/12/05(木) 19:42:30.55ID:9zn59iXI >>622
シングルスレッドだと、スタックは自動伸張することが可能だった。
ところが、32BIT のマルチスレッド環境だと仮想メモリ空間のアドレス
空間自体が不足してしまうので、それは難しい。
ただし、64BIT 環境だと仮想メモリ空間が大きいので余り問題にならない
かも知れない。
シングルスレッドだと、スタックは自動伸張することが可能だった。
ところが、32BIT のマルチスレッド環境だと仮想メモリ空間のアドレス
空間自体が不足してしまうので、それは難しい。
ただし、64BIT 環境だと仮想メモリ空間が大きいので余り問題にならない
かも知れない。
625デフォルトの名無しさん
2019/12/05(木) 19:54:34.15ID:5zWy9aB9 再帰の例でよくでてくるフィボナッチ数列の計算なら
再帰より for で二変数保持しながら計算した方が性能でも可読性でも上だろうな。
再帰より for で二変数保持しながら計算した方が性能でも可読性でも上だろうな。
626デフォルトの名無しさん
2019/12/05(木) 20:04:07.94ID:5PaJAEA2627デフォルトの名無しさん
2019/12/05(木) 20:10:23.46ID:5PaJAEA2628デフォルトの名無しさん
2019/12/05(木) 20:16:10.38ID:5PaJAEA2 再帰をループに置き換えるので面倒なのは
いろんな箇所でたくさん分岐するヤツ
まあでも面倒ってだけで、
必ず再帰を使わずに記述出来る
いろんな箇所でたくさん分岐するヤツ
まあでも面倒ってだけで、
必ず再帰を使わずに記述出来る
629デフォルトの名無しさん
2019/12/05(木) 20:21:10.87ID:5zWy9aB9 treeを辿るコードなんかは再帰のが書きやすいわな。
630デフォルトの名無しさん
2019/12/05(木) 20:23:50.71ID:5PaJAEA2 treeをたどるコードは再帰コールするのが1箇所だからまだ楽な方
631デフォルトの名無しさん
2019/12/05(木) 20:24:01.37ID:9zn59iXI >>629
Tree は再帰でやるべきものの一つ。
スタックの制限も、Treeの「段数(階数)」自体が余り深くなりにくいので
問題が生じにくく、再帰でやっても問題ないものの一つでもある。
ただし、親子関係の深さ方向だけを再帰にし、兄弟方向は、単純な
ループを使うべき。
Tree は再帰でやるべきものの一つ。
スタックの制限も、Treeの「段数(階数)」自体が余り深くなりにくいので
問題が生じにくく、再帰でやっても問題ないものの一つでもある。
ただし、親子関係の深さ方向だけを再帰にし、兄弟方向は、単純な
ループを使うべき。
632デフォルトの名無しさん
2019/12/05(木) 20:28:30.76ID:5PaJAEA2 再帰にすべきかどうかはものによる
例えばstd::setの検索は普通ループを使う
例えばstd::setの検索は普通ループを使う
633デフォルトの名無しさん
2019/12/05(木) 20:38:37.36ID:tjjaS4Ug フィボナッチとかで再帰
末尾再帰を捨てる(性能とスタック無駄遣いに目を瞑る)と可読性はかなりいいと思うんです。
int fibo(int n) {
if (n<=2) return 1;
else return fibo(n-1) + fino(n-2);
}
その場で使い捨てるようなプログラムにはアリだと思います。
でも末尾再帰を目指すと.. . .
int fibo(int n, int a=1, int b=1){
if (n<=2) return b;
else return fibo(n-1, b, a+b);
}
どうなんですかね. . .。Lisp脳だと forループより好まれるかもしれません。
ちゃんと末尾再帰最適化が効けば性能は良いのでしょう。
末尾再帰を捨てる(性能とスタック無駄遣いに目を瞑る)と可読性はかなりいいと思うんです。
int fibo(int n) {
if (n<=2) return 1;
else return fibo(n-1) + fino(n-2);
}
その場で使い捨てるようなプログラムにはアリだと思います。
でも末尾再帰を目指すと.. . .
int fibo(int n, int a=1, int b=1){
if (n<=2) return b;
else return fibo(n-1, b, a+b);
}
どうなんですかね. . .。Lisp脳だと forループより好まれるかもしれません。
ちゃんと末尾再帰最適化が効けば性能は良いのでしょう。
634デフォルトの名無しさん
2019/12/05(木) 20:48:58.05ID:5PaJAEA2635デフォルトの名無しさん
2019/12/05(木) 21:03:01.64ID:tjjaS4Ug あちら(Lisp)の世界ではそうでもないみたいですよ。
636デフォルトの名無しさん
2019/12/05(木) 21:09:55.69ID:5PaJAEA2 へ〜
637デフォルトの名無しさん
2019/12/05(木) 21:23:00.63ID:oayOS3nx C++てparallel_forとか未だにないんだな、まぁTBB使えばあるけど標準規格には用意されてない
仕方がないんでPartitionerは自前で作ったが、そんな付け焼き刃用意したところで、
いちいち明示的に各スレッドの終了の待ちあわせせにゃならん。
挙げ句の果てに
mtx.lock()
----
mtx.unlock()
て orz
クリティカルセクションはブロックで囲って
lock(mtx){
}
とでも書かせろや
オートunlockとかしょーもないもんは用意してバカじゃねーのか
しかも、未だにasync/await はなくて、C++20で実装て。
何が必要かわかってないのかC++規格作ってるアホ共
死ね
仕方がないんでPartitionerは自前で作ったが、そんな付け焼き刃用意したところで、
いちいち明示的に各スレッドの終了の待ちあわせせにゃならん。
挙げ句の果てに
mtx.lock()
----
mtx.unlock()
て orz
クリティカルセクションはブロックで囲って
lock(mtx){
}
とでも書かせろや
オートunlockとかしょーもないもんは用意してバカじゃねーのか
しかも、未だにasync/await はなくて、C++20で実装て。
何が必要かわかってないのかC++規格作ってるアホ共
死ね
638デフォルトの名無しさん
2019/12/05(木) 21:36:40.64ID:JlYSK1cQ つstd::lock_guard
639デフォルトの名無しさん
2019/12/05(木) 21:51:24.38ID:u0CioZb2 adync awaitなんてネイティブで実装しようとしたら面倒なのわかるだろうに
それでもぶっこんでくるのだからc++11以降は完全にポリシー変更しているよね
それでもぶっこんでくるのだからc++11以降は完全にポリシー変更しているよね
640デフォルトの名無しさん
2019/12/05(木) 21:57:53.51ID:dM4mxJ4y >>637 std::for_each(std::execution::par, ...) じゃダメだったの?
641デフォルトの名無しさん
2019/12/05(木) 22:07:45.52ID:q0kDwfyl ツリーの巡回はイテレータにするとスタックとキューを入れ替えるだけで深さ優先と幅優先を切り替えられますよ。
STLのスタックとキューはインターフェースが違うのでひと工夫必要ですが。
algorithmも使えてウマウマです。
STLのスタックとキューはインターフェースが違うのでひと工夫必要ですが。
algorithmも使えてウマウマです。
643デフォルトの名無しさん
2019/12/05(木) 22:53:24.80ID:wvPvimki おいおい
そこはcpsで書いてマウント取るところだろ
そこはcpsで書いてマウント取るところだろ
644デフォルトの名無しさん
2019/12/05(木) 23:00:13.77ID:uXzevjeq645デフォルトの名無しさん
2019/12/05(木) 23:44:19.10ID:JallKI28 状況説明:
Visual Studio 2019 Version 16.4.0 で std::exception::what() の戻り値を無視すると以下のようなC4834の警告が出るようになった。
> warning C4834: 'nodiscard' 属性を持つ関数の戻り値を破棄しています
なお、catchスコープでeについて何か書かないと以下の警告が出てしまう。
> warning C4101: 'e': ローカル変数は 1 度も使われていません。
今は以下のように記述して警告C4101が出ないようにしている。
try
{
// do something.
}
catch(std::exception& e)
{
e.what();
}
質問:
C4101とC4834の両方とも出ないようにするにはどうしたらいい?
Visual Studio 2019 Version 16.4.0 で std::exception::what() の戻り値を無視すると以下のようなC4834の警告が出るようになった。
> warning C4834: 'nodiscard' 属性を持つ関数の戻り値を破棄しています
なお、catchスコープでeについて何か書かないと以下の警告が出てしまう。
> warning C4101: 'e': ローカル変数は 1 度も使われていません。
今は以下のように記述して警告C4101が出ないようにしている。
try
{
// do something.
}
catch(std::exception& e)
{
e.what();
}
質問:
C4101とC4834の両方とも出ないようにするにはどうしたらいい?
646デフォルトの名無しさん
2019/12/05(木) 23:57:51.72ID:2jEFb1Vk >>645
(void)e.what();
(void)e.what();
647645
2019/12/05(木) 23:58:13.71ID:JallKI28 自己解決しました。
try
{
// do something.
}
catch(std::exception& e)
{
(void)e;
}
try
{
// do something.
}
catch(std::exception& e)
{
(void)e;
}
649デフォルトの名無しさん
2019/12/05(木) 23:59:36.77ID:uXzevjeq catch(std::exception&)
でええやん
でええやん
650デフォルトの名無しさん
2019/12/06(金) 00:01:11.04ID:Cd9yyMrn >>645 ほんとうに例外を何も処理せず握りつぶしたいの?どんな状況?
653デフォルトの名無しさん
2019/12/06(金) 00:24:27.98ID:hYHuFzfT VCは2019から返り値を捨てるコードに警告出すようになって鬱陶しい
654デフォルトの名無しさん
2019/12/06(金) 00:27:04.95ID:R5wwI9SD [[nodiscard]]を確認せずに捨てる奴が悪い
655デフォルトの名無しさん
2019/12/06(金) 00:30:55.24ID:Cd9yyMrn656デフォルトの名無しさん
2019/12/06(金) 00:51:39.38ID:jImJStBO 終了させるにしてもちゃんとやれ
657645
2019/12/06(金) 00:54:05.25ID:Rpl4CMwP >>655
どうせなにもできない事には変わりないので無視でいいかなと。
スレッド終了時にプログラム固有のリソース解放処理を確実にやりたい目的でのthrow&catchなのでC++標準ライブラリ自身の出す例外は無視、的な。
どうせなにもできない事には変わりないので無視でいいかなと。
スレッド終了時にプログラム固有のリソース解放処理を確実にやりたい目的でのthrow&catchなのでC++標準ライブラリ自身の出す例外は無視、的な。
658デフォルトの名無しさん
2019/12/06(金) 01:06:58.12ID:jImJStBO ログ出力という大事な仕事があるだろ
659デフォルトの名無しさん
2019/12/06(金) 02:04:04.00ID:Cd9yyMrn >>657
それだとほんとに何か問題があって例外が飛んでるときに気づけなくて危なさ沿う、という話。
struct thread_exit {} とか専用の例外をthrow&catchしとけば、目的を達成しながら問題検出もできそうな。
それだとほんとに何か問題があって例外が飛んでるときに気づけなくて危なさ沿う、という話。
struct thread_exit {} とか専用の例外をthrow&catchしとけば、目的を達成しながら問題検出もできそうな。
660デフォルトの名無しさん
2019/12/06(金) 06:39:31.51ID:pHI2Uem1 >>654
正論
正論
661デフォルトの名無しさん
2019/12/06(金) 07:31:29.17ID:zfbHpqVT662デフォルトの名無しさん
2019/12/06(金) 09:21:05.01ID:WVLKHQiQ663デフォルトの名無しさん
2019/12/06(金) 12:56:29.50ID:vJ3416lC665デフォルトの名無しさん
2019/12/06(金) 14:28:22.22ID:hyokDgJv もしかしてメンバ関数の定義で引数や戻り値に不完全型を使っても許されるようになりましたか?
autoが許されるのだから、許されて良いような気がするのですが。
autoが許されるのだから、許されて良いような気がするのですが。
666デフォルトの名無しさん
2019/12/06(金) 14:55:34.36ID:qwyC8IXX 厳密にはわからんけど、クラステンプレートやメンバ関数テンプレートだと
それらが実体化されるより前であれば不完全型は使えるはず(コンパイラによっても変わることあるけど
autoも似たような理屈だと思う、宣言だけして関数定義より前で使うとエラーになるはず
それらが実体化されるより前であれば不完全型は使えるはず(コンパイラによっても変わることあるけど
autoも似たような理屈だと思う、宣言だけして関数定義より前で使うとエラーになるはず
667デフォルトの名無しさん
2019/12/06(金) 15:04:26.66ID:hyokDgJv https://ja.cppreference.com/w/cpp/language/function
> 関数の引数の型および戻り値の型は、削除された関数を除き (C++11以上)不完全クラス型にできません。 完全性のチェックは関数の本体の文脈で行われます。
これはそういうことを言ってるんですかね。
> 関数の引数の型および戻り値の型は、削除された関数を除き (C++11以上)不完全クラス型にできません。 完全性のチェックは関数の本体の文脈で行われます。
これはそういうことを言ってるんですかね。
668デフォルトの名無しさん
2019/12/06(金) 15:08:45.40ID:hyokDgJv 関数本体内のコンテキストで完全型になっていれば良いのであれば、いろいろできるような気がする。
あんなことやこんなことが。
あんなことやこんなことが。
669デフォルトの名無しさん
2019/12/06(金) 15:14:03.21ID:qwyC8IXX あーそういうことだね
関数定義前なら不完全でもいいってことだと思う
すまんテンプレートには限らないぽいな
関数定義前なら不完全でもいいってことだと思う
すまんテンプレートには限らないぽいな
670デフォルトの名無しさん
2019/12/06(金) 15:29:10.59ID:hyokDgJv どうもありがとう。
671デフォルトの名無しさん
2019/12/06(金) 15:45:43.96ID:LIPaYWZD >>661
step =1000000;
for( double r2 = R2 - dev2; r2 < R2 + dev2; r2 += dev2 / step ){
}
こいつを並列化したいんだが、ループカウンタをintに変更するとしても、
2M ノードのvector確保するわけ?
ループカウンタ設定するために並列化要るがなw
単にループ回したいだけなのに巨大なメモリ要るてww
調べてみてもC#やtbbのparallel_for相当がないんだが
これら見ながら企画作ったC++規格策定メンバーってお前と同じパープリンじゃないのか?
step =1000000;
for( double r2 = R2 - dev2; r2 < R2 + dev2; r2 += dev2 / step ){
}
こいつを並列化したいんだが、ループカウンタをintに変更するとしても、
2M ノードのvector確保するわけ?
ループカウンタ設定するために並列化要るがなw
単にループ回したいだけなのに巨大なメモリ要るてww
調べてみてもC#やtbbのparallel_for相当がないんだが
これら見ながら企画作ったC++規格策定メンバーってお前と同じパープリンじゃないのか?
672デフォルトの名無しさん
2019/12/06(金) 16:13:34.34ID:zfbHpqVT673デフォルトの名無しさん
2019/12/06(金) 16:14:35.15ID:hYHuFzfT 初手人格否定はC++erのセオリー
674デフォルトの名無しさん
2019/12/06(金) 16:14:40.19ID:jImJStBO >>671
お前が生きてる価値の無いゴミなだけ
お前が生きてる価値の無いゴミなだけ
675デフォルトの名無しさん
2019/12/06(金) 16:39:35.59ID:qwyC8IXX >>661もたいがい無意味に煽ってる書き込みだと思うがw
676デフォルトの名無しさん
2019/12/06(金) 17:15:36.33ID:hyokDgJv677デフォルトの名無しさん
2019/12/06(金) 18:34:35.34ID:PPEOwhLk >>671
OpenMP & SIMD intrinsics
OpenMP & SIMD intrinsics
678デフォルトの名無しさん
2019/12/06(金) 19:25:13.77ID:3oohkeAj lock_guard使わずになに使うの?
679デフォルトの名無しさん
2019/12/06(金) 19:35:24.69ID:3J8eqh7h ひのきのぼう と かわのふく
680デフォルトの名無しさん
2019/12/06(金) 22:24:12.87ID:hyokDgJv ヒノキの棒でぶっ叩けば人は死ぬし、皮の服は火焔や刃物を弾く。
どちらかというと上級者向けの装備だと思います。
どちらかというと上級者向けの装備だと思います。
681デフォルトの名無しさん
2019/12/06(金) 23:38:17.10ID:pm/DYA/c operator[]で読み書きって毎回調べないとできず
set()、val()とか関数で読み書きしてすますことが多いのだが
新文法などで簡単にやる方法わかりますか
set()、val()とか関数で読み書きしてすますことが多いのだが
新文法などで簡単にやる方法わかりますか
682デフォルトの名無しさん
2019/12/07(土) 01:06:30.72ID:5MyaotCE なにいうとるのかわからん
operator[]をどう実装してどこで使えばいいのか理解できてないという話なのか
operator[]をどう実装してどこで使えばいいのか理解できてないという話なのか
683デフォルトの名無しさん
2019/12/07(土) 01:08:17.23684デフォルトの名無しさん
2019/12/07(土) 01:59:52.93ID:4p8EX4B8685デフォルトの名無しさん
2019/12/07(土) 05:36:21.30ID:UnIspDfI686デフォルトの名無しさん
2019/12/07(土) 06:10:47.12 ちょくちょく初心者質問スレに行った方が良い人までここに堂々と書き込むのが
スレを妙な雰囲気にしてる
スレを妙な雰囲気にしてる
687デフォルトの名無しさん
2019/12/07(土) 06:56:32.11ID:C/SdN+6e688デフォルトの名無しさん
2019/12/07(土) 09:42:39.92ID:fV2E4bDP でもこのシグネチャのfactorialのままだと末尾再帰できなくね?>>642みたいになるかと。
689デフォルトの名無しさん
2019/12/07(土) 11:49:45.97ID:4p8EX4B8690デフォルトの名無しさん
2019/12/07(土) 11:56:48.08ID:vGCb4aWc 最初からそうかけよ
691デフォルトの名無しさん
2019/12/07(土) 11:57:37.74ID:4p8EX4B8 これのこと、毎回調べ直さないと作れない
プロキシ
実は、C++ でも、かなり無理やりですが、(見た目だけは)プロパティのようなことができたりします。 とりあえず、百聞は一見にしかずということで、以下の例を見てください。
利用側、すなわち、main の中では、 まるで普通の変数に対する代入・参照であるかのようなコードになっています。
このからくりは、 age の読み書きに、AgeProxy という名前の別のクラスを介することで実現します。 Age は AgeProxy 型の変数です。
AgeProxy の代入演算子(operator =)と int 型へのキャスト(operator int)を通して、 Person クラスの age 変数の読み書きをします。
ちなみに、こういう例のように、いったん別のクラスを通して値を読み書きしたりする方法を、 プロキシ(proxy: 代理)と呼びます。
まあ、このパターンは、利用側の見た目は綺麗になりますが、 実装は面倒ですし、実行効率もあまりよいとはいえません。
さらに言うと、プロパティを virtual 化しようとすると、 この例よりもさらに複雑な実装が必要になります。
こういう感じの話を振り返った上で、 改めて C# の「プロパティ」機能を見ると、 便利な機能だなぁとつくづく思います。
https://ufcpp.net/study/miscprog/accessor.html
プロキシ
実は、C++ でも、かなり無理やりですが、(見た目だけは)プロパティのようなことができたりします。 とりあえず、百聞は一見にしかずということで、以下の例を見てください。
利用側、すなわち、main の中では、 まるで普通の変数に対する代入・参照であるかのようなコードになっています。
このからくりは、 age の読み書きに、AgeProxy という名前の別のクラスを介することで実現します。 Age は AgeProxy 型の変数です。
AgeProxy の代入演算子(operator =)と int 型へのキャスト(operator int)を通して、 Person クラスの age 変数の読み書きをします。
ちなみに、こういう例のように、いったん別のクラスを通して値を読み書きしたりする方法を、 プロキシ(proxy: 代理)と呼びます。
まあ、このパターンは、利用側の見た目は綺麗になりますが、 実装は面倒ですし、実行効率もあまりよいとはいえません。
さらに言うと、プロパティを virtual 化しようとすると、 この例よりもさらに複雑な実装が必要になります。
こういう感じの話を振り返った上で、 改めて C# の「プロパティ」機能を見ると、 便利な機能だなぁとつくづく思います。
https://ufcpp.net/study/miscprog/accessor.html
692デフォルトの名無しさん
2019/12/07(土) 12:00:39.08ID:vGCb4aWc 相談じゃないなら他へ
693デフォルトの名無しさん
2019/12/07(土) 12:02:24.40ID:U9XnFfRh プロパティはコード上でフィールドのように扱えることよりもメンバとしてIDEが認識できるところに意味がある
最近はC#でもデザイナに頼らずに何でもコード上で済ませるスタイルが主流になりつつあり、プロパティの必要性は薄れている
初期化時にパラメータを纏めて渡したりするだけなら生フィールドで十分なわけだしな
最近はC#でもデザイナに頼らずに何でもコード上で済ませるスタイルが主流になりつつあり、プロパティの必要性は薄れている
初期化時にパラメータを纏めて渡したりするだけなら生フィールドで十分なわけだしな
694デフォルトの名無しさん
2019/12/07(土) 12:11:07.35ID:JfALL9r7 proxyで別に実行効率は下がらんよね
てかstd::vector<bool>は大昔から存在するし
てかstd::vector<bool>は大昔から存在するし
695デフォルトの名無しさん
2019/12/07(土) 12:25:43.42ID:cPeMBqq7 C++Builder使えばよいのでは。
696デフォルトの名無しさん
2019/12/07(土) 12:42:26.89ID:JVuyt12v >>684, >>684
他言語での getter/setter メソッド的な事をやりたいのだろうなあと考えてみました。
例えば a[i] と書かれたら、 内部データ(typename T) への参照(T&) を返すのではなく
新たに内部クラス(fields: owner, index)を用意して、そのオブジェクトを作って返すようにします。
これに代入演算子(operator =) と キャスト演算子(operator T()) を実装すれば...
・a[7] = 99; //setter
・cout << a[7]; //getter
こうやって普通にアクセスできます。メソッドを分離したお陰で、
添え字アクセスによるデータベースのupdate / select みたいな事が可能になります。
代入演算子は最低二種類必要で
Inner& operator =(const T& value); // a[i] = value
Inner& operator =(const Inner& rhs); // a[i] = a[j]
二つ目を実装しないと暗黙のコピー代入演算子が作られてしまい
a[i] = a[j]; のような代入操作は実質空文化します。(owner/indexがコピーされるだけ )
素人の思いつきですがサクっと試したら機能しました。
もっとスマートなやりかたもあるでしょう。
他言語での getter/setter メソッド的な事をやりたいのだろうなあと考えてみました。
例えば a[i] と書かれたら、 内部データ(typename T) への参照(T&) を返すのではなく
新たに内部クラス(fields: owner, index)を用意して、そのオブジェクトを作って返すようにします。
これに代入演算子(operator =) と キャスト演算子(operator T()) を実装すれば...
・a[7] = 99; //setter
・cout << a[7]; //getter
こうやって普通にアクセスできます。メソッドを分離したお陰で、
添え字アクセスによるデータベースのupdate / select みたいな事が可能になります。
代入演算子は最低二種類必要で
Inner& operator =(const T& value); // a[i] = value
Inner& operator =(const Inner& rhs); // a[i] = a[j]
二つ目を実装しないと暗黙のコピー代入演算子が作られてしまい
a[i] = a[j]; のような代入操作は実質空文化します。(owner/indexがコピーされるだけ )
素人の思いつきですがサクっと試したら機能しました。
もっとスマートなやりかたもあるでしょう。
697デフォルトの名無しさん
2019/12/07(土) 12:55:02.34ID:vGCb4aWc 意味の無い所で無駄にコードサイズを増やさなくても
普通にset/get関数で良いよ
普通にset/get関数で良いよ
698デフォルトの名無しさん
2019/12/07(土) 13:20:15.07ID:euj2mOhA setterの戻り値はvoid?this参照?
699デフォルトの名無しさん
2019/12/07(土) 13:22:21.40ID:cPeMBqq7 bitsetは参照返すからset(1).set(2).set(10)などと連鎖できる。
700デフォルトの名無しさん
2019/12/07(土) 13:35:21.54ID:QAzyzpfC701デフォルトの名無しさん
2019/12/07(土) 13:36:49.02ID:hSwO/YRY これがC++er流の挨拶です
702デフォルトの名無しさん
2019/12/07(土) 13:37:29.36ID:QAzyzpfC703デフォルトの名無しさん
2019/12/07(土) 13:38:45.35ID:QAzyzpfC >>678
今ごろlock_guardて ID:zfbHpqVT 並の情弱かオマエww
今ごろlock_guardて ID:zfbHpqVT 並の情弱かオマエww
704デフォルトの名無しさん
2019/12/07(土) 13:44:27.19ID:QAzyzpfC パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
出てこい知障
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
パープリンどころかアホの活造り ID:zfbHpqVT
出てこい知障
705デフォルトの名無しさん
2019/12/07(土) 13:49:37.66ID:cPeMBqq7 そもそも10を代入して値が10にならないなら、意味的に組み込み型の整数とは違うのかもしれない。
整数ではないものを整数で代用したときに起きる問題なのかも。
整数ではないものを整数で代用したときに起きる問題なのかも。
706デフォルトの名無しさん
2019/12/07(土) 14:40:05.37ID:gqZSFnI2 効いてる効いてるw
弱い犬ほどよく吠えるねえ
弱い犬ほどよく吠えるねえ
707デフォルトの名無しさん
2019/12/07(土) 15:57:37.60ID:kC4yD5gf708デフォルトの名無しさん
2019/12/07(土) 15:59:46.23ID:cPeMBqq7 clang-cl結構いいね。
709デフォルトの名無しさん
2019/12/07(土) 16:00:40.56ID:cPeMBqq7710デフォルトの名無しさん
2019/12/07(土) 16:33:39.12ID:C/SdN+6e 「自分の間違い(に対する指摘)には逆ギレ」ってことでしょな。
書籍として印刷・発売する前にネット公開して広く意見を求める、
「お前らタダで読ませてやるから品質向上に協力しろや」方式と考えれば
誰にも損のないやり方だと思うけどね。
少なくとも俺にとってはありがたい。
書籍として印刷・発売する前にネット公開して広く意見を求める、
「お前らタダで読ませてやるから品質向上に協力しろや」方式と考えれば
誰にも損のないやり方だと思うけどね。
少なくとも俺にとってはありがたい。
711デフォルトの名無しさん
2019/12/07(土) 17:24:58.21ID:ZsYnLuoj 意見を反映させる能力があればな。
712デフォルトの名無しさん
2019/12/07(土) 17:31:56.94ID:xzwyWWlr713デフォルトの名無しさん
2019/12/07(土) 20:57:58.81ID:KRZcErEE なんかうちのVisual Studioだと
iscntrl('\t')
が非0(真)になるんだけど
これって正しい?
iscntrl('\t')
が非0(真)になるんだけど
これって正しい?
714デフォルトの名無しさん
2019/12/07(土) 21:22:47.02ID:F8+HNqgO 表示できる文字と空白以外は全部制御文字だね
715デフォルトの名無しさん
2019/12/07(土) 22:13:42.05ID:KRZcErEE isspace('\t')は非0(真)なので'\t'は空白のはずェ、
つかGoogle Testにかけたらこうじゃわ↓↓↓
TEST(stdlibTest, ctype) {
ASSERT_FALSE(isspace('\0'));
ASSERT_TRUE(isspace('\n'));
ASSERT_TRUE(isspace('\r'));
ASSERT_TRUE(isspace('\t'));
ASSERT_TRUE(isspace(' '));
ASSERT_TRUE(iscntrl('\0'));
ASSERT_TRUE(iscntrl('\n'));
ASSERT_TRUE(iscntrl('\r'));
ASSERT_TRUE(iscntrl('\t'));
ASSERT_FALSE(iscntrl(' '));
}
つかGoogle Testにかけたらこうじゃわ↓↓↓
TEST(stdlibTest, ctype) {
ASSERT_FALSE(isspace('\0'));
ASSERT_TRUE(isspace('\n'));
ASSERT_TRUE(isspace('\r'));
ASSERT_TRUE(isspace('\t'));
ASSERT_TRUE(isspace(' '));
ASSERT_TRUE(iscntrl('\0'));
ASSERT_TRUE(iscntrl('\n'));
ASSERT_TRUE(iscntrl('\r'));
ASSERT_TRUE(iscntrl('\t'));
ASSERT_FALSE(iscntrl(' '));
}
716デフォルトの名無しさん
2019/12/07(土) 23:02:18.90ID:cPeMBqq7 盲目の為のロケールがあったら、ベル以外全部制御文字になるんだろか。
717デフォルトの名無しさん
2019/12/07(土) 23:12:25.74ID:fV2E4bDP 0x00から0x1fまでは全部制御文字で違和感ないけど。
718デフォルトの名無しさん
2019/12/07(土) 23:19:02.06ID:EVNez7Da printableってのは音声出力も含むのではなかろうか
719デフォルトの名無しさん
2019/12/08(日) 02:49:31.16ID:C6vow3qq 盲人のブログラマーって普通にいるんだな
なんかかっけーな
なんかかっけーな
720デフォルトの名無しさん
2019/12/08(日) 08:37:40.25ID:9eRqVWoa Visual Studio 16.4オンラインアプデしたら
それまで使ってたParallel Studio2019 U5使えなくなった。
Visual C++でコンパイルできるがIntel Compilerはコンパイル失敗してしまう
それと、
プロジェクトのプロパティからIntel Compilerは選択できるんだが、
プルダウンメニューからIntel Compilerを選択できないようになった。
Parallel Studio最インスコしてもコンパイルは失敗する。2019 U5 が16.4に対応してないとかないよね?
それまで使ってたParallel Studio2019 U5使えなくなった。
Visual C++でコンパイルできるがIntel Compilerはコンパイル失敗してしまう
それと、
プロジェクトのプロパティからIntel Compilerは選択できるんだが、
プルダウンメニューからIntel Compilerを選択できないようになった。
Parallel Studio最インスコしてもコンパイルは失敗する。2019 U5 が16.4に対応してないとかないよね?
721デフォルトの名無しさん
2019/12/08(日) 08:39:40.14ID:drue7Jpy >>713
例によってロケール依存らしいが "C" だと
iscntrl() が真を返す値は 0x00-0x1f, 0x7f みたいね。
これまた例によって unsigned char 範囲と EOF 以外の値については未定義。
つうか、このくらいは5ちゃんねる以外から情報を探す方が
早くて確実じゃないかしら。
例によってロケール依存らしいが "C" だと
iscntrl() が真を返す値は 0x00-0x1f, 0x7f みたいね。
これまた例によって unsigned char 範囲と EOF 以外の値については未定義。
つうか、このくらいは5ちゃんねる以外から情報を探す方が
早くて確実じゃないかしら。
722デフォルトの名無しさん
2019/12/08(日) 13:11:02.08ID:hM3Qn2JU723デフォルトの名無しさん
2019/12/08(日) 14:09:36.54ID:3pi+cAN/ >>722
青木さんは何をしようとしてるんですか?
青木さんは何をしようとしてるんですか?
724デフォルトの名無しさん
2019/12/08(日) 14:17:37.03ID:vN1dzuVf >>722
で、質問は?
で、質問は?
725デフォルトの名無しさん
2019/12/08(日) 14:36:36.30ID:3pi+cAN/ もっと早くは最速って意味ですか?
それとも速くしたいって意味ですか?
それとも速くしたいって意味ですか?
726デフォルトの名無しさん
2019/12/08(日) 14:56:59.55ID:3pi+cAN/ インテリコード、ほんとに提案してくるね。
お前は次にこう書く・・・って。
お前は次にこう書く・・・って。
727デフォルトの名無しさん
2019/12/08(日) 15:02:14.03ID:J+6Nu+8f 歯垢の妨げにしかならんわ
728デフォルトの名無しさん
2019/12/08(日) 17:09:58.86ID:hM3Qn2JU >>723
C++ Nex という言語とそのIDEを作ってますが、マルチプラットフォームの
ツールキットも同時に作ってます。MacやiOSなどまで native 対応するのは
貧乏なので機材の関係で難しいので、wasm に対応することでひとまずは
凌ごうかと思いました。
ツールキットのソースをBSD/MIT系ライセンスで公開して、C++ Nex も
無料で使えることにして、みなさんのお力をお借りして native対応の
ツールキットに出来ればいいのですが。ひとまず、Windows/Wasm/Android
くらいまでなら対応できる目処は立ってます。iOSについては、swift
言語が出したオブジェクトファイルとリンクすることはWindows上でも
実験できそうなので、その基礎的な部分だけならMakefileなどの開発環境を
用意することはできそうです。
Mac miniがあれば、iOS native 対応も出来そうなんですが。
C++ Nex という言語とそのIDEを作ってますが、マルチプラットフォームの
ツールキットも同時に作ってます。MacやiOSなどまで native 対応するのは
貧乏なので機材の関係で難しいので、wasm に対応することでひとまずは
凌ごうかと思いました。
ツールキットのソースをBSD/MIT系ライセンスで公開して、C++ Nex も
無料で使えることにして、みなさんのお力をお借りして native対応の
ツールキットに出来ればいいのですが。ひとまず、Windows/Wasm/Android
くらいまでなら対応できる目処は立ってます。iOSについては、swift
言語が出したオブジェクトファイルとリンクすることはWindows上でも
実験できそうなので、その基礎的な部分だけならMakefileなどの開発環境を
用意することはできそうです。
Mac miniがあれば、iOS native 対応も出来そうなんですが。
729デフォルトの名無しさん
2019/12/08(日) 17:29:31.80ID:3pi+cAN/ 基本的にネイティブ志向なんですね。
730デフォルトの名無しさん
2019/12/08(日) 17:29:36.52ID:oOCB7Yl8 >>728
ソースコード見せて
ソースコード見せて
731デフォルトの名無しさん
2019/12/08(日) 17:30:50.90ID:3pi+cAN/ ウェブアセンブラは興味あるんだけど、イマイチ情報が。
732デフォルトの名無しさん
2019/12/08(日) 17:32:13.08ID:3pi+cAN/ 高橋茉奈著やさしいウェブアセンブラが待たれる今日この頃。
733デフォルトの名無しさん
2019/12/08(日) 17:37:23.93ID:hM3Qn2JU734デフォルトの名無しさん
2019/12/08(日) 17:43:51.77ID:8Jdq2NjK WTFPLライセンスにしようぜ
735デフォルトの名無しさん
2019/12/08(日) 23:33:02.58ID:Cj3eSjEv736デフォルトの名無しさん
2019/12/08(日) 23:58:38.94 >>722
Android 4.4.2 Chromeで動作した
Android 4.4.2 Chromeで動作した
737デフォルトの名無しさん
2019/12/09(月) 01:41:27.18ID:ExBOPGUm ID無いのは5chの人って事?
738デフォルトの名無しさん
2019/12/09(月) 01:45:35.78ID:aHmkn8DW 有料ユーザーってこと
739デフォルトの名無しさん
2019/12/09(月) 01:45:54.45ID:dDDj5i4x これ5chじゃなかったの?
740デフォルトの名無しさん
2019/12/09(月) 02:33:36.15ID:ExBOPGUm そうなんだ。
741デフォルトの名無しさん
2019/12/09(月) 02:41:32.17ID:ExBOPGUm >>739
なかの人はID付かないのかなって。
なかの人はID付かないのかなって。
742デフォルトの名無しさん
2019/12/09(月) 08:06:32.09ID:V5HcCSm8 >>735
C++ の規格が引用してる C の規格じゃないかな。
質問のつもりで書いてるなら、あまりに態度が悪い気がするし、
「その投稿の内容は間違ってる」と主張したいなら、
もっと直接的・具体的に間違ってるという根拠を示すべきだと思うよ。
C++ の規格が引用してる C の規格じゃないかな。
質問のつもりで書いてるなら、あまりに態度が悪い気がするし、
「その投稿の内容は間違ってる」と主張したいなら、
もっと直接的・具体的に間違ってるという根拠を示すべきだと思うよ。
743デフォルトの名無しさん
2019/12/09(月) 09:58:16.97ID:CUCDgsHX >>736
ありがとう。
ありがとう。
744デフォルトの名無しさん
2019/12/09(月) 17:54:07.48ID:c5eP1gUS745720
2019/12/09(月) 18:35:46.39ID:ZGVF76Fo 自己レスです
Visual Studio 16.4では
Intel Parallel Studio 2019 u5は動かないようです。
16.3に戻せないし
どーしよー
https://software.intel.com/en-us/forums/intel-c-compiler/topic/840467
Visual Studio 16.4では
Intel Parallel Studio 2019 u5は動かないようです。
16.3に戻せないし
どーしよー
https://software.intel.com/en-us/forums/intel-c-compiler/topic/840467
746デフォルトの名無しさん
2019/12/09(月) 19:45:24.14ID:ExBOPGUm POSIXには明確にCロケールの定義が書かれていた。
747デフォルトの名無しさん
2019/12/09(月) 20:19:32.09ID:B3OID8x5748デフォルトの名無しさん
2019/12/09(月) 21:02:54.27ID:HdhKIpY6 昔からVSはそんなもんだ。
てかc++コンパイラなんて全部そんなもんだ。
てかc++コンパイラなんて全部そんなもんだ。
749デフォルトの名無しさん
2019/12/09(月) 21:45:50.54ID:P+A0aO3e >>745
リンク先に回避策があるって書いてあるやん
リンク先に回避策があるって書いてあるやん
750デフォルトの名無しさん
2019/12/09(月) 21:53:17.84ID:G+eF5KMH >>746
それはCの規格と必ずしもイコールではないがな。
それはCの規格と必ずしもイコールではないがな。
751デフォルトの名無しさん
2019/12/09(月) 22:32:03.14ID:ExBOPGUm どういうことですか。
752デフォルトの名無しさん
2019/12/09(月) 23:24:28.11ID:qFr59Y2H POSIX には ISO C には無い追加の定めがあり、したがって
POSIX にある定めは必ずしも ISO C 一般に言えることではないということです。
POSIX にある定めは必ずしも ISO C 一般に言えることではないということです。
753デフォルトの名無しさん
2019/12/09(月) 23:30:20.36ID:c5Uv/Cv5 わかったはもうこれからはstd::isspace()とstd::iscntrl()を使うは
754デフォルトの名無しさん
2019/12/09(月) 23:43:16.79ID:ExBOPGUm メンバ変数にstd::listを使うと移動コンストラクタがnoexceptに出来ないのですが。
こんな時はどうするのでしょう。
こんな時はどうするのでしょう。
755デフォルトの名無しさん
2019/12/09(月) 23:58:06.53ID:aHmkn8DW メンバのstd::listをポインタにする
756デフォルトの名無しさん
2019/12/09(月) 23:59:06.89ID:qFr59Y2H >>754
まず何を見て「出来ない」と言っているのかを明らかにします。
まず何を見て「出来ない」と言っているのかを明らかにします。
757デフォルトの名無しさん
2019/12/10(火) 00:04:16.84ID:KeuWZv5z758デフォルトの名無しさん
2019/12/10(火) 00:06:34.29ID:KeuWZv5z std::swapの特殊化がnoexceptです。
これを使いますか。
これを使いますか。
759デフォルトの名無しさん
2019/12/10(火) 00:08:47.32ID:KeuWZv5z 引数無しのコンストラクタがnoexceptじゃないから無理でした。
760デフォルトの名無しさん
2019/12/10(火) 00:37:17.09ID:OASxW0Hh そもそも noexcept にする必要性が不明だし、呼び出してる関数が
全部 noexcept じゃなくても std::list 実装を限定してよかったり、特定実装での
bad_alloc =即死の不都合が必要性と釣り合うなら noexcept にすることはできるし、
最大限の移植性も bad_alloc の通知も noexcept もすべて本当に必要なら
>755 でポインタって答えも出てるのに。
全部 noexcept じゃなくても std::list 実装を限定してよかったり、特定実装での
bad_alloc =即死の不都合が必要性と釣り合うなら noexcept にすることはできるし、
最大限の移植性も bad_alloc の通知も noexcept もすべて本当に必要なら
>755 でポインタって答えも出てるのに。
761デフォルトの名無しさん
2019/12/10(火) 00:41:00.11ID:2YzAsKi1 自動でnoexceptに成らないなら、自分で望みのnoexceptの定義すりゃ良いだろうに
部品が例外投げるなら内部でcatchして適切に処理すればいい
部品が例外投げるなら内部でcatchして適切に処理すればいい
762デフォルトの名無しさん
2019/12/10(火) 00:43:28.28ID:KeuWZv5z763デフォルトの名無しさん
2019/12/10(火) 07:32:12.43ID:Xhvd8FYl >>761
正論
正論
764デフォルトの名無しさん
2019/12/10(火) 19:05:35.05ID:yM6al2d7 途中でcコード通るとか何らかの理由があるんだろう。
765デフォルトの名無しさん
2019/12/11(水) 13:14:22.35ID:KfdgnhFC ある一つの変数に対してstd::threadで作成したプロセスは値を更新し続けて、メイン関数の方では値を読み続ける場合は排他処理する必要はありませんか?
メイン関数の方は必要なときだけ値が読めればいいので読みこぼしは無視していいです
メイン関数の方は必要なときだけ値が読めればいいので読みこぼしは無視していいです
766デフォルトの名無しさん
2019/12/11(水) 13:19:53.65ID:iOg65oSz >>765
変数が std::atomic<T> でなければ排他制御の必要があります。
変数が std::atomic<T> でなければ排他制御の必要があります。
767デフォルトの名無しさん
2019/12/11(水) 13:21:20.19ID:m9WEF2SZ768デフォルトの名無しさん
2019/12/11(水) 13:23:21.98ID:/1t9T7AP 基本型かつ確実にレジスタでなくメモリに書き出されているならそうだね
std::atomcを使うのが無難
その条件ならmemory_order_relaxedを指定すればバリアのオーバーヘッドは避けられる
面倒だけどね
std::atomcを使うのが無難
その条件ならmemory_order_relaxedを指定すればバリアのオーバーヘッドは避けられる
面倒だけどね
769デフォルトの名無しさん
2019/12/11(水) 13:35:45.33ID:IATqHbi6 質問者じゃないけど
読みこぼしとかタイミングによるズレが問題ないとしても排他制御なしに読み書きする時点で未定義動作だからNG
って認識でおk?
読みこぼしとかタイミングによるズレが問題ないとしても排他制御なしに読み書きする時点で未定義動作だからNG
って認識でおk?
770デフォルトの名無しさん
2019/12/11(水) 13:46:34.56ID:iOg65oSz はい。
https://timsong-cpp.github.io/cppwp/n4659/intro.multithread#intro.races-20
> The execution of a program contains a data race if it contains two
> potentially concurrent conflicting actions, at least one of which is
> not atomic, and neither happens before the other, except for the
> special case for signal handlers described below. Any such data race
> results in undefined behavior.
https://timsong-cpp.github.io/cppwp/n4659/intro.multithread#intro.races-20
> The execution of a program contains a data race if it contains two
> potentially concurrent conflicting actions, at least one of which is
> not atomic, and neither happens before the other, except for the
> special case for signal handlers described below. Any such data race
> results in undefined behavior.
771デフォルトの名無しさん
2019/12/11(水) 14:00:16.36ID:/1t9T7AP 言語仕様はそうだろうけど
x86なら実際は多くの場合バリア不要だったりするから
最終的にどういうinstructionになっているのか知っておくと理解が深まる
x86なら実際は多くの場合バリア不要だったりするから
最終的にどういうinstructionになっているのか知っておくと理解が深まる
772デフォルトの名無しさん
2019/12/11(水) 15:24:29.91ID:nkoUZIKM x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ
これ以外だったり同期が必要なければ
排他制御は不要
もちろん、
一連のデータリードでデータの一貫性が必要であれば一貫性確認の仕組みなり排他制御なりは当然必要だし、
コンパイラが読み書きを省略する可能性のあるコードであれば
volatileを付けるなど、省略を防ぐ必要はある
ymmレジスタを使えばアトミックな読み書きが出来るので
256bit以内なら一貫性も保てる
マルチコアARMの場合は
DMB命令を入れておけば確実
パフォーマンスに問題が無い箇所であれば、
移植性の為にも、素直にC++の排他制御を入れておこう!
これ以外だったり同期が必要なければ
排他制御は不要
もちろん、
一連のデータリードでデータの一貫性が必要であれば一貫性確認の仕組みなり排他制御なりは当然必要だし、
コンパイラが読み書きを省略する可能性のあるコードであれば
volatileを付けるなど、省略を防ぐ必要はある
ymmレジスタを使えばアトミックな読み書きが出来るので
256bit以内なら一貫性も保てる
マルチコアARMの場合は
DMB命令を入れておけば確実
パフォーマンスに問題が無い箇所であれば、
移植性の為にも、素直にC++の排他制御を入れておこう!
773デフォルトの名無しさん
2019/12/11(水) 15:42:23.89ID:ax9A/ZTc お前らRustに移行とか考えたりするの?
774デフォルトの名無しさん
2019/12/11(水) 17:37:57.91ID:bM/oaPHs >>773
個人的には絶対に移行したくないと思っている。
個人的には絶対に移行したくないと思っている。
775デフォルトの名無しさん
2019/12/11(水) 17:42:08.10ID:/1t9T7AP どっちもやったらええがな
776デフォルトの名無しさん
2019/12/11(水) 18:13:18.74ID:bM/oaPHs >>771
質問されたような簡単な場合であっても、少なくとも、80386系CPUでも、
物理CPUを2つ積んでいるようなマシンだと、色々な配慮が必要。
一つの理由は、CPUキャッシュが外部メモリに反映されていない場合が
あるため。
もう一つは、値の変化のタイミングがコードに書いた通りで無い事があり、
僅かにタイミングがずれることで、「すれ違い」現象の様なことが
おきることがある。これが起きると、変数の値をフラグ的に利用して
厳密に何かをやりたい場合に非常に致命的な問題を生じてしまうことがある。
これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
していたらしい。
2つのスレッドでデータをやり取りする場合には色々と注意が必要で、
普通はデータが準備できたかどうかをCreateEvent(),SetEvent(),
WaitForSingleEvent()などで待機して処理するのが基本。
質問されたような簡単な場合であっても、少なくとも、80386系CPUでも、
物理CPUを2つ積んでいるようなマシンだと、色々な配慮が必要。
一つの理由は、CPUキャッシュが外部メモリに反映されていない場合が
あるため。
もう一つは、値の変化のタイミングがコードに書いた通りで無い事があり、
僅かにタイミングがずれることで、「すれ違い」現象の様なことが
おきることがある。これが起きると、変数の値をフラグ的に利用して
厳密に何かをやりたい場合に非常に致命的な問題を生じてしまうことがある。
これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
していたらしい。
2つのスレッドでデータをやり取りする場合には色々と注意が必要で、
普通はデータが準備できたかどうかをCreateEvent(),SetEvent(),
WaitForSingleEvent()などで待機して処理するのが基本。
777デフォルトの名無しさん
2019/12/11(水) 18:17:08.59ID:bM/oaPHs >>776
スマン。XOR交換命令ではなく、xchg命令だった。
スマン。XOR交換命令ではなく、xchg命令だった。
778デフォルトの名無しさん
2019/12/11(水) 18:20:46.73ID:NtLrnXCf goよりかはrustの方が全然マシやと思うぞ
最近go案件振られること多いけどC言語触ってるみたいで好きになれんわ〜
最近go案件振られること多いけどC言語触ってるみたいで好きになれんわ〜
779デフォルトの名無しさん
2019/12/11(水) 18:30:30.06ID:/1t9T7AP >>776
xchgはsequential consistencyが必要な場合だよ
今回のように単にatomicにread/writeできればいいだけなら不要
お前さんも含めてよくわからん人は使わないのは正解
xchgはsequential consistencyが必要な場合だよ
今回のように単にatomicにread/writeできればいいだけなら不要
お前さんも含めてよくわからん人は使わないのは正解
780デフォルトの名無しさん
2019/12/11(水) 18:36:33.88ID:bM/oaPHs781デフォルトの名無しさん
2019/12/11(水) 18:38:56.23ID:bM/oaPHs MFENCE
PREFETCH
MOVNTDQA
LFENCE(?)
XCHG
LOCK prefix
WC Memory
↑沢山あるけど、よく分からない。
xchgもちゃんと理解できてない。
PREFETCH
MOVNTDQA
LFENCE(?)
XCHG
LOCK prefix
WC Memory
↑沢山あるけど、よく分からない。
xchgもちゃんと理解できてない。
782デフォルトの名無しさん
2019/12/11(水) 18:39:59.12ID:bM/oaPHs MFENCE, LFENCE, SFENCE。
服のサイズみたいだ。分からん。
服のサイズみたいだ。分からん。
783デフォルトの名無しさん
2019/12/11(水) 18:46:12.74ID:bM/oaPHs >>779
xchgは、2つ以上のCPUが1つの事柄に関する lock を同時に獲得しようとした時に
1 CPU だけが lock を獲得できて、他はすべて獲得できないようにするための
ためのようですね。今回とは余り関係ないようです。
xchgは、2つ以上のCPUが1つの事柄に関する lock を同時に獲得しようとした時に
1 CPU だけが lock を獲得できて、他はすべて獲得できないようにするための
ためのようですね。今回とは余り関係ないようです。
784デフォルトの名無しさん
2019/12/11(水) 21:50:49.53ID:10jfhd7e >>777
XORを使った交換テクニックがあったのを思い出した
XORを使った交換テクニックがあったのを思い出した
785デフォルトの名無しさん
2019/12/12(木) 00:31:42.87ID:n5d2iAqE >>765
その場合でも排他制御は基本的には必要。
たとえば読み込んで範囲チェックをした後に値が変わってしまったらまずいでしょ。
別メモリにコピーを取っていてから処理しているつもりでも、最適化が気を利かして削除しちゃうこともあるだろうしね。
その場合でも排他制御は基本的には必要。
たとえば読み込んで範囲チェックをした後に値が変わってしまったらまずいでしょ。
別メモリにコピーを取っていてから処理しているつもりでも、最適化が気を利かして削除しちゃうこともあるだろうしね。
786デフォルトの名無しさん
2019/12/12(木) 00:36:46.28ID:n5d2iAqE787デフォルトの名無しさん
2019/12/12(木) 00:54:16.98ID:UvCIGzud AVXを使えば256bitを1命令で
AVX512を使えば512bitを1命令で
読み書き可能
AVX512を使えば512bitを1命令で
読み書き可能
788デフォルトの名無しさん
2019/12/12(木) 01:00:12.24ID:UvCIGzud x86系だとCMPXCHG命令
ARMだとLL, AC命令
がデータの一貫性確認に使える
ARMだとLL, AC命令
がデータの一貫性確認に使える
789デフォルトの名無しさん
2019/12/12(木) 03:03:25.42ID:hmkgwwLY とんちプログラミングはもう流行らなさそう。
790デフォルトの名無しさん
2019/12/12(木) 03:28:17.88ID:J/GuvI9A とんちプログラミングwww
791デフォルトの名無しさん
2019/12/12(木) 03:55:57.93ID:g+q4RhTJ > これを避けるには、80386の設計者は、XOR交換命令を使うことを想定
> していたらしい。
当たり前じゃね?アトミックな命令を使うのは基本だと思うが
> していたらしい。
当たり前じゃね?アトミックな命令を使うのは基本だと思うが
792デフォルトの名無しさん
2019/12/12(木) 07:30:46.73ID:UvCIGzud XOR
793デフォルトの名無しさん
2019/12/12(木) 07:43:20.40ID:Vt8W+oPZ xor rax,rbx
xor rbx,rax
xor rax,rbx
これでswap rax,rbx相当ってことね
xor rbx,rax
xor rax,rbx
これでswap rax,rbx相当ってことね
794デフォルトの名無しさん
2019/12/12(木) 07:53:00.21ID:UvCIGzud795デフォルトの名無しさん
2019/12/12(木) 10:43:59.85ID:r0VN1UlG condition_variableで待機しているスレッドがない状態でnotify_allしたときの動作ってどうなりますか?
796デフォルトの名無しさん
2019/12/12(木) 10:56:19.34ID:WJA8YZFG 時空が逆流し、針の先から悪魔が生まれる
797デフォルトの名無しさん
2019/12/12(木) 11:06:56.29ID:a67Hqgb2 jsに対するTypeScriptみたいな感じで
C++に対するRustっていう認識は間違ってるが
それならC++に対するそれは何が適当なんかある?
C++に対するRustっていう認識は間違ってるが
それならC++に対するそれは何が適当なんかある?
798デフォルトの名無しさん
2019/12/12(木) 11:10:12.33ID:Vt8W+oPZ allに該当する要素の数が0なのを特別視する必要はなさそう
799デフォルトの名無しさん
2019/12/12(木) 11:21:14.68ID:NrsugUJv 非同期な操作やしその瞬間何も起きんなら単にスルーするだけ
800デフォルトの名無しさん
2019/12/12(木) 12:01:38.93ID:Z8SHCwDj >>797
無い。
無い。
801デフォルトの名無しさん
2019/12/12(木) 12:26:43.11ID:gL/Y8Ccu >>797
Managed C++とかC++/CLIとか
Managed C++とかC++/CLIとか
802デフォルトの名無しさん
2019/12/12(木) 13:04:34.98ID:Z8SHCwDj >>801
それだと余計に変になっているので、JS ---> TypeScript の関係とは違う。
それだと余計に変になっているので、JS ---> TypeScript の関係とは違う。
803デフォルトの名無しさん
2019/12/12(木) 13:08:42.86ID:b3wcvAqB C++は型安全だからC++はC++
804デフォルトの名無しさん
2019/12/12(木) 14:17:55.83ID:CNmkwPhj 型安全認定された!
805デフォルトの名無しさん
2019/12/12(木) 14:59:18.45ID:ZWrMIDdu ていうかTypeScriptはJSが型があまりにもザルすぎて危険だよね、Javaやら
C/C++ほど堅くないにしてもある程度の型はいるよね?っていう発想ででてきた
ものだから C++ から寄せていくならむしろ型をユルくしてくパターンだな
そんなクソ言語には興味がないので具体的に何?ときかれても知らんがな
C/C++ほど堅くないにしてもある程度の型はいるよね?っていう発想ででてきた
ものだから C++ から寄せていくならむしろ型をユルくしてくパターンだな
そんなクソ言語には興味がないので具体的に何?ときかれても知らんがな
806デフォルトの名無しさん
2019/12/12(木) 16:27:22.69ID:AVYkL4QT JSが危険ってどういう事?
C/C++は型がない=危険だけど
JSなんかは型安全な言語だからちゃんと例外になって、
メモリ保護エラーとか起こすこと無いけど?
C/C++は型がない=危険だけど
JSなんかは型安全な言語だからちゃんと例外になって、
メモリ保護エラーとか起こすこと無いけど?
807デフォルトの名無しさん
2019/12/12(木) 16:39:21.91ID:hmkgwwLY Treeの節(Node)は部分木を表すRangeだと考えて差し支えないですかね?
808デフォルトの名無しさん
2019/12/12(木) 16:47:21.68ID:hmkgwwLY C++20のレンジってもしかしてDBのカーソルとかに応用できませんかね?
809デフォルトの名無しさん
2019/12/12(木) 18:38:14.77ID:Ijd1d2r8 毎回フルスキャンしたいならどうぞ
810デフォルトの名無しさん
2019/12/12(木) 18:59:14.59ID:hmkgwwLY ビューで制限できるし遅延評価を目的としたストリームを代弁できるんじゃないかなって思ったのですが。
811デフォルトの名無しさん
2019/12/12(木) 19:07:50.30ID:Z8SHCwDj >>806
型も宣言も無い事が危険になることが多い。
例えば、関数を定義しても仮引数に型がないので、全く間違った実引数列
を指定してしまっても処理系がエラーを出してくれない。関数を修正して
仮引数列の真ん中あたりに新しい仮引数を一つ増やしたとする。
この場合、この関数を呼び出す側もちゃんと全て修正する必要がある。
Cだと型をチェックしてくれるので修正の仕方を間違うとエラーになって
くれることが多い。ところがJSだと間違っても全くエラーを出してくれない。
また、JSの場合、ローカル変数とグローバル変数を間違って使ってしまい、
グローバル変数にいれたつもりがローカル変数になってしまっていることがある。
また、変数を1文字間違えた場合も全くエラーにならず、新しいグローバル変数
が使用されたと解釈されてしまう。
どれも、C言語だとエラーになってくれるので安全だが、JSだと危険。
型も宣言も無い事が危険になることが多い。
例えば、関数を定義しても仮引数に型がないので、全く間違った実引数列
を指定してしまっても処理系がエラーを出してくれない。関数を修正して
仮引数列の真ん中あたりに新しい仮引数を一つ増やしたとする。
この場合、この関数を呼び出す側もちゃんと全て修正する必要がある。
Cだと型をチェックしてくれるので修正の仕方を間違うとエラーになって
くれることが多い。ところがJSだと間違っても全くエラーを出してくれない。
また、JSの場合、ローカル変数とグローバル変数を間違って使ってしまい、
グローバル変数にいれたつもりがローカル変数になってしまっていることがある。
また、変数を1文字間違えた場合も全くエラーにならず、新しいグローバル変数
が使用されたと解釈されてしまう。
どれも、C言語だとエラーになってくれるので安全だが、JSだと危険。
812デフォルトの名無しさん
2019/12/12(木) 19:25:03.70ID:AVYkL4QT >>811
お前が型安全の意味を間違ってるってことはよく分かった。
メモリ保護エラーなど言語で解決されないエラー
(OSがトラップするエラー)になってしまうことを
型安全じゃないっていうんだよ
言語で例外になるならそれは型安全
お前が型安全の意味を間違ってるってことはよく分かった。
メモリ保護エラーなど言語で解決されないエラー
(OSがトラップするエラー)になってしまうことを
型安全じゃないっていうんだよ
言語で例外になるならそれは型安全
813デフォルトの名無しさん
2019/12/12(木) 19:44:50.53ID:Vt8W+oPZ ぬるぽ
814デフォルトの名無しさん
2019/12/12(木) 20:29:23.98ID:f2lx0DlC ツンッ
815デフォルトの名無しさん
2019/12/12(木) 20:46:51.94ID:6QhfdrtV >>808
おそらくできると思う
おそらくできると思う
816デフォルトの名無しさん
2019/12/12(木) 22:31:55.78ID:hmkgwwLY boost.property_treeはノードはコンテナだって書いてる。
アルゴリズムイントロダクションにはポインタ三つ組みのツリー表現が紹介されてるけど、これがノードがコンテナ的な感じだろか。
アルゴリズムイントロダクションにはポインタ三つ組みのツリー表現が紹介されてるけど、これがノードがコンテナ的な感じだろか。
817デフォルトの名無しさん
2019/12/12(木) 22:36:00.00ID:2qfVB5NM818デフォルトの名無しさん
2019/12/12(木) 22:37:04.02ID:hmkgwwLY 仮に、ノードにSTLのリストやベクターを持たせて子ノードを格納すると、別の部分木のイテレータが互換性を持たなくなる。
これはちょっとまずい。
ある部分木の途中からある部分木の途中までを注目することはよくあるから。
これはちょっとまずい。
ある部分木の途中からある部分木の途中までを注目することはよくあるから。
819デフォルトの名無しさん
2019/12/12(木) 22:45:48.06ID:hmkgwwLY ノードの物理量が必ず同じであることを利用すれば、データ構造ヒープを木として使うのが良いんだろか。
これなら、メモリーの確保はSTLのベクターが使え、木全体でイテレータが互換性を持てる。
これなら、メモリーの確保はSTLのベクターが使え、木全体でイテレータが互換性を持てる。
820デフォルトの名無しさん
2019/12/12(木) 22:52:26.39ID:hmkgwwLY 考えれば考えるほど、ノードに子ノード格納用のSTLコンテナを持たせるのは現実味がなく思える。
821デフォルトの名無しさん
2019/12/12(木) 22:59:41.49ID:hmkgwwLY つまり、型安全はプログラムの健全性を担保するものではなく、C++は型安全とは言えないって事で良いのでは。
822デフォルトの名無しさん
2019/12/12(木) 23:02:50.75ID:+RpJiFi7 jsてのは女子小学生の意味か?
823デフォルトの名無しさん
2019/12/12(木) 23:04:10.87ID:hmkgwwLY 型が無いと僕たちには辛すぎるよね。
ミスを発見してくれないから。
ミスを発見してくれないから。
824デフォルトの名無しさん
2019/12/12(木) 23:36:51.22ID:Rc7qy7fw 型はまあ重要だけど型ガーばっか言ってる奴は揃ってバカだよな。
825デフォルトの名無しさん
2019/12/13(金) 00:21:19.32ID:0IHjBlJG 型が無いとinsertがinsert_from_intとかinsert_from_stringとか別々にしないといけなくなって、色々大変そう。
呼び出し側が責任を持つということになるのかも。
呼び出し側が責任を持つということになるのかも。
826デフォルトの名無しさん
2019/12/13(金) 00:22:24.50ID:0IHjBlJG 型演算をコンパイラに任せることが出来なくなって、すべてプログラミングしないといけなくなるのかな。
827デフォルトの名無しさん
2019/12/13(金) 06:47:47.05ID:6WB0hlYg828デフォルトの名無しさん
2019/12/13(金) 07:17:35.68ID:0IHjBlJG 機械語は変数に型がない。
命令で型を使い分ける。
その大変さを考えると型欲しいってなるのかも。
命令で型を使い分ける。
その大変さを考えると型欲しいってなるのかも。
829デフォルトの名無しさん
2019/12/13(金) 07:24:37.08ID:Ry/2QtNy まさにBがCに進化するときの考え方だね
830デフォルトの名無しさん
2019/12/13(金) 09:49:21.00ID:wVkcEFxk >>825
ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数
用意して使うと言う発想はスクリプト言語的な発想。
そのようにした場合、コンパイラが厳密にどの関数を使うかが人間には
分からない事が多いので安全性を損なう場合が多い。
スクリプト言語は RAD言語なのため、できるだけ短い関数名で対処しようと
するが、それが思わぬ間違いを含みがち。
C言語が好かれているのは、どういう処理がされるかが人間が完全予測できる
ことで、「大体の動作」は好まれない。
ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数
用意して使うと言う発想はスクリプト言語的な発想。
そのようにした場合、コンパイラが厳密にどの関数を使うかが人間には
分からない事が多いので安全性を損なう場合が多い。
スクリプト言語は RAD言語なのため、できるだけ短い関数名で対処しようと
するが、それが思わぬ間違いを含みがち。
C言語が好かれているのは、どういう処理がされるかが人間が完全予測できる
ことで、「大体の動作」は好まれない。
831デフォルトの名無しさん
2019/12/13(金) 09:53:03.46ID:wVkcEFxk >>826
型の違いでコードを自動変化させるという思想は、C++の中でも非常に最近に
なって STL (template) で流行りだしたもの。
もともとC言語に型が導入されたのは、プログラマのミスをコンパイラが発見して
エラーを出してくれるようにするためだった。C言語には関数の多態性(overload)
がない。なお、override と overload は別の概念なので、知らない人は検索して
欲しい。
型の違いでコードを自動変化させるという思想は、C++の中でも非常に最近に
なって STL (template) で流行りだしたもの。
もともとC言語に型が導入されたのは、プログラマのミスをコンパイラが発見して
エラーを出してくれるようにするためだった。C言語には関数の多態性(overload)
がない。なお、override と overload は別の概念なので、知らない人は検索して
欲しい。
832デフォルトの名無しさん
2019/12/13(金) 09:53:50.44ID:0IHjBlJG イネーブラ使えば良いのでは。
833デフォルトの名無しさん
2019/12/13(金) 10:00:20.89ID:0IHjBlJG コンセプトコイコイって感じなのかな。
834デフォルトの名無しさん
2019/12/13(金) 11:27:07.79ID:WVlIRY9+ #pragma omp parallel forで
自動分割され、各スレッドに割り当てられた
ループの開始点と終了点を取得することできませんか?
自動分割され、各スレッドに割り当てられた
ループの開始点と終了点を取得することできませんか?
835デフォルトの名無しさん
2019/12/13(金) 18:09:24.89ID:e6j7CnOm >C言語には関数の多態性(overload)がない
さらりと嘘をつくやつがおるな
さらりと嘘をつくやつがおるな
836デフォルトの名無しさん
2019/12/13(金) 18:27:30.70ID:fi1/rC5j 今UE4と組み込み以外でc++の仕事あります?
837デフォルトの名無しさん
2019/12/13(金) 18:33:53.16ID:xTSwswyu オーバーロードあるか?
ディスパッチの方法はいろいろあると思うが
ディスパッチの方法はいろいろあると思うが
838デフォルトの名無しさん
2019/12/13(金) 18:55:58.62ID:ftjAwgQI >>836
USのマイクロソフトに行け
USのマイクロソフトに行け
839デフォルトの名無しさん
2019/12/13(金) 19:01:03.38ID:ysGzQi5M >>830
> ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数
> 用意して使うと言う発想はスクリプト言語的な発想。
え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ?
「同じ関数名の関数を複数用意」できるのは静的型付け言語の特徴だよ
> ただし、実引数の型が違うのに仮引数の違いだけの同じ関数名の関数を複数
> 用意して使うと言う発想はスクリプト言語的な発想。
え?スクリプト言語で「同じ関数名の関数を複数用意」できる言語なんて無いでしょ?
「同じ関数名の関数を複数用意」できるのは静的型付け言語の特徴だよ
840デフォルトの名無しさん
2019/12/13(金) 19:52:22.32ID:6WB0hlYg841デフォルトの名無しさん
2019/12/13(金) 20:00:57.46ID:ysGzQi5M PowrShell は型付言語ですからね。
それぐらいでしょ?
それぐらいでしょ?
842はちみつ餃子 ◆8X2XSCHEME
2019/12/13(金) 20:54:52.57ID:1q9LzdDI 用語としてメソッドと言ってるものでよければ Common Lisp もそうじゃね?
843デフォルトの名無しさん
2019/12/13(金) 21:07:31.92ID:KHLl2/ku844デフォルトの名無しさん
2019/12/13(金) 21:09:15.79ID:wKYhuojH845デフォルトの名無しさん
2019/12/13(金) 21:13:12.55ID:gmdEaqRD それでいいんじゃないの
846デフォルトの名無しさん
2019/12/13(金) 21:23:18.13ID:T1rtAOWF 質問です
template <typename T>
constexpr inline T value;
template <typename T>
constexpr inline T value = (T)0;
こうやって変数テンプレートの宣言と初期化を分離すると
VC、clang(Xcode付属)ではエラーになるんですがwandboxで試すとエラーになりません
本来どっちの動作が正しいんでしょうか?
template <typename T>
constexpr inline T value;
template <typename T>
constexpr inline T value = (T)0;
こうやって変数テンプレートの宣言と初期化を分離すると
VC、clang(Xcode付属)ではエラーになるんですがwandboxで試すとエラーになりません
本来どっちの動作が正しいんでしょうか?
847デフォルトの名無しさん
2019/12/13(金) 21:37:57.11ID:KHLl2/ku848デフォルトの名無しさん
2019/12/13(金) 22:26:34.23ID:0IHjBlJG >>846
これも通ってしまった。
#include <iostream>
template <typename T>
constexpr T value = 1;
template <typename T>
constexpr T value = 2;
template <typename T>
constexpr T value = 3;
template <typename T>
constexpr T value = 4;
template <typename T>
constexpr T value = 5;
template <typename T>
constexpr T value = 6;
int main()
{
std::cout << value<int> << std::endl;
}
これも通ってしまった。
#include <iostream>
template <typename T>
constexpr T value = 1;
template <typename T>
constexpr T value = 2;
template <typename T>
constexpr T value = 3;
template <typename T>
constexpr T value = 4;
template <typename T>
constexpr T value = 5;
template <typename T>
constexpr T value = 6;
int main()
{
std::cout << value<int> << std::endl;
}
849デフォルトの名無しさん
2019/12/13(金) 22:27:26.74ID:0IHjBlJG 実行結果。
Start
6
0
Finish
最後の定義が有効になってるように見える。
Start
6
0
Finish
最後の定義が有効になってるように見える。
850デフォルトの名無しさん
2019/12/13(金) 22:28:16.14ID:0IHjBlJG Wandbox
C++
gcc HEAD 10.0.0 2019
C++
gcc HEAD 10.0.0 2019
851デフォルトの名無しさん
2019/12/13(金) 22:54:36.18ID:T1rtAOWF ありがとうございます、その結果を見るとgccがおかしいぽいですね・・・
宣言時に初期化は必須と考えて書いていこうと思います、ありがとうございました
宣言時に初期化は必須と考えて書いていこうと思います、ありがとうございました
852デフォルトの名無しさん
2019/12/13(金) 22:57:06.09ID:0IHjBlJG 僕もちょっとわからないんだけど。
853デフォルトの名無しさん
2019/12/14(土) 00:21:27.14ID:stptR0oK >>836
デスクトップアプリ
デスクトップアプリ
854デフォルトの名無しさん
2019/12/14(土) 07:31:10.87ID:SZLGcxYz >>846
診断メッセージをよく見ろよ
> error C2737: 'value': 'constexpr' オブジェクトは初期化する必要があります。
そもそも分離できないんだよ
いいか、constexprは翻訳時定数だぞ
それを翻訳段階9まで未解決のままにできると思うか?
診断メッセージをよく見ろよ
> error C2737: 'value': 'constexpr' オブジェクトは初期化する必要があります。
そもそも分離できないんだよ
いいか、constexprは翻訳時定数だぞ
それを翻訳段階9まで未解決のままにできると思うか?
855デフォルトの名無しさん
2019/12/14(土) 08:56:55.09ID:fBoJLlft856デフォルトの名無しさん
2019/12/14(土) 09:02:00.44ID:SZLGcxYz なんでという理由も述べたはずだが
857デフォルトの名無しさん
2019/12/14(土) 09:53:01.66ID:fBoJLlft >>856
だからそれを可能にするようにしてくれ
だからそれを可能にするようにしてくれ
858デフォルトの名無しさん
2019/12/14(土) 10:02:03.90ID:SZLGcxYz ん? 俺は江添じゃねえぞ
奴なら標準会員だから言ってみるのもいいが
奴なら標準会員だから言ってみるのもいいが
859デフォルトの名無しさん
2019/12/14(土) 10:02:27.48ID:SZLGcxYz - 標準会員
+ 標準化委員
+ 標準化委員
860デフォルトの名無しさん
2019/12/14(土) 10:08:29.00ID:yV/FURvf 江添本ダメ絶対
861デフォルトの名無しさん
2019/12/14(土) 10:30:50.58ID:stptR0oK 江添でもできない
862846
2019/12/14(土) 10:35:10.86ID:QUVSvjZy >>854
>診断メッセージをよく見ろよ
見た上で言ってます(つまりgccまたはVC, clangのバグではないかということ
>いいか、constexprは翻訳時定数だぞ
それ以前にテンプレートなんですが
>診断メッセージをよく見ろよ
見た上で言ってます(つまりgccまたはVC, clangのバグではないかということ
>いいか、constexprは翻訳時定数だぞ
それ以前にテンプレートなんですが
863デフォルトの名無しさん
2019/12/14(土) 12:26:05.30ID:m0rD8Ode ローマ法王は根競べで決めるらしいですよ奥さん。
864デフォルトの名無しさん
2019/12/14(土) 12:26:49.81ID:gw9aL+td 誰でも閲覧できる規格ドラフト見ればすぐにわかることをこんな掃きだめで聞いても
865デフォルトの名無しさん
2019/12/14(土) 12:35:13.30ID:SZLGcxYz866デフォルトの名無しさん
2019/12/14(土) 12:50:37.99ID:gw9aL+td >相場では規格票の条文
通産省の癖の抜けない老人はご退場いただきたい
通産省の癖の抜けない老人はご退場いただきたい
867デフォルトの名無しさん
2019/12/14(土) 12:58:43.25ID:m0rD8Ode これODRの緩和と関係あるんですかね?
868デフォルトの名無しさん
2019/12/14(土) 13:34:08.27ID:T/HCOnVQ >>772
>x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ
別に。
コアAの読み書きをコアA自身が見る分にはそうかもわからんが
コアAの読み書きを異なるコアBから見たらwrite同士やread同士でも順番が入れ替わり得る
(アウトオブオーダー実行の影響で
安全に動かすには適切にメモリバリアで順序化する必要がある
>x86系CPUで普通のメモリへの読み書きで順番が入れ替わる可能性があるのは write => read だけ
別に。
コアAの読み書きをコアA自身が見る分にはそうかもわからんが
コアAの読み書きを異なるコアBから見たらwrite同士やread同士でも順番が入れ替わり得る
(アウトオブオーダー実行の影響で
安全に動かすには適切にメモリバリアで順序化する必要がある
869デフォルトの名無しさん
2019/12/14(土) 13:37:18.74ID:JwYnIOEa870デフォルトの名無しさん
2019/12/14(土) 13:37:51.96ID:T/HCOnVQ といってもロックレス何ちゃらぐらいの制御であればInterlockedCompareExchange()で済むから
スレッド間の通信なら普通メモリバリアとか直接触る必要は無いが
スレッド間の通信なら普通メモリバリアとか直接触る必要は無いが
871デフォルトの名無しさん
2019/12/14(土) 13:38:24.93ID:T/HCOnVQ >>869
迷信
迷信
872デフォルトの名無しさん
2019/12/14(土) 13:39:11.91ID:JwYnIOEa ソースは?
873デフォルトの名無しさん
2019/12/14(土) 13:39:40.59ID:T/HCOnVQ リードキューやコマンドキューにコマンドが入るのはアウトオブオーダープロセスの事後であるため
そのような保証は無い
そのような保証は無い
874デフォルトの名無しさん
2019/12/14(土) 13:41:05.07ID:JwYnIOEa それのソース
875デフォルトの名無しさん
2019/12/14(土) 13:44:15.66ID:JwYnIOEa876デフォルトの名無しさん
2019/12/14(土) 14:15:12.84ID:JwYnIOEa x86系は
シングルコアのマルチスレッドアプリ
の多くがそのまま動くように出来てる
シングルコア時代が長かったから
シングルコアのマルチスレッドアプリ
の多くがそのまま動くように出来てる
シングルコア時代が長かったから
877デフォルトの名無しさん
2019/12/14(土) 14:55:10.15ID:QUVSvjZy878デフォルトの名無しさん
2019/12/14(土) 14:57:30.67ID:T/HCOnVQ 確かにリンク先のインテルのマニュアルの
>8.2.3.2 Neither Loads Nor Stores Are Reordered with Like Operations
>Example 8-2. Stores Are Not Reordered with Older Loads
に
>Initially x = y = 0r1 = 1 and r2 = 1 is not allowed
と書いてあって>>875と同じことが書いてあるが疑わしい
マニュアルが間違っているのではないか、
ちな
>8byteのデータはアドレスが8の倍数のときにアライメントされている。
から安全に読み書きできるというのはi486みたいな古いプロセッサーだとかえって危険らしい
>8.1.1 Guaranteed Atomic Operations
を見たらワカル、
>8.2.3.2 Neither Loads Nor Stores Are Reordered with Like Operations
>Example 8-2. Stores Are Not Reordered with Older Loads
に
>Initially x = y = 0r1 = 1 and r2 = 1 is not allowed
と書いてあって>>875と同じことが書いてあるが疑わしい
マニュアルが間違っているのではないか、
ちな
>8byteのデータはアドレスが8の倍数のときにアライメントされている。
から安全に読み書きできるというのはi486みたいな古いプロセッサーだとかえって危険らしい
>8.1.1 Guaranteed Atomic Operations
を見たらワカル、
879デフォルトの名無しさん
2019/12/14(土) 15:04:35.33ID:T/HCOnVQ つか上のインテルのマニュアルには「投機的実行時中のメモリアクセスではメモリアクセス例外は発生しない」
旨が2箇所ぐらいに書かれているが、
ということはつまりアセンブリコード上A→BまたはA→Cというメモリアクセスが条件によってどちら片方だけ実行されることを意図したコードであっても
A→B→Cというメモリアクセス順に成り得ることを意味し、他コアからもそう見えてしまうはずだが、
これをメモリアクセス順がreorderされていないうちに入れてしまうのはどうなのか、、、
マニュアル執筆者の国語の再教育が必要なのではないか
旨が2箇所ぐらいに書かれているが、
ということはつまりアセンブリコード上A→BまたはA→Cというメモリアクセスが条件によってどちら片方だけ実行されることを意図したコードであっても
A→B→Cというメモリアクセス順に成り得ることを意味し、他コアからもそう見えてしまうはずだが、
これをメモリアクセス順がreorderされていないうちに入れてしまうのはどうなのか、、、
マニュアル執筆者の国語の再教育が必要なのではないか
880デフォルトの名無しさん
2019/12/14(土) 15:10:49.52ID:SZLGcxYz >>877
おまえさん、もしかして
テンプレートの宣言と定義と
オブジェクトの宣言と定義を
ごっちゃにしてないか?
int test;
int test = 5;
これは宣言と定義じゃなく定義の重複だぞ
おまえさん、もしかして
テンプレートの宣言と定義と
オブジェクトの宣言と定義を
ごっちゃにしてないか?
int test;
int test = 5;
これは宣言と定義じゃなく定義の重複だぞ
881デフォルトの名無しさん
2019/12/14(土) 15:13:40.23ID:PwUHvw+y お前なぁ
x86のこと大して詳しくないのにしゃしゃり出てくるからそういう情けないこと言うはめになるんだよ
x86でstd::atomicのmemory_orderを変えてバリア付きがどういうインストラクションになるか見てみな
storeのseq_cst以外は素のmovだから(コンパイラ依存だから絶対ではない)
x86のこと大して詳しくないのにしゃしゃり出てくるからそういう情けないこと言うはめになるんだよ
x86でstd::atomicのmemory_orderを変えてバリア付きがどういうインストラクションになるか見てみな
storeのseq_cst以外は素のmovだから(コンパイラ依存だから絶対ではない)
882デフォルトの名無しさん
2019/12/14(土) 15:20:09.00ID:T/HCOnVQ そりゃー間違ったマニュアルにしたがって実装したら間違った実装になり得る(キリ
ていうかアウトオブオーダー実行の影響がマルチコアCPUにおいても透過的だと認めやっても良いが、
>>879の投機的実行の件はどうなんじゃ?
あるコアが投機的実行中に他のコアをストップさせるのでは何のための投機的実行かわからん…
ていうかアウトオブオーダー実行の影響がマルチコアCPUにおいても透過的だと認めやっても良いが、
>>879の投機的実行の件はどうなんじゃ?
あるコアが投機的実行中に他のコアをストップさせるのでは何のための投機的実行かわからん…
883デフォルトの名無しさん
2019/12/14(土) 15:21:14.95ID:k5kIl1RN >>877
× 普通に考えて
〇 俺の頭の中で
× 妥当な理由はない
〇 妥当な理由は思い当たらない
テンプレートなら初期化は不要という主張なら、
constexpr 変数の宣言と定義を分離できないことは納得してるのかな?
そうだとして、それをテンプレートの時だけ可能とすることに意義があると思うの?
特別ルールを設ければコンパイラ実装やプログラムの読み取りにコストがかかるから、
明確が意義がなければ特別ルールは無いのが妥当だと思うよ。
× 普通に考えて
〇 俺の頭の中で
× 妥当な理由はない
〇 妥当な理由は思い当たらない
テンプレートなら初期化は不要という主張なら、
constexpr 変数の宣言と定義を分離できないことは納得してるのかな?
そうだとして、それをテンプレートの時だけ可能とすることに意義があると思うの?
特別ルールを設ければコンパイラ実装やプログラムの読み取りにコストがかかるから、
明確が意義がなければ特別ルールは無いのが妥当だと思うよ。
884デフォルトの名無しさん
2019/12/14(土) 15:24:42.79ID:QUVSvjZy885デフォルトの名無しさん
2019/12/14(土) 15:32:39.86ID:SZLGcxYz >>884
おまえさんの元の質問はこうだったな
template <typename T> constexpr inline T value;
template <typename T> constexpr inline T value = (T)0;
どこにexternなんて書いてある?
マウントがどうたら気にするあまり後出しなんかしてるのはそっちだぞ
こっちはそんなこと微塵も考えちゃいねえよ失敬な
最初の口調に戻れよ
おまえさんの元の質問はこうだったな
template <typename T> constexpr inline T value;
template <typename T> constexpr inline T value = (T)0;
どこにexternなんて書いてある?
マウントがどうたら気にするあまり後出しなんかしてるのはそっちだぞ
こっちはそんなこと微塵も考えちゃいねえよ失敬な
最初の口調に戻れよ
886デフォルトの名無しさん
2019/12/14(土) 15:36:57.55ID:QUVSvjZy 間違えた
Xテンプレート実引数に使われる型が不完全型であっても、実体化まで評価を遅らせられる
○初期化に使われる定数式の評価を遅らせられる
言い換えれば、宣言と定義を分離できないならconstな変数テンプレートの宣言時には
それに使う定数式内のすべての型が完全型であることを強制されてしまう
=std::is_integral_v = std::is_integral<T>::valueでいえば
is_integral構造体の方が取り回しがいい、ということ
なんのために変数テンプレートが導入されたのか・・・・
Xテンプレート実引数に使われる型が不完全型であっても、実体化まで評価を遅らせられる
○初期化に使われる定数式の評価を遅らせられる
言い換えれば、宣言と定義を分離できないならconstな変数テンプレートの宣言時には
それに使う定数式内のすべての型が完全型であることを強制されてしまう
=std::is_integral_v = std::is_integral<T>::valueでいえば
is_integral構造体の方が取り回しがいい、ということ
なんのために変数テンプレートが導入されたのか・・・・
887デフォルトの名無しさん
2019/12/14(土) 15:37:56.58ID:QUVSvjZy888デフォルトの名無しさん
2019/12/14(土) 15:43:43.09ID:SZLGcxYz >>887
template <typename T> constexpr inline T value;
template <typename T> constexpr inline T value = (T)0;
を例示しての質問に対して
int test;
int test = 5;
という答えをしているぞ
valueがtestになったのは悪かったが
余計な飾りをとって問題の核心を指摘したんだよ
template <typename T> constexpr inline T value;
template <typename T> constexpr inline T value = (T)0;
を例示しての質問に対して
int test;
int test = 5;
という答えをしているぞ
valueがtestになったのは悪かったが
余計な飾りをとって問題の核心を指摘したんだよ
889デフォルトの名無しさん
2019/12/14(土) 15:48:43.77ID:SZLGcxYz 家事があるんでしばらく離席する
890デフォルトの名無しさん
2019/12/14(土) 15:58:10.05ID:QUVSvjZy891デフォルトの名無しさん
2019/12/14(土) 16:55:24.17ID:k5kIl1RN >>886
やっぱり constexpr 変数の宣言と定義を分離して何がしたいのか、
何ができるようになるのか、が見えてこない。ごめんね。
宣言だけ見える constexpr 変数への参照やポインタだけはとれるようになるけど、
それだともう constexpr である必要なくて const 変数でよさそうで、それならふつうに
宣言と定義は分けられるし。
ちなみにテンプレート実体化までテンプレート引数依存箇所の評価はされないから、
宣言と定義を分ける話を「評価を遅らせられる」と言い表しているのも何か間違ってそう。
「記述を遅らせられる」の間違い?
やっぱり constexpr 変数の宣言と定義を分離して何がしたいのか、
何ができるようになるのか、が見えてこない。ごめんね。
宣言だけ見える constexpr 変数への参照やポインタだけはとれるようになるけど、
それだともう constexpr である必要なくて const 変数でよさそうで、それならふつうに
宣言と定義は分けられるし。
ちなみにテンプレート実体化までテンプレート引数依存箇所の評価はされないから、
宣言と定義を分ける話を「評価を遅らせられる」と言い表しているのも何か間違ってそう。
「記述を遅らせられる」の間違い?
892デフォルトの名無しさん
2019/12/14(土) 17:16:54.80ID:SZLGcxYz だめだこいつ
絶望的に人に者を尋ねる態度がわかってない
「言ってくれれば済む」とか図々しすぎ
技術的な議論がしたいがこいつ相手では
不必要にイラついちまって無理だわ
俺そんなに人間できてない
絶望的に人に者を尋ねる態度がわかってない
「言ってくれれば済む」とか図々しすぎ
技術的な議論がしたいがこいつ相手では
不必要にイラついちまって無理だわ
俺そんなに人間できてない
893デフォルトの名無しさん
2019/12/14(土) 17:24:00.92ID:QUVSvjZy >>891
すまん、
>テンプレート実体化までテンプレート引数依存箇所の評価はされない
これ検証してみたらたしかにそうだった
手元のコードで完全型を要求されたから、初期化時に不完全型を使えないと思い込んでた
(おそらくconstexprな変数テンプレートの実体化が、必要な型の実体化より先に来てたっぽい
多分構造体か何かでワンクッション置けば解決できると思う)
これなら確かに分けられなくて問題無いね
>>892
>いいか、constexprは翻訳時定数だぞ
>それを翻訳段階9まで未解決のままにできると思うか?
>なんかとんがってんな
>後出しなんかしてるのはそっちだ
>余計な飾りをとって問題の核心を指摘したんだよ
さらには
>最初の口調に戻れよ
の上で
>技術的な議論がしたいがこいつ相手では
>不必要にイラついちまって無理だわ
よくそんなセリフが言えたもんだ
自己評価高すぎじゃない?wwww
すまん、
>テンプレート実体化までテンプレート引数依存箇所の評価はされない
これ検証してみたらたしかにそうだった
手元のコードで完全型を要求されたから、初期化時に不完全型を使えないと思い込んでた
(おそらくconstexprな変数テンプレートの実体化が、必要な型の実体化より先に来てたっぽい
多分構造体か何かでワンクッション置けば解決できると思う)
これなら確かに分けられなくて問題無いね
>>892
>いいか、constexprは翻訳時定数だぞ
>それを翻訳段階9まで未解決のままにできると思うか?
>なんかとんがってんな
>後出しなんかしてるのはそっちだ
>余計な飾りをとって問題の核心を指摘したんだよ
さらには
>最初の口調に戻れよ
の上で
>技術的な議論がしたいがこいつ相手では
>不必要にイラついちまって無理だわ
よくそんなセリフが言えたもんだ
自己評価高すぎじゃない?wwww
894デフォルトの名無しさん
2019/12/14(土) 17:52:18.36ID:SZLGcxYz 意見が合うとか合わないとか以前の問題
根底的なメンタリティに欠陥がある相手とは話にならない
根底的なメンタリティに欠陥がある相手とは話にならない
895デフォルトの名無しさん
2019/12/14(土) 17:58:45.99ID:k5kIl1RN FYI
>>846
Bug 68012: g++ incorrectly accepts forward declaration of constexpr variable template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68012
>>848
One definition rule
https://timsong-cpp.github.io/cppwp/n4659/basic.def.odr#1
> No translation unit shall contain more than one definition of any variable, function, class type, enumeration type, or template.
>>846
Bug 68012: g++ incorrectly accepts forward declaration of constexpr variable template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68012
>>848
One definition rule
https://timsong-cpp.github.io/cppwp/n4659/basic.def.odr#1
> No translation unit shall contain more than one definition of any variable, function, class type, enumeration type, or template.
896デフォルトの名無しさん
2019/12/14(土) 18:08:23.02ID:QUVSvjZy >>895
わざわざありがとう、やっぱgccのバグだったのね
わざわざありがとう、やっぱgccのバグだったのね
897デフォルトの名無しさん
2019/12/14(土) 19:50:50.54ID:UskLmxJI GCCに踊らされてスレを浪費した
898デフォルトの名無しさん
2019/12/14(土) 20:04:04.94ID:4qfYuBec899デフォルトの名無しさん
2019/12/14(土) 21:11:37.22ID:zf7JKoX1900デフォルトの名無しさん
2019/12/14(土) 21:15:53.72ID:SZLGcxYz 禿もそんなことを言いながら
virtualの導入には当初反対から出発したんだよな
virtualの導入には当初反対から出発したんだよな
901デフォルトの名無しさん
2019/12/14(土) 21:26:53.87ID:00Pm6Tju >>899
その話題QZ相手にやったばかりなんで自分で調べて
その話題QZ相手にやったばかりなんで自分で調べて
902デフォルトの名無しさん
2019/12/15(日) 09:10:03.56ID:LATD77rz 君が忘れた腕時計見つめながら。
903デフォルトの名無しさん
2019/12/15(日) 10:29:35.56ID:ir8W/KPm >>898
overload は、同じ関数名で仮引数の型が違う関数を作れるという多態性のことですよ。
overload は、同じ関数名で仮引数の型が違う関数を作れるという多態性のことですよ。
904デフォルトの名無しさん
2019/12/15(日) 10:52:20.53ID:LATD77rz ツリーのイテレータがあるとして、イテレータが返すのはノードじゃなくて、ノードの持つ値ですよね?
すると、イテレータは立体機動出来ないといけなくなるけど、begin().begin()とか変ですよね?
begin().parent()とか。
すると、イテレータは立体機動出来ないといけなくなるけど、begin().begin()とか変ですよね?
begin().parent()とか。
905デフォルトの名無しさん
2019/12/15(日) 10:59:28.89ID:LATD77rz イテレータが返すじゃなくて、イテレータの逆参照が返すかな。
906デフォルトの名無しさん
2019/12/15(日) 11:08:51.65ID:fGq+HT2S コレクションとしては子孫ノード全部を列挙できればよくて、ツリー構造に沿った操作が行いたいなら
それに加えて直接の子ノードのみを列挙するイテレータが用意できればいいだろう。
それに加えて直接の子ノードのみを列挙するイテレータが用意できればいいだろう。
907デフォルトの名無しさん
2019/12/15(日) 11:17:54.16ID:LATD77rz 何が子ノードのみを列挙するイテレータを返すかがよくわからない。
ノードの値がイテレータを返すことはできないので、ノードが子ノードを指すイテレータを返すとすると、イテレータの逆参照はノードを返すことになる。
これは意味論的にちょっと違うかなって。
コレクションにおいて位置はイテレータで示されるので、立体的な位置を持つツリーでは、イテレータ自身が立体機動出来て、巡回能力を持つイテレータは、reverse_iteratorのように外部に用意されれば良いのかなと思ったんだけど。
たとえば、レベルオーダーや深さ優先の巡回イテレータがあるとすると、普通に考えるとスタックやキューが内部に必要にある。
というわけでコピーのコストがあるので、これを標準には出来ないんじゃないかなって。
ノードの値がイテレータを返すことはできないので、ノードが子ノードを指すイテレータを返すとすると、イテレータの逆参照はノードを返すことになる。
これは意味論的にちょっと違うかなって。
コレクションにおいて位置はイテレータで示されるので、立体的な位置を持つツリーでは、イテレータ自身が立体機動出来て、巡回能力を持つイテレータは、reverse_iteratorのように外部に用意されれば良いのかなと思ったんだけど。
たとえば、レベルオーダーや深さ優先の巡回イテレータがあるとすると、普通に考えるとスタックやキューが内部に必要にある。
というわけでコピーのコストがあるので、これを標準には出来ないんじゃないかなって。
908デフォルトの名無しさん
2019/12/15(日) 11:22:50.93ID:LATD77rz 子ノードを指すイテレータの逆参照が子ノードを返すとすると、*node.begin()は子ノードを返す。
**node.begin()は最初の子ノードの値を返すことになるんだけども。
イテレータの逆参照がノードを返す場合、初期化子リストが素直に実装出来てイイんだけども、イテレータの逆参照が値を返さないのが腑に落ちない感じ。
**node.begin()は最初の子ノードの値を返すことになるんだけども。
イテレータの逆参照がノードを返す場合、初期化子リストが素直に実装出来てイイんだけども、イテレータの逆参照が値を返さないのが腑に落ちない感じ。
909デフォルトの名無しさん
2019/12/15(日) 11:23:28.40ID:Q+saMC6e910デフォルトの名無しさん
2019/12/15(日) 11:27:25.99ID:LATD77rz イテレータは演算子の実装を求められてるわけではなく、その演算子を呼び出した時の効果を求められてるだけなので、++(int)はスタックをコピーしない方法を考えた。
911デフォルトの名無しさん
2019/12/15(日) 11:30:57.88ID:fGq+HT2S そこは値じゃなくてノードを返すイテレータでいいんじゃね?
必要ならイテレータ自体を拡張してもいいだろうけど、この場合はあまり応用できそうもないし。
必要ならイテレータ自体を拡張してもいいだろうけど、この場合はあまり応用できそうもないし。
912デフォルトの名無しさん
2019/12/15(日) 11:31:53.05ID:LATD77rz そうなのかな?
913デフォルトの名無しさん
2019/12/15(日) 11:37:55.15ID:PfQY9kAx まずイテレータで何を抽象化したいかを明確にしなよ
ノードを意識させたいのか?
ノードを意識させたいのか?
914デフォルトの名無しさん
2019/12/15(日) 11:38:38.78ID:LATD77rz STL風ツリーって検索しても絶対出てこないし、CIAが絡んでるような気がしてきた。
915デフォルトの名無しさん
2019/12/15(日) 11:39:36.48ID:LATD77rz そこがわかんないんだよねえ。
禿4とか読んでると、イテレータは位置を意味してるように思うんだけど。
禿4とか読んでると、イテレータは位置を意味してるように思うんだけど。
916デフォルトの名無しさん
2019/12/15(日) 11:45:00.74ID:mSzJWPy5 ツリー構造
範囲が広すぎて
汎用化すると使い勝手が悪くなるからしない
ってだけかと
範囲が広すぎて
汎用化すると使い勝手が悪くなるからしない
ってだけかと
917デフォルトの名無しさん
2019/12/15(日) 11:56:45.76ID:Q+saMC6e recursive_directory_iteratorとかね
918デフォルトの名無しさん
2019/12/15(日) 12:06:14.82ID:mSzJWPy5 なんでdirectory?
treeでいいじゃん
treeでいいじゃん
919デフォルトの名無しさん
2019/12/15(日) 12:22:05.91ID:Q+saMC6e いや立体がどうたら言ってるから
じゃあrecursive_directory_iteratorを使うユーザーのコードは
いちいち多重ループだの再帰だのといった処理になるのかって
思ってさ
じゃあrecursive_directory_iteratorを使うユーザーのコードは
いちいち多重ループだの再帰だのといった処理になるのかって
思ってさ
920デフォルトの名無しさん
2019/12/15(日) 12:24:23.41ID:LATD77rz ツリーは、あるノードの親が知りたいときもあるはず。
921デフォルトの名無しさん
2019/12/15(日) 13:07:24.45ID:TeOOTcIs ごちゃごちゃ考える前にイテレータの本分を決めなよ
begin()からend()まで++で走らせた時にどうなってほしいの?
話はそれからだ
begin()からend()まで++で走らせた時にどうなってほしいの?
話はそれからだ
922デフォルトの名無しさん
2019/12/15(日) 13:09:44.18ID:MBW+LfoG 一般にtreeの探索順序はアルゴリズムと深く結びついてるし、
そこ凝りだすと沼だぞ。
そこ凝りだすと沼だぞ。
923デフォルトの名無しさん
2019/12/15(日) 13:09:51.26ID:5G1zfwod 関数ポインタをシリアライズしてファイルとして保存し、
ファイルからその関数ポインタを利用できる形に復元する方法ってあるのでしょうか?
ファイルからその関数ポインタを利用できる形に復元する方法ってあるのでしょうか?
924デフォルトの名無しさん
2019/12/15(日) 13:13:54.57ID:nhcuVJi8 関数だろうが変数だろうがポインタはただの整数値でしょ
925デフォルトの名無しさん
2019/12/15(日) 13:18:39.25ID:p2D9PeH2 >>923 環境や「利用」の仕方を具体的に限定すればやりようはあるかもね。
926デフォルトの名無しさん
2019/12/15(日) 13:20:48.30ID:hicN34V0 次に(別のプロセスで)ファイルを読み込んだときに、
元の関数を同じ番地で参照できると限らんしな。
関数ポインタの配列のインデクスなら大丈夫だろうだけど。
元の関数を同じ番地で参照できると限らんしな。
関数ポインタの配列のインデクスなら大丈夫だろうだけど。
927デフォルトの名無しさん
2019/12/15(日) 13:23:00.95ID:LATD77rz https://ja.cppreference.com/w/cpp/iterator/reverse_iterator/operator%3D
これconstexprになってるけど、どういうときに定数になるんだろ?
end()の時かな?
これconstexprになってるけど、どういうときに定数になるんだろ?
end()の時かな?
928デフォルトの名無しさん
2019/12/15(日) 13:39:23.84ID:2FA7t6Jx C++20以降のvector/stringとか
使われる時にconstexprであることを妨げないようにするために付いてるんだと思う
使われる時にconstexprであることを妨げないようにするために付いてるんだと思う
929デフォルトの名無しさん
2019/12/15(日) 13:47:38.10ID:LATD77rz どうもありがとう。
930デフォルトの名無しさん
2019/12/15(日) 13:52:49.06ID:ph9lwYgM constexpr関数の中で使うため。
931デフォルトの名無しさん
2019/12/15(日) 14:30:37.97ID:o9m7qUoD デストラクタがデフォルトでvirtualじゃないのは設計不良ではあるまいか
932デフォルトの名無しさん
2019/12/15(日) 14:34:47.01ID:EeC59mXx あえてベースの方のメソッドを呼びたいなんてことあるのかね?
933デフォルトの名無しさん
2019/12/15(日) 14:38:17.75ID:p2D9PeH2934デフォルトの名無しさん
2019/12/15(日) 15:15:03.49ID:K1ul1r/C >>931
C++では基本的にゼロコストでできるところはそうできるようにするポリシーだからvirtualが必要なときだけvirtualを明示的に指定させる、というのをどこかで読んだ気がする
C++では基本的にゼロコストでできるところはそうできるようにするポリシーだからvirtualが必要なときだけvirtualを明示的に指定させる、というのをどこかで読んだ気がする
935デフォルトの名無しさん
2019/12/15(日) 15:29:48.68ID:7Mmj/dyw virtualでなかったら継承禁止にしても良かったんじゃないかとは思う
936デフォルトの名無しさん
2019/12/15(日) 16:19:56.16ID:AolOnHel そうするとメタプログラミングに色々と支障が出たはずだし
STLも結構継承使ってるから実現出来なかったかコスト増えてるよ
STLも結構継承使ってるから実現出来なかったかコスト増えてるよ
937デフォルトの名無しさん
2019/12/15(日) 16:52:10.11ID:TkLVy9px デストラクタをvirtualにする必要があるのは、baseのポインタ経由でdeleteする場合だけ
baseのポインタを使うことすらないようなもの(CRTPなど)までvirtualになるのは
どうなんだろうか
baseのポインタを使うことすらないようなもの(CRTPなど)までvirtualになるのは
どうなんだろうか
938デフォルトの名無しさん
2019/12/15(日) 17:01:04.52ID:ph9lwYgM unique_ptr使えばvirtualにする必要無いのでは?
939デフォルトの名無しさん
2019/12/15(日) 17:16:05.58ID:p2D9PeH2 >>938 んなこたーない。
shared_ptr<Base>{new Derived} なら virtual デストラクタ不要になるから、間違えて覚えてるだけでは?
shared_ptr<Base>{new Derived} なら virtual デストラクタ不要になるから、間違えて覚えてるだけでは?
940デフォルトの名無しさん
2019/12/15(日) 18:59:53.87ID:tmrMX5L5941デフォルトの名無しさん
2019/12/15(日) 19:10:50.35ID:AolOnHel セオリーとして覚えてる人多いけど、何故なのかまで考えてない人が多い例の一つだね
要するにdeleteする基底のポインタからデストラクタを呼ぶ際に末端のデストラクタを呼ぶ方法(vtable)が必要というだけ
末端のデストラクタを呼べれば、そこから基底のデストラクタを呼んでいくのは何が基底かわかりきってるから自動で出来る
要するにdeleteする基底のポインタからデストラクタを呼ぶ際に末端のデストラクタを呼ぶ方法(vtable)が必要というだけ
末端のデストラクタを呼べれば、そこから基底のデストラクタを呼んでいくのは何が基底かわかりきってるから自動で出来る
942デフォルトの名無しさん
2019/12/15(日) 19:29:34.24ID:tmrMX5L5 永遠の初心者です、お願いします
1. 式で if 文を表現したいときは条件演算子(三項演算子 ?: )が使えますが、同じく式でループ構造を表す方法は C++11 以後にありますでしょうか?
2. 1 の質問の理由としては、C++ は Java とちがって uper() がなく、派生クラスのコンストラクタの基底クラス初期化部分に式しか書けません、ここにループを書くとすれば「コンストラクタ用メンバ関数(メソッド)」を置いていますがいかにも無様だと思っています…
3. ある既存のクラスに皮をかぶせて機能アップを図るとき、もとのクラスの派生クラスとして機能アップ部分を既述することは、よくある定石でしょうか、それともあまりしないことでしょうか?
---
以上3点の質問は以下のプログラムを書いていて感じました
お題は「エラトステネスのふるい」、ただし、当初、まっとうにふるいを書いた後、機能アップ項目として
篩部分に格納する数は 2n + 1 奇数に限定する、あるいは 6n + 1, 6n + 5 の形のみに限定する
等を元の篩に対して派生クラスとして記述しました
https://ideone.com/YPlfsC
1. 式で if 文を表現したいときは条件演算子(三項演算子 ?: )が使えますが、同じく式でループ構造を表す方法は C++11 以後にありますでしょうか?
2. 1 の質問の理由としては、C++ は Java とちがって uper() がなく、派生クラスのコンストラクタの基底クラス初期化部分に式しか書けません、ここにループを書くとすれば「コンストラクタ用メンバ関数(メソッド)」を置いていますがいかにも無様だと思っています…
3. ある既存のクラスに皮をかぶせて機能アップを図るとき、もとのクラスの派生クラスとして機能アップ部分を既述することは、よくある定石でしょうか、それともあまりしないことでしょうか?
---
以上3点の質問は以下のプログラムを書いていて感じました
お題は「エラトステネスのふるい」、ただし、当初、まっとうにふるいを書いた後、機能アップ項目として
篩部分に格納する数は 2n + 1 奇数に限定する、あるいは 6n + 1, 6n + 5 の形のみに限定する
等を元の篩に対して派生クラスとして記述しました
https://ideone.com/YPlfsC
944デフォルトの名無しさん
2019/12/15(日) 20:01:24.23ID:01f7hQnX >>943
ラムダ式の出番かな?
void test(bool flag) { flag ? []{ for(int i = 0; i < 10; ++i) cout << i; } : throw 1; }
ラムダ式の出番かな?
void test(bool flag) { flag ? []{ for(int i = 0; i < 10; ++i) cout << i; } : throw 1; }
945デフォルトの名無しさん
2019/12/15(日) 20:05:17.27ID:5sPbacoo エラストテネス
6n+1, 6n+5だけ保持とかってみんな考えるよね
ちなみに
巨大なテーブル作成時のパフォーマンスを上げるなら
キャッシュが効くよう分割処理するのが非常に効果的
スレッド分割の為にいずれにしろ分割処理は作る事になる
6n+1, 6n+5だけ保持とかってみんな考えるよね
ちなみに
巨大なテーブル作成時のパフォーマンスを上げるなら
キャッシュが効くよう分割処理するのが非常に効果的
スレッド分割の為にいずれにしろ分割処理は作る事になる
946デフォルトの名無しさん
2019/12/15(日) 20:07:01.24ID:5sPbacoo エラトステネス
947デフォルトの名無しさん
2019/12/15(日) 20:14:20.76ID:mkXjftMX 高分子エラストマー
948はちみつ餃子 ◆8X2XSCHEME
2019/12/15(日) 20:20:59.00ID:jthcUe0A >>943
初期化部分に複雑な処理をベタ書きする方が無様だと思うよ。
初期化リストの中にそんなごちゃごちゃしたこと書きたい?
ワイが思うだけなので世間でどう思われてるかは知らんけどとりあえずひとつの意見として。
初期化部分に複雑な処理をベタ書きする方が無様だと思うよ。
初期化リストの中にそんなごちゃごちゃしたこと書きたい?
ワイが思うだけなので世間でどう思われてるかは知らんけどとりあえずひとつの意見として。
949デフォルトの名無しさん
2019/12/15(日) 20:54:13.00ID:TKBas8kS >>939
親クラス(Base)のデストラクタに virtual 付けなくても...
{
shared_ptr<Base> obj( new Derived() );
} // ~Derived() called, then ~Base() called.
~Derived() はコールされるんですね... 確認してみて驚きました。
これができる仕組みを誰か教えてください。
スマートポインタのオブジェクトは子クラスの事何も知らないのに
どうして ~Derived() のコールが可能なのでしょうか?
親クラス(Base)のデストラクタに virtual 付けなくても...
{
shared_ptr<Base> obj( new Derived() );
} // ~Derived() called, then ~Base() called.
~Derived() はコールされるんですね... 確認してみて驚きました。
これができる仕組みを誰か教えてください。
スマートポインタのオブジェクトは子クラスの事何も知らないのに
どうして ~Derived() のコールが可能なのでしょうか?
950デフォルトの名無しさん
2019/12/15(日) 21:07:41.82ID:2FA7t6Jx951デフォルトの名無しさん
2019/12/15(日) 21:19:04.13ID:TKBas8kS >>950
まだ仕組みのとこまでですが理解できました。ありがとうございます。
まだ仕組みのとこまでですが理解できました。ありがとうございます。
952デフォルトの名無しさん
2019/12/15(日) 21:24:07.01ID:tmrMX5L5 質問ですが構造体Fooの内側に構造体Barが定義されているという入れ子になった構造体において、
Fooの外のコードでFoo::Barのサイズをsizeof()で知りたいとき、以下は正しい?
1. C++だとsizeof(Foo::Bar)と書いたらおk
2. CまたはC++でもC互換構文の範疇で済ます場合、次のどちらかの方法でしか書けない
(1) Foo::Barのインスタンスyが存在するスコープ内で、sizeof(y)と書く
(2) Fooのインスタンスxが存在するスコープ内において、Foo::Bar型のメンバyをFooが持つ
(Foo::yが定義されている)という条件の下で、sizeof(x.y)と書く
Fooの外のコードでFoo::Barのサイズをsizeof()で知りたいとき、以下は正しい?
1. C++だとsizeof(Foo::Bar)と書いたらおk
2. CまたはC++でもC互換構文の範疇で済ます場合、次のどちらかの方法でしか書けない
(1) Foo::Barのインスタンスyが存在するスコープ内で、sizeof(y)と書く
(2) Fooのインスタンスxが存在するスコープ内において、Foo::Bar型のメンバyをFooが持つ
(Foo::yが定義されている)という条件の下で、sizeof(x.y)と書く
953デフォルトの名無しさん
2019/12/15(日) 21:39:08.56ID:tmrMX5L5 ふとオモタがインスタンスの必要性は無くせるかもしれん
Foo::Bar型のメンバFoo::yが定義さえされておれば、Fooのインスタンスが無くても
sizeof(((Foo*)0)->y)
と書けばC言語で逝けるかもしれん…
スゲー気持ち悪いコードだが、、、、
Foo::Bar型のメンバFoo::yが定義さえされておれば、Fooのインスタンスが無くても
sizeof(((Foo*)0)->y)
と書けばC言語で逝けるかもしれん…
スゲー気持ち悪いコードだが、、、、
954デフォルトの名無しさん
2019/12/15(日) 21:46:34.52ID:PfQY9kAx >>951
あくまでコンパイル時の型で決まるだけだから要注意
例えば
class A;
class B : public A;
A* p = new B();
std::shared_ptr<A> a(p);
これだとBのデストラクタは呼ばれない
あくまでコンパイル時の型で決まるだけだから要注意
例えば
class A;
class B : public A;
A* p = new B();
std::shared_ptr<A> a(p);
これだとBのデストラクタは呼ばれない
955デフォルトの名無しさん
2019/12/15(日) 21:48:17.68ID:5sPbacoo なんでそんな中途半端な機能を
わざわざコストをかけて入れたんだろう
わざわざコストをかけて入れたんだろう
956デフォルトの名無しさん
2019/12/15(日) 21:49:32.31ID:5sPbacoo やむを得ず
なんだろうけど
なんだろうけど
957デフォルトの名無しさん
2019/12/15(日) 21:51:55.29ID:PfQY9kAx958デフォルトの名無しさん
2019/12/15(日) 22:05:12.60ID:TeOOTcIs type erasureと相性悪いんだっけ
959はちみつ餃子 ◆8X2XSCHEME
2019/12/15(日) 22:15:04.90ID:jthcUe0A >>943
思い出した。
gcc や clang の拡張で良ければ複文が式になる。
だいぶん昔からある機能。
#include <vector>
#include <iostream>
int main() {
std::vector<int> foo(({int i; for(i=0; i<3; i++); i;}));
std::cout << foo.size() << std::endl;
return 0;
}
思い出した。
gcc や clang の拡張で良ければ複文が式になる。
だいぶん昔からある機能。
#include <vector>
#include <iostream>
int main() {
std::vector<int> foo(({int i; for(i=0; i<3; i++); i;}));
std::cout << foo.size() << std::endl;
return 0;
}
>>944,945,948,959
コメントありがとうございます!
>>944,959
まずgcc拡張
>SieveDerived(int n) : Sieve<T>(({int r; while((r = index(n)) == 0) n--; r;})) { } /* HERE!! */
で問題なく動作しました
すでにgcc拡張で存在するところからみて、私の希望はあながち無謀かつ無稽なものではないことを知りほっとしました
次にラムダ式で定義して即評価する方法がみつかりました
>SieveDerived(int n) : Sieve<T>([](int n)->int{int r; while ((r = index(n)) == 0) n--; return r;}(n)) { } /* HERE!! */
これがやりたかった!とても満足しています、ありがとうございました!
今までは関数オブジェクトの糖衣構文としてしかみていなかったラムダ式を、自分の希望にあわせて(あるいはねじまげてでも)採用し、表現できるようになったのは一歩理解が深まったかと考えています
>>948
>初期化リストの中にそんなごちゃごちゃしたこと書きたい?
クラスのメソッド=メンバ関数には、クラスの提供する機能として独立性の高いもの、少なくとも二箇所で同じような処理がダブっているもの、あるいは主観的には「lemma」として成り立つものを書きたいと考えていました
一箇所でしか使わないものでも lemma 性があるのならば private メソッドとして書くのもありかと思っていますが、今回の場合は、他におなじような処理をおこなっている場所はなく、かといってメソッドとして立てるほどのことでもないので、
複数個所からコールできるメソッドにはしたくなかった、という主観がありました、そういう性質の記述ならば初期化リストにごちゃごちゃ書くのもありかと、読み手には他からコールされ得ないことが自明である点からしても
https://ideone.com/y3ROXS
コメントありがとうございます!
>>944,959
まずgcc拡張
>SieveDerived(int n) : Sieve<T>(({int r; while((r = index(n)) == 0) n--; r;})) { } /* HERE!! */
で問題なく動作しました
すでにgcc拡張で存在するところからみて、私の希望はあながち無謀かつ無稽なものではないことを知りほっとしました
次にラムダ式で定義して即評価する方法がみつかりました
>SieveDerived(int n) : Sieve<T>([](int n)->int{int r; while ((r = index(n)) == 0) n--; return r;}(n)) { } /* HERE!! */
これがやりたかった!とても満足しています、ありがとうございました!
今までは関数オブジェクトの糖衣構文としてしかみていなかったラムダ式を、自分の希望にあわせて(あるいはねじまげてでも)採用し、表現できるようになったのは一歩理解が深まったかと考えています
>>948
>初期化リストの中にそんなごちゃごちゃしたこと書きたい?
クラスのメソッド=メンバ関数には、クラスの提供する機能として独立性の高いもの、少なくとも二箇所で同じような処理がダブっているもの、あるいは主観的には「lemma」として成り立つものを書きたいと考えていました
一箇所でしか使わないものでも lemma 性があるのならば private メソッドとして書くのもありかと思っていますが、今回の場合は、他におなじような処理をおこなっている場所はなく、かといってメソッドとして立てるほどのことでもないので、
複数個所からコールできるメソッドにはしたくなかった、という主観がありました、そういう性質の記述ならば初期化リストにごちゃごちゃ書くのもありかと、読み手には他からコールされ得ないことが自明である点からしても
https://ideone.com/y3ROXS
961デフォルトの名無しさん
2019/12/16(月) 20:14:24.13ID:89loOkbp まあこういう自己満は通過儀礼だよな
962デフォルトの名無しさん
2019/12/16(月) 21:46:21.90ID:kSgVv2yp lambdaの即時評価はjsだと多用されているイメージ
ブロックスコープないからね
ブロックスコープないからね
963はちみつ餃子 ◆8X2XSCHEME
2019/12/17(火) 00:52:53.01ID:0JRJucIS964デフォルトの名無しさん
2019/12/17(火) 03:23:09.50ID:JQ5aWxOy プライベートメンバの単体テストってみんなどうしてるのかな。
965デフォルトの名無しさん
2019/12/17(火) 03:30:02.23ID:nsTCJN+n #define private public
966デフォルトの名無しさん
2019/12/17(火) 03:58:13.47ID:KUtZUPl9 #if 0
friend test;
#endif
friend test;
#endif
967デフォルトの名無しさん
2019/12/17(火) 07:08:07.08ID:KzMqUd+t #ifndef NDEBUG
friend struct test;
#endif
friend struct test;
#endif
968デフォルトの名無しさん
2019/12/17(火) 07:46:15.26ID:wpWnXFFo 闇言語
969デフォルトの名無しさん
2019/12/17(火) 11:20:07.09ID:dc1/89bE namespace Method{ namespace Detail {
template<typename ReturnType, typename ... ArgTypes> struct MethodRegister{};
} }
// 文字列で呼び出すための関数を登録するためのマクロ
#define METHOD_REGISTER_WITH_NAME( NAME, FUNC, RETURNTYPE, ... ) \
namespace Method { namespace Detail { \
template<> struct MethodRegister<RETURNTYPE, __VA_ARGS__> { \
using Functional = std::function<RETURNTYPE(__VA_ARGS__)>; \
MethodRegister() { \
MethodContainer::GetInstance().Register<RETURNTYPE, __VA_ARGS__>( #FUNC, Functional( static_cast<RETURNTYPE(*)( __VA_ARGS__ )>( FUNC ) ) ); \
} \
~MethodRegister() { \
MethodContainer::GetInstance().Unregister( #FUNC ); \
} \
}; \
static MethodRegister<RETURNTYPE, __VA_ARGS__> sMethodRegister##FUNC; \
} }
void HOGE(){
std::cout << "Hello World!" << std::endl;
}
void HOGE( std::string text ){
std::cout << text << std::endl;
}
METHOD_REGISTER_METHOD( HOGE, void );
METHOD_REGISTER_METHOD( HOGE, void, std::string );
こういった形で関数を登録する用のクラスを生成し、変数として生成して管理の自動化を行いたいのですが、
関数のオーバーロードを対応しようとした所、クラスの再定義や変数の再定義、管理クラスへの重複登録等
多数の問題が出て詰まってしまいました。
こういった問題を対処するにはどうすればよいのでしょうか?
template<typename ReturnType, typename ... ArgTypes> struct MethodRegister{};
} }
// 文字列で呼び出すための関数を登録するためのマクロ
#define METHOD_REGISTER_WITH_NAME( NAME, FUNC, RETURNTYPE, ... ) \
namespace Method { namespace Detail { \
template<> struct MethodRegister<RETURNTYPE, __VA_ARGS__> { \
using Functional = std::function<RETURNTYPE(__VA_ARGS__)>; \
MethodRegister() { \
MethodContainer::GetInstance().Register<RETURNTYPE, __VA_ARGS__>( #FUNC, Functional( static_cast<RETURNTYPE(*)( __VA_ARGS__ )>( FUNC ) ) ); \
} \
~MethodRegister() { \
MethodContainer::GetInstance().Unregister( #FUNC ); \
} \
}; \
static MethodRegister<RETURNTYPE, __VA_ARGS__> sMethodRegister##FUNC; \
} }
void HOGE(){
std::cout << "Hello World!" << std::endl;
}
void HOGE( std::string text ){
std::cout << text << std::endl;
}
METHOD_REGISTER_METHOD( HOGE, void );
METHOD_REGISTER_METHOD( HOGE, void, std::string );
こういった形で関数を登録する用のクラスを生成し、変数として生成して管理の自動化を行いたいのですが、
関数のオーバーロードを対応しようとした所、クラスの再定義や変数の再定義、管理クラスへの重複登録等
多数の問題が出て詰まってしまいました。
こういった問題を対処するにはどうすればよいのでしょうか?
970デフォルトの名無しさん
2019/12/17(火) 11:28:10.65ID:rApV4krM BOOST
971デフォルトの名無しさん
2019/12/17(火) 12:23:52.67ID:lfJGbKnI972デフォルトの名無しさん
2019/12/17(火) 18:42:08.59ID:iYSb7MEE このへんがいいんでないの。
https://srz-zumix.blogspot.com/2015/06/c-private.html
https://srz-zumix.blogspot.com/2015/06/c-private.html
974デフォルトの名無しさん
2019/12/17(火) 21:19:56.70ID:r3fDxRx7 プライベートメンバをテストしたくなったらそのロジックのみを非メンバ関数に切り出してテストしてるな。
まぁ、特に支障がなければ単純にpublicにするだけの時もあるけど。
まぁ、特に支障がなければ単純にpublicにするだけの時もあるけど。
975デフォルトの名無しさん
2019/12/17(火) 21:45:39.29ID:HvtzVY9o templateでアクセスすると合法的にプライベートメンバにアクセスできる
976デフォルトの名無しさん
2019/12/17(火) 21:49:21.80ID:iYSb7MEE そんな糞な方法でテストなんかしたくねー。
977デフォルトの名無しさん
2019/12/18(水) 01:14:03.75ID:zSYbFuJ0 テストなんかお綺麗にする必要が無い
978デフォルトの名無しさん
2019/12/18(水) 06:18:11.97ID:BbfJ/y// テストのテストが必要になるような意味のわからないテストコードはアウト
テストコードは実行せずに人が読んで理解できなければいけない
テストコードは実行せずに人が読んで理解できなければいけない
979デフォルトの名無しさん
2019/12/18(水) 07:25:56.60ID:ksLRDXXy >>978
どんな感じか見せていただけないでしょうか。
どんな感じか見せていただけないでしょうか。
980デフォルトの名無しさん
2019/12/18(水) 07:42:51.80ID:PEFQbiIG981デフォルトの名無しさん
2019/12/18(水) 07:48:17.80ID:uFDqtnkl >>979
例えばテストコードの中にループや条件分岐があるようなものはアウト
例えばテストコードの中にループや条件分岐があるようなものはアウト
982デフォルトの名無しさん
2019/12/18(水) 11:33:15.65ID:ksLRDXXy ループは許してもらえませんか?
データの並びとか検査したいんで。
条件分岐はたぶんないと思います。
データの並びとか検査したいんで。
条件分岐はたぶんないと思います。
983デフォルトの名無しさん
2019/12/18(水) 12:41:59.93ID:pXzQg2xI 原理主義にすぐ染まるやつw
ご苦労様
ご苦労様
984デフォルトの名無しさん
2019/12/18(水) 13:15:29.66ID:iEIErwam テスト用にいろんな複雑なテストも入れてるけど
まずいのか?
まずいのか?
985デフォルトの名無しさん
2019/12/18(水) 13:22:47.07ID:AjekT9H/ Debugビルドしたら遅すぎて検証できなくて詰んだ
986デフォルトの名無しさん
2019/12/18(水) 13:34:17.71ID:YQOjezK4 典型的な糞テストは、テスト対象の出力がハッシュや現在時刻などのような予測しづらいものに依存している場合に、
テストコードにテスト対象自体のロジックと似たものを書いてしまっているケースだな
原則的には、期待する出力は全てハードコードするのが正しい
難しいなら一度試しにテスト対象を実行して目視テストし、その結果をハードコードしたほうがマシ
テストコードにテスト対象自体のロジックと似たものを書いてしまっているケースだな
原則的には、期待する出力は全てハードコードするのが正しい
難しいなら一度試しにテスト対象を実行して目視テストし、その結果をハードコードしたほうがマシ
987デフォルトの名無しさん
2019/12/18(水) 13:39:53.25ID:iEIErwam メカが絡むリアルタイム処理でそんな事出来るかよ
988デフォルトの名無しさん
2019/12/18(水) 15:13:38.33ID:uFDqtnkl >>982
Parameterized Testsがあれば十分じゃね?
Parameterized Testsがあれば十分じゃね?
989デフォルトの名無しさん
2019/12/18(水) 15:16:04.78ID:uFDqtnkl990デフォルトの名無しさん
2019/12/18(水) 15:38:06.38ID:AmwvkO78 次スレは
991デフォルトの名無しさん
2019/12/18(水) 16:59:26.54ID:ksLRDXXy よ。
992デフォルトの名無しさん
2019/12/18(水) 17:57:22.30ID:uFDqtnkl993デフォルトの名無しさん
2019/12/18(水) 20:28:47.90ID:CdPazUY7994デフォルトの名無しさん
2019/12/18(水) 21:11:16.67ID:LM1drZI+ クラスとかの勉強入る前にC言語でしっかり文字列処理出来るようになったほうがいい?
995蟻人間 ◆T6xkBnTXz7B0
2019/12/18(水) 21:14:21.02ID:Zo1XP656 >>995
strcpyなんて古い関数は21世紀では使えないぜ。std::stringでOK.
strcpyなんて古い関数は21世紀では使えないぜ。std::stringでOK.
996デフォルトの名無しさん
2019/12/18(水) 21:14:35.04ID:uFDqtnkl C言語でしっかり文字列処理出来るようになったほうがいい? → いい
C++でC言語の文字列処理する? → しない
C++でC言語の文字列処理する? → しない
997デフォルトの名無しさん
2019/12/18(水) 21:16:04.08ID:aoz4SWmd >>987
逆にそういう不確定な部分とロジック部分を切り分けるのが単体テストの目的でもある。
逆にそういう不確定な部分とロジック部分を切り分けるのが単体テストの目的でもある。
998デフォルトの名無しさん
2019/12/18(水) 23:15:57.41ID:cF9WM4jz999デフォルトの名無しさん
2019/12/19(木) 00:00:58.14ID:zX6m0cqE 単体テストはどんだけ単純でわかりやすいコードでテストパターンを網羅するかが肝
Google TestとかTest::MoreとかJUnit使ったらワカル
Google TestとかTest::MoreとかJUnit使ったらワカル
1000蟻人間 ◆T6xkBnTXz7B0
2019/12/19(木) 00:08:57.93ID:r6T/W91o あれっ?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 41日 12時間 33分 22秒
新しいスレッドを立ててください。
life time: 41日 12時間 33分 22秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【STARTO ENTERTAINMENT】timelesz篠塚大輝『大きな古時計』替え歌一発ギャグ「今はもう動かない おじいさんにトドメ~♪」が波紋 [Ailuropoda melanoleuca★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- ラーメン屋「日高屋が安いせいで客が来ない!日高屋はもっと値上げしろ!」 [449534113]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【悲報】オックスフォード大学「日本で影響力のある人」ランキングを公表。1位西村博之氏、2位堀江貴文氏、3位高橋洋一氏 [566475398]
