C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part142
https://mevius.5ch.net/test/read.cgi/tech/1554124625/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://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/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
C++相談室 part143
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ)
2019/06/15(土) 13:51:53.57ID:DKQ0QQLH02デフォルトの名無しさん (ワッチョイ)
2019/06/15(土) 16:03:43.75ID:yU4M2XeV0 すっぱい葡萄
ttps://ja.wikipedia.org/wiki/%E3%81%99%E3%81%A3%E3%81%B1%E3%81%84%E8%91%A1%E8%90%84
自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
それをあきらめの理由として納得し、心の平安を得ようとするものである。
フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。
ttps://ja.wikipedia.org/wiki/%E3%81%99%E3%81%A3%E3%81%B1%E3%81%84%E8%91%A1%E8%90%84
自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
それをあきらめの理由として納得し、心の平安を得ようとするものである。
フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。
3デフォルトの名無しさん (ワッチョイ)
2019/06/16(日) 12:29:06.82ID:yEr4r4hL0 ttps://qiita.com/hirokidaichi/items/adccebb41f77eaa6132f
>Paul曰く:
>人は、その人のアイデンティティの一部となっている事について、実りある議論はできない。
>これすなわち、自分のホームに近い話題ほど論理よりも感情が優先されてしまうということ。
>Kathy曰く:
>他の人が夢中になるほど、そのプロダクトやブランドへの憎しみは強くなる
>これはつまり、彼らはクールエイドを飲んでしまってるということだ。
>Paul曰く:
>人は、その人のアイデンティティの一部となっている事について、実りある議論はできない。
>これすなわち、自分のホームに近い話題ほど論理よりも感情が優先されてしまうということ。
>Kathy曰く:
>他の人が夢中になるほど、そのプロダクトやブランドへの憎しみは強くなる
>これはつまり、彼らはクールエイドを飲んでしまってるということだ。
4デフォルトの名無しさん (ワッチョイ)
2019/06/16(日) 16:55:32.05ID:NJ2skO190 質問です。
https://dotup.org/uploda/dotup.org1873815.zip
ここまで作ってデバッグしようとしたらシェアードポインタが継承扱ってくれない感じになった。
2017ではできていた気がしたけど、なぜですか?
https://dotup.org/uploda/dotup.org1873815.zip
ここまで作ってデバッグしようとしたらシェアードポインタが継承扱ってくれない感じになった。
2017ではできていた気がしたけど、なぜですか?
5デフォルトの名無しさん (ワッチョイ)
2019/06/16(日) 17:32:43.45ID:/ZY8dphZ0 thinkFirst
ThinkFirst
オーバーライドするときはoverrideつけたら?
ThinkFirst
オーバーライドするときはoverrideつけたら?
6デフォルトの名無しさん (ワッチョイ)
2019/06/16(日) 17:36:44.99ID:NJ2skO1908デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 00:12:48.76ID:oaY4OAXG09デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 00:55:04.38ID:qMa7jD650 getterは読み取り専用のメンバを作りたいときに必要
setterはpimpl化したときに必要
setterはpimpl化したときに必要
10デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 01:18:11.69ID:a5RA1dZMa const publicがあればいいのか
11デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 09:36:57.72ID:FBMbqlks0 getterならread only修飾子を導入して
コンパイル時に書きこまれないことを保証すればいい
かんたんだろ
コンパイル時に書きこまれないことを保証すればいい
かんたんだろ
12デフォルトの名無しさん (ブーイモ)
2019/06/17(月) 09:43:06.17ID:NDzOpmZcM mutable なオブジェクトだとしても、setter を付けるメンバー変数は少ないな。
3つのうち1つぐらいの感じ。
3つのうち1つぐらいの感じ。
13デフォルトの名無しさん (スップ)
2019/06/17(月) 14:59:51.76ID:otIzoLhyd セマンティクス上で重要なメンバ関数の区別は、オブジェクトの内部状態を変更するものか(非constメンバ関数)と、変更せずに内容を見るためのものか(constメンバ関数)の違いであって
その具体的な処理内容が特定のprivateデータメンバのgetterかsetterかなんて観点は大して重要じゃないし、そんなものに固執して設計を考えるのは馬鹿馬鹿しいし危険だと思う
その具体的な処理内容が特定のprivateデータメンバのgetterかsetterかなんて観点は大して重要じゃないし、そんなものに固執して設計を考えるのは馬鹿馬鹿しいし危険だと思う
14デフォルトの名無しさん (ブーイモ)
2019/06/17(月) 15:13:59.52ID:NDzOpmZcM >>13
「状態を変更」の方はまあいいけど「内容を見る」という表現は狭すぎないか。
「状態を変更」の方はまあいいけど「内容を見る」という表現は狭すぎないか。
15デフォルトの名無しさん (スップ)
2019/06/17(月) 15:20:09.82ID:otIzoLhyd そうね引数を加工するとか他のオブジェクトへのプロキシになるとか色々あるね
getterのイメージに引きずられすぎちゃった
getterのイメージに引きずられすぎちゃった
16デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 15:54:46.05ID:cgazGIue0 コンテナのset, map, multi_mapはconst_iteratorじゃないと正しくforループを回せないって制限あった気がする。どうだっけ?
17デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 16:13:33.58ID:ikLTlFyV0 ペアのインデックサがわを弄ったら、ソートぶっこまれて順番が狂う感じの奴かい?
18デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 17:06:03.61ID:xa2u5Y3Ua 構造体のメンバ変数をまとめて以下のように文字列でアクセスできるようにしたいのですが、
構造体のポインタを以下のpointerに一括で割り当てる方法はないでしょうか?
Params {
int param1, param2;
} params;
std::map<std::string, void*> pointer;
// 同じ操作
params.param1 = 1;
*static_cast<int*>(pointer["param1"]) = 1;
構造体のポインタを以下のpointerに一括で割り当てる方法はないでしょうか?
Params {
int param1, param2;
} params;
std::map<std::string, void*> pointer;
// 同じ操作
params.param1 = 1;
*static_cast<int*>(pointer["param1"]) = 1;
19デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 17:11:32.29ID:xa2u5Y3Ua Paramsは複数の型のメンバ変数を持ちますがpointerにtypeidを合わせて持たせることで使用時の問題は解決できます
20デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 17:11:48.82ID:cgazGIue0 >>18
日本語でok
日本語でok
21デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 17:15:04.87ID:xa2u5Y3Ua 以下のように一つずつ割り当てるのではなく、構造体に含まれるメンバの名前とポインタをイテレートして割り当てたいのです
pointer["param1"] = ¶ms.param1;
pointer["param2"] = ¶ms.param2;
pointer["param1"] = ¶ms.param1;
pointer["param2"] = ¶ms.param2;
22デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 17:26:50.49ID:FBMbqlks0 リフレクションすれば早い
そうでしょう?
そうでしょう?
23デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 18:55:58.16ID:8WZxEIm50 そこでプロパティ型ですよ。
24デフォルトの名無しさん (ブーイモ)
2019/06/17(月) 21:01:33.96ID:kTiNst+JM 中身が長ったらしい(と言っても200行程度)ラムダ式ってやめたほうがいいですか?
一般的には普通の関数にするんでしょうがヘッダーに書きたくないんです
一般的には普通の関数にするんでしょうがヘッダーに書きたくないんです
25デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 21:09:43.46ID:Xk2fRyfla その関数に名前がつけれないならいいんじゃない
26デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 21:20:42.23ID:qMa7jD650 ヘッダーに書きたくないって…、cpp内で関数を宣言/定義してもいいんだぞ
27デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 22:03:41.11ID:cgazGIue0 ラムダ式の存在意義は、コンパイラではなく人間にとっての可読性の改善にある。
どうも可読性が低いなぁと思ったら、ラムダ式をやめるべきだね。
どうも可読性が低いなぁと思ったら、ラムダ式をやめるべきだね。
28デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:09:14.61ID:W17QvXl10 >その関数に名前がつけれないならいいんじゃない
完全にダメなパターンだろ。。
完全にダメなパターンだろ。。
29デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:37:37.03ID:ZwasbMRy0 カッコよくラムダで比較関数を書いたものの、あちこちで同じ比較関数が必要になって結局関数オブジェクトを作る不毛な作業
30デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:40:11.50ID:D3j4bHhT0 >>21
c++使わないのが正解
c++使わないのが正解
31デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:44:17.67ID:DTomrwq60 >>29
別にいいじゃない
別にいいじゃない
32デフォルトの名無しさん (アウアウウー)
2019/06/17(月) 23:44:34.66ID:DMQyXySba >>29 わざわざ関数オブジェクト作成するくらいならラムダをauto変数にいれるのはどうですか?
33デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:45:22.46ID:W17QvXl10 クロージャの利点っていうのは
クラスとメソッドに比べたらアクセスするデータのスコープがわかりやすく渡せるってことだが
c++だと同時にデータが処分されるタイミングを考えなきゃならなくて逆にむずい。
クラスとメソッドに比べたらアクセスするデータのスコープがわかりやすく渡せるってことだが
c++だと同時にデータが処分されるタイミングを考えなきゃならなくて逆にむずい。
34デフォルトの名無しさん (ワッチョイ)
2019/06/17(月) 23:49:52.62ID:x+yzwFNm0 大抵の言語でループ変数をキャプチャするlambdaを配列に入れるとかするとはまるよね
c++の場合コピーキャプチャ使えばすむけど、キャプチャ方式指定できない言語だと結構面倒なことになる
c++の場合コピーキャプチャ使えばすむけど、キャプチャ方式指定できない言語だと結構面倒なことになる
35デフォルトの名無しさん (ブーイモ)
2019/06/17(月) 23:56:31.71ID:kTiNst+JM36デフォルトの名無しさん (ワッチョイ)
2019/06/18(火) 03:06:02.01ID:0f68xvDd0 >>22
リフレクションっていうんですね
このサイトのリフレクションの実装を超簡易的に真似してみました
結局一つずつ追加することになりますが扱いやすさは悪くないはず…
http://motchy-usk.blogspot.com/2010/07/blog-post.html
https://ideone.com/zc6oHM
リフレクションっていうんですね
このサイトのリフレクションの実装を超簡易的に真似してみました
結局一つずつ追加することになりますが扱いやすさは悪くないはず…
http://motchy-usk.blogspot.com/2010/07/blog-post.html
https://ideone.com/zc6oHM
37デフォルトの名無しさん (ワッチョイ)
2019/06/18(火) 06:13:56.61ID:3nOE2mBA0 プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.5ch.net/test/read.cgi/tech/1559872586/
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
38デフォルトの名無しさん (ワッチョイ)
2019/06/18(火) 08:12:45.67ID:Y0myl0p20 BoostのSerializationはいつ標準ライブラリに入るの?
もしかしてあまり使われてないの?
もしかしてあまり使われてないの?
39デフォルトの名無しさん (ワッチョイ)
2019/06/18(火) 19:32:46.11ID:lBFdU5Sd0 現場で困った早引きできるいい本ってないですかねぇ。今度の現場が初のC++でして
40デフォルトの名無しさん (ワッチョイ)
2019/06/18(火) 20:34:17.73ID:DSQg2zLR041デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 02:12:33.91ID:/zwjJHhK0 そこでマクロですよ。
42デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 02:37:43.11ID:0yjsH3hg0 >>39
cpprefjp
cpprefjp
43デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 02:46:18.73ID:8qBvJS/J044デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 02:46:53.30ID:G/RPQnNp0 言語仕様系なら「C++11/14 コア言語」??
45デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 02:49:21.59ID:G/RPQnNp0 オートとレジスタが死んだこと?
46デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 03:19:29.65ID:0DgdOBcz0 >>43
GCCのバージョンアップでカスタマイズしやすくなった、とかじゃないの?
GCCのバージョンアップでカスタマイズしやすくなった、とかじゃないの?
47デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 07:16:37.76ID:h4x/aIUc0 >>43
原文は "The pace of compiler development has increased with the recent updates to C++, ..." で、
C++03時代はバグ修正や最適化の向上がメインだったコンパイラ開発が、C++11以降は
大きな機能追加も伴う規格の改定に追いつくためにペースアップした、という感じかと。
改めて訳すとしたら「最近のC++のアップデートに伴ってコンパイラ開発のペースは増しており、〜」ぐらいかな。
原文は "The pace of compiler development has increased with the recent updates to C++, ..." で、
C++03時代はバグ修正や最適化の向上がメインだったコンパイラ開発が、C++11以降は
大きな機能追加も伴う規格の改定に追いつくためにペースアップした、という感じかと。
改めて訳すとしたら「最近のC++のアップデートに伴ってコンパイラ開発のペースは増しており、〜」ぐらいかな。
48デフォルトの名無しさん (アウアウカー)
2019/06/19(水) 12:07:30.39ID:52Ph4xCha49デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 13:56:12.54ID:20CU6qie0 原文なんて読む必要あるの?
50デフォルトの名無しさん (ラクッペ)
2019/06/19(水) 14:50:44.89ID:mPuTh16gM 実務で原文読んでたら、一生原文読むだけで終わりそう
51デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 15:09:23.72ID:hDOeQD4v0 大部分の軍人は銃や刀剣の作り方について深く知る必要はない。
52デフォルトの名無しさん (ブーイモ)
2019/06/19(水) 16:36:38.81ID:yMqJGQdwM バカな日本語訳や要約を読んで首ひねる暇があれば原文読んだほうが早い
53デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 17:36:22.46ID:0yjsH3hg0 日本語と同じく速度で英語を読めるようになりたい
54デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 19:14:55.87ID:hDOeQD4v0 >>53
結局のところ、たくさんの単語を覚えるしかない。数は力だよ。
結局のところ、たくさんの単語を覚えるしかない。数は力だよ。
55デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 20:55:08.64ID:DQACirUv0 昔に比べれば英文なんてそこら中にあるんだから読めばいい。
56デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 21:04:53.64ID:0Op2NPvz0 引き籠りが毎日ひたすら英語版のwikipediaを読んでいたらいつのまにかとんでもない英語力が
57デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 23:14:25.37ID:hDOeQD4v0 昔は民主主義はどうのこうのとか洗脳じみたreaderしかなかったよな?
58デフォルトの名無しさん (ワッチョイ)
2019/06/19(水) 23:58:30.86ID:pr4rVpx+0 C++のスレッドや並行処理でこれ読んどけっていう資料や本などありますか?
pthreadはもう使いたくない
pthreadはもう使いたくない
59デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 00:00:20.59ID:nbok5ERN0 今時はstd::thread使えば済むんじゃね
60デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 00:11:04.17ID:lLho4HyI0 えーっと、終わりが明確なものは、std::asyncでスレッド投げればいいと思うよ。
61デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 00:35:57.46ID:984l1qct0 >>58
他の本はしらないが、「Effective Modern C++」には必要なことは書いてある、と思う。
他の本はしらないが、「Effective Modern C++」には必要なことは書いてある、と思う。
62デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 04:18:30.46ID:fuxDfWBK0 std::asyncって生まれた瞬間にdeprecated送りになってなかったっけ?
63デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 11:45:49.37ID:M/WWMkF90 std::asyncはダメなの?
64デフォルトの名無しさん (ブーイモ)
2019/06/20(木) 12:24:14.76ID:j9Uc7TedM >>62
なんか別のものと間違えてない?
なんか別のものと間違えてない?
65デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 14:54:38.04ID:bgVEzQPq0 11でのasyncの自動でjoinする仕様について
『致命的な問題でありasyncは実用にならない欠陥品。
破壊的変更になっても次の規格で修正すべき』
って声が(一部で)あったんよ(※表現は誇張しております)
『致命的な問題でありasyncは実用にならない欠陥品。
破壊的変更になっても次の規格で修正すべき』
って声が(一部で)あったんよ(※表現は誇張しております)
66デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 15:21:36.40ID:M/WWMkF90 std::async使ってみましたがstd::launch::async指定すると自動でjoinしますね
デストラクタで待ってるんですかね
std::launch::defferredを指定するとすぐ返ります
確かに微妙に使いにくいw
デストラクタで待ってるんですかね
std::launch::defferredを指定するとすぐ返ります
確かに微妙に使いにくいw
67デフォルトの名無しさん (ワントンキン)
2019/06/20(木) 15:52:17.95ID:lDaMx0VnM 実装依存だから環境によってはスレッド作成すらしてないかも知れない
68デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 16:18:06.15ID:lLho4HyI0 お約束ですね。
69デフォルトの名無しさん (ラクッペ)
2019/06/20(木) 17:57:10.96ID:BT0cBtynM rust使ったほうが楽
70デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 18:03:13.72ID:lLho4HyI0 コンセプトですよコンセプト。来年に期待しましょう。
unifide call syntaxもその後入ることに期待です。
関数チェインしたいんです!
と、唐突に宣伝を始めるなど。
unifide call syntaxもその後入ることに期待です。
関数チェインしたいんです!
と、唐突に宣伝を始めるなど。
71デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 19:15:02.26ID:EITLfG5y072デフォルトの名無しさん (ワッチョイ)
2019/06/20(木) 23:00:29.85ID:H2FAKrDC0 読み書き話すはできるが聞き取れねーんだけど・・・
73デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 00:28:19.29ID:5xL7WT2l0 読み書きは下手くそでも時間かかってもなんとか通じるからいいけど音声はGoogle翻訳に頼れないのがつら
74デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 00:32:02.14ID:5mFcIDLA0 Youtubeに音声自動翻訳字幕機能ほしいよねw
75デフォルトの名無しさん (ササクッテロ)
2019/06/21(金) 16:04:18.10ID:Vcgrp8ZVp 再帰を用いずに、
a0=0
an=( an-1×an-1 )+1
の1〜6を出せ
ってやつが全然できないので教えてください。
a0=0
an=( an-1×an-1 )+1
の1〜6を出せ
ってやつが全然できないので教えてください。
76デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 16:41:53.38ID:rC321OP20 意味わからん
77デフォルトの名無しさん (オイコラミネオ)
2019/06/21(金) 16:49:46.98ID:vf8hmAK4M 0からループ使えばいいだけじゃないの
78蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/06/21(金) 16:52:32.29ID:uFs7CW+50 >>75
#include <stdio.h>
int f(int n)
{
int i, a = 0;
for (i = 1; i <= n; ++i) a = a * a + 1;
return a;
}
int main(void)
{
int i;
for (i = 1; i <= 6; ++i) printf("a_%d: %d\n", i, f(i));
return 0;
}
#include <stdio.h>
int f(int n)
{
int i, a = 0;
for (i = 1; i <= n; ++i) a = a * a + 1;
return a;
}
int main(void)
{
int i;
for (i = 1; i <= 6; ++i) printf("a_%d: %d\n", i, f(i));
return 0;
}
79デフォルトの名無しさん (ドコグロ)
2019/06/21(金) 20:41:29.94ID:9XN8XoXIM80デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 21:07:41.81ID:G412ZpUw0 なんかの課題だろ
81デフォルトの名無しさん (アウアウエー)
2019/06/21(金) 21:12:24.28ID:o/bRPi0pa 平均値も出せないMath.hはクソだと思う理由
1.エクセル関数で簡単にできちゃう
2.電卓でもできることがプログラムになると煩雑になる
3.平均値を出すのにコードを書き換える手間など
1.エクセル関数で簡単にできちゃう
2.電卓でもできることがプログラムになると煩雑になる
3.平均値を出すのにコードを書き換える手間など
82デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 21:19:00.28ID:dWgEej/X0 平均値の計算は実は簡単ではない
83デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 21:21:02.30ID:rC321OP20 そもそもmath.hはC言語のライブラリ
84デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 21:29:06.50ID:5xL7WT2l0 そのエクセルの関数の機能や電卓ツールはmath.hを使って作られている
85デフォルトの名無しさん (ワッチョイ)
2019/06/21(金) 21:48:48.65ID:0JVOBbqs0 浮動小数甘く見過ぎ
86デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 15:16:07.71ID:ecTKxvDL0 C++コードをC++コンパイラでコンパイルするのと
CにトランスパイルしてCコンパイラでコンパイルするのと
どっちが性能良いんだろう?
トランスパイラの優秀さにもよりそうだが
CにトランスパイルしてCコンパイラでコンパイルするのと
どっちが性能良いんだろう?
トランスパイラの優秀さにもよりそうだが
87デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 15:35:26.46ID:XJUTErWD0 CがC++よりハイパフォーマンスという前提がありそうだが、そんなことはない
88デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 16:04:32.30ID:LOXx/aGE0 今時c言語のみのコンパイラなんて見かけないな
89デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 16:12:52.94ID:9zxAgsAB0 >>86
いったんトランスパイルを挟むと、C++の元のコードをCで表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。
トランスパイルの方が効率が上がる理由はないと思うよ。
いったんトランスパイルを挟むと、C++の元のコードをCで表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。
トランスパイルの方が効率が上がる理由はないと思うよ。
91デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 16:53:56.35ID:3PgdpjOh0 llvm
92デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 17:03:11.19ID:ecTKxvDL0 https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/cpp.html
C++がCに勝ってる項目があるんだけど信じがたい
C++がCに勝ってる項目があるんだけど信じがたい
93デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 17:16:00.48ID:ecTKxvDL0 https://gist.github.com/simonhf/de808e0f8240ef27dac655505c8bf30f#file-result-summary-txt
こっちだとJavaにすら負けてる
なんなんだろうねベンチマークって
こっちだとJavaにすら負けてる
なんなんだろうねベンチマークって
94デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 17:19:10.62ID:ecTKxvDL0 http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
どうやらC++はメモリの確保と解放にコストがかかるから
Javaはまとめて大量にヒープをもってプールして使ってくから
そこでJavaが勝利する場合があるらしい。
C++もメモリをプールしていちいち確保しないようにすればJavaより速くなる。
しかしいちいちそんな事やってられるか?
どうやらC++はメモリの確保と解放にコストがかかるから
Javaはまとめて大量にヒープをもってプールして使ってくから
そこでJavaが勝利する場合があるらしい。
C++もメモリをプールしていちいち確保しないようにすればJavaより速くなる。
しかしいちいちそんな事やってられるか?
95デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 17:20:50.35ID:VTgUFffK0 >>89
c++のままでないとできない最適化って何がある?
c++のままでないとできない最適化って何がある?
>>91
LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?
LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?
>>92
C++ の template は #define の親玉のようなものですから、qsort() とかの間接ポインタ渡しでなんとかするしかない C が不利な場合はあるとおもいますよ
C++ の template は #define の親玉のようなものですから、qsort() とかの間接ポインタ渡しでなんとかするしかない C が不利な場合はあるとおもいますよ
98デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 17:55:09.83ID:VTgUFffK0 あとconstexprで事前計算してるのもあるね
99デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 18:03:29.07ID:kVNYu7LP0 >>94
allocatorってまさにそのための仕組みなんだけど
allocatorってまさにそのための仕組みなんだけど
100デフォルトの名無しさん (アウアウウー)
2019/06/22(土) 18:48:22.39ID:MmmgKpwaa >>95
具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、
(最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。
具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、
(最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。
101デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 18:58:11.17ID:3PgdpjOh0 >>96
そちらこそllvmをまるで理解していないみたいですね
そちらこそllvmをまるで理解していないみたいですね
102デフォルトの名無しさん (ブーイモ)
2019/06/22(土) 19:04:53.83ID:cW7wMvLUM >>101
llvm が変換した IR を C コードに戻すことができるのですか?
llvm が変換した IR を C コードに戻すことができるのですか?
104デフォルトの名無しさん (ワッチョイ)
2019/06/22(土) 20:26:09.97ID:/7bwQJ5j0 (1) コンストラクタの呼び出し回数削減最適化
(2) クラスが絡むmemory ariasing
(1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ
(2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると
クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ
な印象
想像なので詳しくは知らん
(2) クラスが絡むmemory ariasing
(1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ
(2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると
クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ
な印象
想像なので詳しくは知らん
105デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 01:02:56.59ID:PTFzQo+G0 初歩的な質問で申し訳ないんですけどcinってどういうもんなんでしょうか
cpprefjp見ると標準入力に対する入力ストリームオブジェクトなんて書いてありますけど
iostream.hで定義されてる「なにか」だとは思うんですがどういう型のものなのかとかそういえば全然知らずに使ってたなって
よろしくおねがいします
cpprefjp見ると標準入力に対する入力ストリームオブジェクトなんて書いてありますけど
iostream.hで定義されてる「なにか」だとは思うんですがどういう型のものなのかとかそういえば全然知らずに使ってたなって
よろしくおねがいします
106デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 01:04:06.42ID:tL1CwC/m0 console input
107蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/06/23(日) 01:50:58.01ID:DI9+Pcki0108デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 02:02:56.98ID:7pjzMc7c0 const inputかと思って親近感がわいていたのに…
109デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 06:15:35.61ID:6LMXkq2m0 じゃあCトランスパイラのNimはC++より遅いのかな?
https://github.com/kostya/benchmarks
ぐぐったらマジでそうだった
高水準言語から直接コンパイルした方が速いんだな
https://github.com/kostya/benchmarks
ぐぐったらマジでそうだった
高水準言語から直接コンパイルした方が速いんだな
110デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 06:35:12.06ID:6LMXkq2m0 C++でクロスプラットフォームなコードを書くのはどれくらい難しい?
Nimはクロスプラットフォームを主張してるんだけどどっちがいいんだろう?
Nimはクロスプラットフォームを主張してるんだけどどっちがいいんだろう?
111デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 06:38:35.47ID:xbroTRmV0 Qtで書くだけ
112デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 07:05:57.27ID:6LMXkq2m0 WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
113デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 09:01:51.47ID:Xq17DW5L0 C++がそこまで整備されていなかったから
OSといえばC言語で書くのが当たり前だから
そもそもC言語で十分だから
Linus「C++はレベルの低い奴が使うものだから」
OSといえばC言語で書くのが当たり前だから
そもそもC言語で十分だから
Linus「C++はレベルの低い奴が使うものだから」
114デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 09:11:04.02ID:p0iHiqR80 >WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
何回質問されたことだろうか。
何回質問されたことだろうか。
115デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 10:55:33.78ID:6LMXkq2m0 OSじゃなくて組み込みでも大部分Cでしょ?
なんで?
なんで?
116デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 10:57:16.59ID:6LMXkq2m0 https://news.mynavi.jp/article/20170126-a093/
>組み込みシステム向けプログラミング言語の中で「一番好きな言語」としても「C」(29.1%)を選んだ人が最も多く、これに「Microsoft Visual Basic」(16.8%)、「C++」(15.3%)が続いた。
>組み込みシステム向けプログラミング言語の中で「一番好きな言語」としても「C」(29.1%)を選んだ人が最も多く、これに「Microsoft Visual Basic」(16.8%)、「C++」(15.3%)が続いた。
117デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 11:17:45.87ID:6LMXkq2m0 Linus TorvaldsのC++批判は正しかったのか
https://developers.srad.jp/story/15/03/13/2328200/
C++の最大の問題は学習が難しい事か。
たぶんC++を学ぶ時間でCとJava両方学べるね。
https://developers.srad.jp/story/15/03/13/2328200/
C++の最大の問題は学習が難しい事か。
たぶんC++を学ぶ時間でCとJava両方学べるね。
118デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 11:20:59.77ID:JKCTeXCU0 超堅牢に作らないといけないから、
見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか
ヘッダーに実装書き散らしてるのよくないね
OSはバイナリ境界意識しないといけないし
まあどのみち標準ライブラリは使えないけど
見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか
ヘッダーに実装書き散らしてるのよくないね
OSはバイナリ境界意識しないといけないし
まあどのみち標準ライブラリは使えないけど
119デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 11:28:01.94ID:6GXr3JQp0 最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
120デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 11:39:08.67ID:4lSN7b3Y0 https://nlab.itmedia.co.jp/nl/articles/1902/19/news078.html
人の顔を生成するaiはどうやって作れますか?
人の顔を生成するaiはどうやって作れますか?
121デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 11:39:50.16ID:Xq17DW5L0 >>115
各ベンダーがサポートするにはC言語がちょうどいい規模だから
各ベンダーがサポートするにはC言語がちょうどいい規模だから
>>112
C++ のデフォでのマングリングが外部結合(リンク)を阻害するから、に一票
C++ のデフォでのマングリングが外部結合(リンク)を阻害するから、に一票
123デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 12:09:47.82ID:LchWS7uN0 ちがう
ちがうなぁ
ポインタがあって適度に奥が深いから、だ
ちがうなぁ
ポインタがあって適度に奥が深いから、だ
124デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 12:22:24.97ID:BQwXISYN0 メモリの制御が難しいからじゃね
最近やっと標準でまともなメモリ管理の仕組みを作り込めるができるようになったくらいだし
最近やっと標準でまともなメモリ管理の仕組みを作り込めるができるようになったくらいだし
125デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 14:34:24.36ID:hhhlIxdX0 昔からメモリ制御なんてCと同じことはできるだろ
126デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 14:56:33.46ID:WUJS/EaT0 今のC++なら十分使えるよね
継承やSTL、shared_ptrみたいなことをCで実装してるわけで
それを考えたらC++で良い
継承やSTL、shared_ptrみたいなことをCで実装してるわけで
それを考えたらC++で良い
127デフォルトの名無しさん (アウアウウー)
2019/06/23(日) 16:01:29.78ID:EoSayXaXa プログラムの一部にでもRTTIを使用した部分があるとプログラム全体のパフォーマンスが低下する?
128デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 16:37:25.79ID:p0iHiqR80 まあc++でちゃんとしたもの組もうと思ったらデストラクタをしっかり用意するってのが
大事なわけだが、かなりいろんな状況に対応したものにしないとまともに使い物にならん。
これはメタプロバカが思ってるほど難易度は低くない。
大事なわけだが、かなりいろんな状況に対応したものにしないとまともに使い物にならん。
これはメタプロバカが思ってるほど難易度は低くない。
129デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 16:59:21.61ID:7M38Ae5l0130デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 17:38:56.55ID:hhhlIxdX0 自前でデストラクタ書くなよ
131デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 18:20:15.96ID:xbroTRmV0 えっ
132デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 18:29:28.72ID:BQwXISYN0 ちゃんと例外を投げないデストラクタを書くんだぞ
fcloseの失敗はもみ消せ
どうせ回復などできない
fcloseの失敗はもみ消せ
どうせ回復などできない
133デフォルトの名無しさん (アウアウウー)
2019/06/23(日) 21:01:47.41ID:EoSayXaXa134デフォルトの名無しさん (ワッチョイ)
2019/06/23(日) 21:13:15.69ID:PTFzQo+G0 >>107
えーっとcinってのはistream型のオブジェクトってことでいいんですかね
externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね
えーっとcinってのはistream型のオブジェクトってことでいいんですかね
externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね
135デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 07:55:10.22ID:6Zff8TGS0 1.思考停止してそのまま使う
2.外界から齎される無限長の情報列がストリームである、と理解する
好きな方を選べ
2.外界から齎される無限長の情報列がストリームである、と理解する
好きな方を選べ
136デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 15:40:31.96ID:DnOtpTuq0 何でC++使ってる職場少ないのにプログラム板で上位なの?
137デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 15:56:59.67ID:OO73LhBR0 すく・・・ない・・・?
138デフォルトの名無しさん (ワンミングク)
2019/06/24(月) 16:10:16.23ID:vRXjoyqNM Web業界の人とかなんだろ
139デフォルトの名無しさん (オッペケ)
2019/06/24(月) 17:32:13.27ID:i4YKAGQ3r 「C++実践プログラミング」って良い本?
140デフォルトの名無しさん (スフッ)
2019/06/24(月) 18:02:59.78ID:HUc+KEird 実は多いだろ?
社内に囲われているだけで
社内に囲われているだけで
141デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 22:05:46.06ID:qyAEE2sQ0 C++プライマーとaccelerated C++一通りやってeffective C++始めたんだけどすんごくめんどくさーい
acceleratedの後半あたりから思ってたんだけど純粋なロジックやテクニック以外のところで考えなきゃいけないこと無限にあってできるようになる気がしない
実際に開発になってクラスやインターフェイスの設計ってみんなこんな色々考えてやってんの?って
競プロっぽい問題だったりちょっとしたもの作るのは割と面白いけどなんかもう萎えてきた
世の中のプロってやっぱ(modern) effective C++とかmodern C++ designとかその辺りは基礎教養レベルまでもっていってるもんなの?
2年目のペーペーだけどとてもC++のプロになれる気がせんわ
acceleratedの後半あたりから思ってたんだけど純粋なロジックやテクニック以外のところで考えなきゃいけないこと無限にあってできるようになる気がしない
実際に開発になってクラスやインターフェイスの設計ってみんなこんな色々考えてやってんの?って
競プロっぽい問題だったりちょっとしたもの作るのは割と面白いけどなんかもう萎えてきた
世の中のプロってやっぱ(modern) effective C++とかmodern C++ designとかその辺りは基礎教養レベルまでもっていってるもんなの?
2年目のペーペーだけどとてもC++のプロになれる気がせんわ
142デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 22:08:08.69ID:tWJeInAS0 そのへんはさらっと何が書いてあるか見ておいて、実際書くときに関係ある部分を参照する本では?
143デフォルトの名無しさん (ワッチョイ)
2019/06/24(月) 23:54:52.99ID:4vQIe5sT0144デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 00:51:00.92ID:rXRUIvly0 必要だと思うもんだけ使えばええがな
145デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 01:40:27.96ID:rF6w0adX0 11 名前:(´・ω・`)(`ハ´ )さん[] 投稿日:2019/06/24(月) 17:55:34.54 ID:PqEssjoP
世界三大英雄は野茂と村田と、あと1人は誰?
142 名前:(´・ω・`)(`ハ´ )さん[sage] 投稿日:2019/06/24(月) 21:21:51.77 ID:osRVwCku
>>11
中野英雄
世界三大英雄は野茂と村田と、あと1人は誰?
142 名前:(´・ω・`)(`ハ´ )さん[sage] 投稿日:2019/06/24(月) 21:21:51.77 ID:osRVwCku
>>11
中野英雄
146デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 07:42:37.27ID:p22LimGY0 >>132
回復できないエラーでもユーザーに通知する余地はあるでしょう。最悪abort()でも、もみ消すよりはマシ。
回復できないエラーでもユーザーに通知する余地はあるでしょう。最悪abort()でも、もみ消すよりはマシ。
147デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 12:36:52.78ID:U+wxsv9j0 JavaもC++も大して変わらないと思うけど
148デフォルトの名無しさん (ササクッテロル)
2019/06/25(火) 12:59:41.31ID:gYxx7iw3p >>141
modern C++ designはメタプログラミングに片足突っ込んでるからだいぶ後回しでいいと思う
考えること無限にある、は同意だけど優先順位低いものは忘れた方がいいんじゃないかね(特に、ループ回しもしない箇所の速度効率とか
modern C++ designはメタプログラミングに片足突っ込んでるからだいぶ後回しでいいと思う
考えること無限にある、は同意だけど優先順位低いものは忘れた方がいいんじゃないかね(特に、ループ回しもしない箇所の速度効率とか
149デフォルトの名無しさん (スフッ)
2019/06/25(火) 17:37:46.05ID:kxXa+TrUd むしろjavaの方がいろいろ面倒くさくね
150デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 17:56:57.79ID:Cc6pu6kp0 使用する概念としてはJavaとCを足してさらに多重継承とか演算子オーバーロードとかを足した
のがC++という印象だった。
のがC++という印象だった。
151デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 18:01:11.39ID:Cc6pu6kp0 プログラミング言語 収入 ランキング
とかでぐぐると
難しい上に重要なはずのC++が年収ランキングで10位以内に無いんだが
とかでぐぐると
難しい上に重要なはずのC++が年収ランキングで10位以内に無いんだが
152デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 18:15:31.86ID:U1S86Wri0 統計の取り方が不明
153デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 18:20:11.68ID:4vpt+Hzy0 >>140
多いってのはどこで集計されて発表されてるの?
多いってのはどこで集計されて発表されてるの?
154デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 18:30:38.49ID:U+wxsv9j0 一発当てて稼げてるのがwebサービスやってる人たちだから
155デフォルトの名無しさん (アウアウカー)
2019/06/25(火) 19:12:58.12ID:p4xx1Je/a C/C++まともに書ける人は貴重になってきてるのに何故か低いよねえ
特定の会社に行くしかない気がする
特定の会社に行くしかない気がする
156デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 19:18:47.91ID:S67hXFxm0 >>151
経済の世界でよくあること:
・高度な能力を持つ人は給与ではない部分にやりがいを感じるので給与に
関係なく集まってしまう。アニメーターは絵がものすごくうまいのに、
マクドナルド店員よりも自給が低い。「やりがい搾取」。
・高度な分野は、人材も高度な人が集まってくるので需要よりも大き過ぎる過剰な
成果を出してしまうので給与が下がるらしい。プログラマや数学者、
コンピュータ業界なんかは大体、そんな感じのところがある。
経済の世界でよくあること:
・高度な能力を持つ人は給与ではない部分にやりがいを感じるので給与に
関係なく集まってしまう。アニメーターは絵がものすごくうまいのに、
マクドナルド店員よりも自給が低い。「やりがい搾取」。
・高度な分野は、人材も高度な人が集まってくるので需要よりも大き過ぎる過剰な
成果を出してしまうので給与が下がるらしい。プログラマや数学者、
コンピュータ業界なんかは大体、そんな感じのところがある。
157デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 19:21:25.34ID:Xe7ucSUW0 高度な分野においては、とても僅かな一握りの人が、過大な成果を出してしまう。
すると、大体の場合、給与が下がるらしい。世界のわずか数人が異常なほど大きな成果を
出しているとか。
すると、大体の場合、給与が下がるらしい。世界のわずか数人が異常なほど大きな成果を
出しているとか。
158デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 19:28:18.56ID:U+wxsv9j0 みんな勘違いしてるが儲かる商売してるかどうかだけが稼ぎに関係している
儲からない商売に超絶技巧を投入しても意味ない
サービスで一発当てる方が100倍稼げる
儲からない商売に超絶技巧を投入しても意味ない
サービスで一発当てる方が100倍稼げる
159デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 19:43:08.34ID:0zPp4OkO0 というか自分のビジネス思いつくタイプでもないプログラマーが稼ごうと思ったらなるべくニッチな言語を探していくべきなんだと思う
C/C++なんてメジャーどころは一番だめなんじゃないか。まだまだ人が少ないか、書ける人がどんどん減っていきそうなところを
C/C++なんてメジャーどころは一番だめなんじゃないか。まだまだ人が少ないか、書ける人がどんどん減っていきそうなところを
160デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 19:50:04.75ID:U1S86Wri0 COBOLは意外と稼げるらしい
161デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 20:09:29.07ID:U+wxsv9j0 >>159
違うぞ稼げる商売やってる人に乗っかるのが正解
現在儲かってしょうがない会社に入るか今後そうなる会社に入っておくしかない
専門分野は関係ないが一発当てようがない業界というのはあるからそういうところは目指さない方がいい
違うぞ稼げる商売やってる人に乗っかるのが正解
現在儲かってしょうがない会社に入るか今後そうなる会社に入っておくしかない
専門分野は関係ないが一発当てようがない業界というのはあるからそういうところは目指さない方がいい
言語は表現手段にすぎないので、言語で分野が決まってしまう現状には疑問を持ちます
少なくともライブラリーは統一されるべきだと昔から夢想してきています
少なくともライブラリーは統一されるべきだと昔から夢想してきています
163デフォルトの名無しさん (ワンミングク)
2019/06/25(火) 21:02:24.65ID:i1Zv6l/dM 現実にあったんじゃよCOMというものがな
164デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:03:41.95ID:zDe7yE4Q0 ライブラリはCインターフェースさえあれば全てのまともな言語から呼べるから問題ない
>>164
OO であるべきでは?
OO であるべきでは?
167デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:10:43.33ID:6yREXBxQ0 素朴な疑問なんだけど
オブジェクトをshared_ptrで管理するとき
そのオブジェクトから他のオブジェクトにポインタを渡したいときってどうするの?
コンストラクタ以外のメソッドからならenable_shared_from_thisで
生なthisポインタからshared_ptrを生成して渡せばよいけど
コンストラクタだとそれも無理だよね(shared_ptrが作られるのはnewの後だから)
どうするの?
オブジェクトをshared_ptrで管理するとき
そのオブジェクトから他のオブジェクトにポインタを渡したいときってどうするの?
コンストラクタ以外のメソッドからならenable_shared_from_thisで
生なthisポインタからshared_ptrを生成して渡せばよいけど
コンストラクタだとそれも無理だよね(shared_ptrが作られるのはnewの後だから)
どうするの?
168デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:11:27.40ID:paQRKRTX0 ポインタ指向プログラミングとオブジェクト指向プログラミングは根本的に相性が悪い
これがC++高難易度化の一要因
これがC++高難易度化の一要因
170デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:15:54.14ID:6yREXBxQ0 てかさ
自分自身のスマポを
外部から渡してもらわないと、自分では知れないってのは
設計ミスなんじゃね?
当たり前、JavaやC#だとそんな制約ないからなぁ
自分自身のスマポを
外部から渡してもらわないと、自分では知れないってのは
設計ミスなんじゃね?
当たり前、JavaやC#だとそんな制約ないからなぁ
171デフォルトの名無しさん (アウアウカー)
2019/06/25(火) 21:18:19.51ID:p4xx1Je/a 代入がメンバのコピーという仕様が全ての複雑さの元凶
互換性のために仕方なかったとはいえ
おかげで完全に動くクラスをつくるのが凄まじくしんどい
それを改善しようとしたJavaは全てポインタのコピーというふうに割り切ったが
Optinalを導入しなかったせいかヌルポの山を築いた
それを改善しようと
Rustは全てがムーブという世界を作ったがまだ受け入れられるには早かった
互換性のために仕方なかったとはいえ
おかげで完全に動くクラスをつくるのが凄まじくしんどい
それを改善しようとしたJavaは全てポインタのコピーというふうに割り切ったが
Optinalを導入しなかったせいかヌルポの山を築いた
それを改善しようと
Rustは全てがムーブという世界を作ったがまだ受け入れられるには早かった
172デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:24:24.92ID:6yREXBxQ0 >>171
これまた不思議なもんで
Cからして配列は参照渡しなのに構造体は値渡しだからねぇ
Cの構造体が配列みたいにアクセスするとポインタに成り下がる仕様だったのなら
C++もまた違ってただろうねぇ
どちらがいいかは分からないが
これまた不思議なもんで
Cからして配列は参照渡しなのに構造体は値渡しだからねぇ
Cの構造体が配列みたいにアクセスするとポインタに成り下がる仕様だったのなら
C++もまた違ってただろうねぇ
どちらがいいかは分からないが
173デフォルトの名無しさん (ワンミングク)
2019/06/25(火) 21:26:08.00ID:i1Zv6l/dM えっ
普通は呼吸をするように
const T& var
て書く様に訓練されてるだろ?
普通は呼吸をするように
const T& var
て書く様に訓練されてるだろ?
174デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:29:04.07ID:U+wxsv9j0 任意にコピーとポインタとムーブを使い分けることになんの苦労も無いと思うけど
176デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:32:48.81ID:6yREXBxQ0 そうではなくて
構造体において何も考えずに代入した場合
実体のコピーになるって話では
その点、配列では実体のコピーにならないので
JavaやC#のオブジェクトに近い仕様で
なかなか先鋭的
構造体において何も考えずに代入した場合
実体のコピーになるって話では
その点、配列では実体のコピーにならないので
JavaやC#のオブジェクトに近い仕様で
なかなか先鋭的
177デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:44:51.24ID:6yREXBxQ0 そんなことより
コンストラクタで自分自身のshared_ptrが欲しい時
どうするの?
欲しい理由としては、どっかシステム的なところにattachしたり
自分のコンポジションした子供たち?に渡したり
そういうことをコンストラクタですっかりしたい場合どうすんの
enable_shared_from_thisを継承して二段階初期化ってのもかっこ悪いし
(↑生成する側がshared_ptrを使ってくれなかった場合
クラッシュするってのは置いておいてさ)
そもそも実行時型情報なんて反則が許されるなら
仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
って仕様でもよかっただろ?
スマポ側が参照カウンタを持っているってのは一見賢そうだけど…
上手くいかないパターンもあるよね
コンストラクタで自分自身のshared_ptrが欲しい時
どうするの?
欲しい理由としては、どっかシステム的なところにattachしたり
自分のコンポジションした子供たち?に渡したり
そういうことをコンストラクタですっかりしたい場合どうすんの
enable_shared_from_thisを継承して二段階初期化ってのもかっこ悪いし
(↑生成する側がshared_ptrを使ってくれなかった場合
クラッシュするってのは置いておいてさ)
そもそも実行時型情報なんて反則が許されるなら
仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
って仕様でもよかっただろ?
スマポ側が参照カウンタを持っているってのは一見賢そうだけど…
上手くいかないパターンもあるよね
178デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:48:45.68ID:6yREXBxQ0 >仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
↑これはちょっと不正確だな
vtableと一緒に参照カウンタ〜
が正解かな
↑これはちょっと不正確だな
vtableと一緒に参照カウンタ〜
が正解かな
179デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:52:05.85ID:zDe7yE4Q0 ファクトリでやれ
180デフォルトの名無しさん (ワッチョイ)
2019/06/25(火) 21:54:23.16ID:jeBecXDk0 >>177
create関数でshare作ってから後の構築処理して返すしかないんじゃね
create関数でshare作ってから後の構築処理して返すしかないんじゃね
181デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 00:01:25.34ID:7raG/MY10 有害でしかない美意識は投げ捨ててshared_form_this使えって話になるだろ
182デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 00:07:57.67ID:HPTAJdxK0 それでもコンストラクタでは使えないから二段階初期化になるな
183デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 00:27:47.77ID:3ywCP3+N0 ちょっと質問なんですが、どういうときに必要になるんですか?
184デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 01:38:39.12ID:kcNPbTTh0 Intel、新プログラミング言語「Data Parallel C++」を開発中
2019/06/25 11:08 後藤大地
https://news.mynavi.jp/article/20190625-848112/
ossbytesは2019年6月24日(米国時間)、「Intel Is Working On A New 'Data Parallel C++’
Programming Language」において、Intelが「Data Parallel C++」と呼ばれるプログラ
ミング言語の開発を進めていると伝えた。
Data Parallel C++に関しては、先日Intelが発表した「Intel’s ‘One API’ Project
Delivers Unified Programming Model Across Diverse Architectures」程度しか情報が
なく、具体的にどのようなプログラミング言語なのか、わからない状況にある。
記事では、これまでに公開されている情報から、Data Parallel C++の特徴として以下を
まとめている。
・Data Parallel C++ (DPC++)はIntelが以前から取り組んでいるOneAPIプロジェクトの
成果物の1つ
・OneAPIプロジェクトはさまざまなコンピューティングアーキテクチャにおいて統合された
プログラミングモデルを提供するための取り組み
・Data Parallel C++はC++をベースに開発されている
・Data Parallel C++はKhronos GroupのSYCLシングルソースC++プログラミングスタン
ダードがベースになっている
・CPU、GPU、FPGAといった異なるアーキテクチャに対して使用できる
・Data Parallel C++の詳細は2019年第4四半期の発表される見通し
GPUの活用はスーパーコンピュータにおいても重要度が増している。Intelは異なるアーキ
テクチャに対して利用できるプログラミングモデルを構築することで、さまざまなコン
ピューティングアーキテクチャに対して同じコードベースで開発を進められる仕組みを
実現することを目指していると見られる。
2019/06/25 11:08 後藤大地
https://news.mynavi.jp/article/20190625-848112/
ossbytesは2019年6月24日(米国時間)、「Intel Is Working On A New 'Data Parallel C++’
Programming Language」において、Intelが「Data Parallel C++」と呼ばれるプログラ
ミング言語の開発を進めていると伝えた。
Data Parallel C++に関しては、先日Intelが発表した「Intel’s ‘One API’ Project
Delivers Unified Programming Model Across Diverse Architectures」程度しか情報が
なく、具体的にどのようなプログラミング言語なのか、わからない状況にある。
記事では、これまでに公開されている情報から、Data Parallel C++の特徴として以下を
まとめている。
・Data Parallel C++ (DPC++)はIntelが以前から取り組んでいるOneAPIプロジェクトの
成果物の1つ
・OneAPIプロジェクトはさまざまなコンピューティングアーキテクチャにおいて統合された
プログラミングモデルを提供するための取り組み
・Data Parallel C++はC++をベースに開発されている
・Data Parallel C++はKhronos GroupのSYCLシングルソースC++プログラミングスタン
ダードがベースになっている
・CPU、GPU、FPGAといった異なるアーキテクチャに対して使用できる
・Data Parallel C++の詳細は2019年第4四半期の発表される見通し
GPUの活用はスーパーコンピュータにおいても重要度が増している。Intelは異なるアーキ
テクチャに対して利用できるプログラミングモデルを構築することで、さまざまなコン
ピューティングアーキテクチャに対して同じコードベースで開発を進められる仕組みを
実現することを目指していると見られる。
185デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 04:17:13.86ID:0Jy9MjGr0 結論
使えない
使えない
186デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 06:38:56.80ID:LU29nklf0187デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 07:32:00.47ID:ICIJHbsn0 >>184
OpenCLとの違いは何
OpenCLとの違いは何
188デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 07:40:21.71ID:0Jy9MjGr0 異なるアーキテクチャに対応
高額
インテルサポートあり
高額
インテルサポートあり
189デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 08:12:04.77ID:x0x3rSL40 OpenCLがずっと停滞気味なのに業を煮やしたんじゃね
190デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 12:31:58.13ID:ghoq0O6D0 Intelは、CPU内臓のGPUを自前で作ってるから、そのための開発環境は
重要で、実行時のパイプライン関連のさまざまな高速化においても、
共通の技術が使えるので開発するメリットは大きいのだろうと思う。
レジスタ割付、ループ関連の最適化などは、CPUを実行する段階でも
似たことが行われる。
重要で、実行時のパイプライン関連のさまざまな高速化においても、
共通の技術が使えるので開発するメリットは大きいのだろうと思う。
レジスタ割付、ループ関連の最適化などは、CPUを実行する段階でも
似たことが行われる。
191デフォルトの名無しさん (アウアウカー)
2019/06/26(水) 12:39:28.47ID:Lh4/MgoYa そんなくだらんライブラリ作ってる暇あったらCUDA互換のランタイムだせーい
192デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 12:57:05.45ID:ghoq0O6D0 言語ではなくて、テンプレートライブラリなの?
193デフォルトの名無しさん (ワッチョイ)
2019/06/26(水) 17:24:56.62ID:hivlE/XW0 海外のニュースサイト見ても言語と書いてある
194デフォルトの名無しさん (ワッチョイ)
2019/06/27(木) 22:57:53.41ID:mSNnCkE50 accelerated C++みたいな実際にプログラム組んでいきながら組むときはこういうところを気をつけないといけないみたいなこと解説してる本って他に無い?
細切れの文法はC++プライマーやプログラミング言語C++第4版あるし、テクニック集みたいなのはeffectiveC++でいいだろとは思うんだけど
プログラミング構築を実際にどう進めていくのがいいのかってところが全然分からない
細切れの文法はC++プライマーやプログラミング言語C++第4版あるし、テクニック集みたいなのはeffectiveC++でいいだろとは思うんだけど
プログラミング構築を実際にどう進めていくのがいいのかってところが全然分からない
195デフォルトの名無しさん (ワッチョイ)
2019/06/27(木) 23:06:50.63ID:v/LZDm7Y0 他人の設計をパクる
196デフォルトの名無しさん (ワッチョイ)
2019/06/27(木) 23:34:52.50ID:ozPSmFlM0197デフォルトの名無しさん (オッペケ)
2019/06/28(金) 02:18:49.53ID:ahgrWLetr C++に限らず、プログラムに関連した技術書について議論するスレってある?
他板でも良いが、書き込みが活発な場所が良い
金を持て余してて、「定番中の定番」という技術書をかき集めたいんだ
ランキングなどあったらなお良い
他板でも良いが、書き込みが活発な場所が良い
金を持て余してて、「定番中の定番」という技術書をかき集めたいんだ
ランキングなどあったらなお良い
198蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/06/28(金) 02:20:52.05ID:5qyojIkBd アマゾン
199デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 08:26:19.94ID:TdQiUvSj0 >>197
本だけ読んでも何もみにつかない
本だけ読んでも何もみにつかない
200デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 10:02:58.07ID:eXqq+/Cl0 >>197
スレじゃなくてリアルで聞け
スレじゃなくてリアルで聞け
201デフォルトの名無しさん (ワンミングク)
2019/06/28(金) 10:46:50.38ID:keve5VxiM 昔は推奨本スレとか無かったっけ
過去ログを漁ってみるとか
過去ログを漁ってみるとか
202デフォルトの名無しさん (オッペケ)
2019/06/28(金) 12:40:55.68ID:RICIf1Tpr203デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 12:54:03.48ID:eXqq+/Cl0 2chでは模範解答なんだが
204デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 14:42:29.18ID:OObtmMVO0 金持て余してて収集欲のために名著集めたいみたいな話なのに身につく身につかないとか言ってるのは確かにおかしいよ
205デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 15:07:13.61ID:6HQoAkrg0 全然関係ないけどこのスレワッチョイの表示がワッチョイだけなんだな
初めてみた
初めてみた
206デフォルトの名無しさん (ラクッペ)
2019/06/28(金) 15:33:25.35ID:kguIGPYnM >>204
それこそC++に限らないなら他のスレで聞けばよくね?
それこそC++に限らないなら他のスレで聞けばよくね?
207デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 16:02:48.30ID:U9hxi1vj0 各C++コンパイラのシェアってどのくらいなんだろう
Builderとかまだ使ってる人いるのかな
Builderとかまだ使ってる人いるのかな
208デフォルトの名無しさん (ブーイモ)
2019/06/28(金) 16:39:19.43ID:fGl1mQ6CM cppreference.com眺めてりゃわかる
209デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 16:48:57.53ID:mY/mlIwO0 >>207
いるんじゃない。
いるんじゃない。
210デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 16:51:56.00ID:mY/mlIwO0 推定だと、Delphiを含めれば、VC++の10分の一位は、Embarcadero製の
開発環境を使っているらしい。C++とPascalの内訳は分からない。
開発環境を使っているらしい。C++とPascalの内訳は分からない。
211デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 18:34:46.13ID:mY/mlIwO0 C++で、マルチプラットフォームで、コンパイラとライブラリを同じ組織が
作っているものは多分、他にない。Qtはライブラリと簡易IDE程度だし。
やはり同じ組織が全てを管理しているのは信頼性において優位。
なお、MSだと、Windowsシェアを根本的に減らす開発環境は存在し得ない。
作っているものは多分、他にない。Qtはライブラリと簡易IDE程度だし。
やはり同じ組織が全てを管理しているのは信頼性において優位。
なお、MSだと、Windowsシェアを根本的に減らす開発環境は存在し得ない。
212デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 18:58:18.67ID:mY/mlIwO0 MSの開発環境で、果たしてMSを脅かすような製品を作れるだろうか。
一見便利に見えても、MS社内にはさらに便利なツールやライブラリがあるのでは。
だから、生産性は常にMSには適わないことになる。MS以外の開発環境を
使えば、あるいはMS社内の生産性を超えることが出来るかもしれない。運がよければ。
一見便利に見えても、MS社内にはさらに便利なツールやライブラリがあるのでは。
だから、生産性は常にMSには適わないことになる。MS以外の開発環境を
使えば、あるいはMS社内の生産性を超えることが出来るかもしれない。運がよければ。
213デフォルトの名無しさん (JP)
2019/06/28(金) 19:16:56.00ID:j8DkSia+H コマンドライン引数にファイル名を取って、そこに記述されている数値列を vector に格納して、その後その vector に何かするプログラムを作りたいとします。
そのファイルに入ってる数値列が int でも float でも良いとき、 main 関数ってどう書いたら良いのでしょうか。
ただし、数値列の中の全ての数値が同じ型であることは保証します。
int main(int argc, char* argv[]){
vector<ここに何を入れたら良いか分からないです> v;
ifstream fin(argv[1]);
auto tmp;
while(fin >> tmp) v.push_back(tmp);
fin.close();
〜 v にしたい処理を書く〜
}
そのファイルに入ってる数値列が int でも float でも良いとき、 main 関数ってどう書いたら良いのでしょうか。
ただし、数値列の中の全ての数値が同じ型であることは保証します。
int main(int argc, char* argv[]){
vector<ここに何を入れたら良いか分からないです> v;
ifstream fin(argv[1]);
auto tmp;
while(fin >> tmp) v.push_back(tmp);
fin.close();
〜 v にしたい処理を書く〜
}
214デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 19:31:18.51ID:eXqq+/Cl0 >auto tmp;
215デフォルトの名無しさん (ワンミングク)
2019/06/28(金) 19:33:04.89ID:iRyUn2/nM doubleか何かにしとけば
あるいはvariant
あるいはvariant
216デフォルトの名無しさん (JP)
2019/06/28(金) 19:35:02.98ID:j8DkSia+H217デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 19:54:16.23ID:3z/U2tJH0218デフォルトの名無しさん (JP)
2019/06/28(金) 20:01:01.82ID:j8DkSia+H >>217
じゃあそこもどう書くべきか分からないです
じゃあそこもどう書くべきか分からないです
219デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 20:08:22.32ID:ZUKGdUen0 根本的にはオートマトンで判定する
IP型 192.56.125.0
小数型 1025.62
整数型 100731
分数型 57/1269
+-の記号も含めて状態遷移図を考えてif文のすごい連なりを作る
単純でしょ
IP型 192.56.125.0
小数型 1025.62
整数型 100731
分数型 57/1269
+-の記号も含めて状態遷移図を考えてif文のすごい連なりを作る
単純でしょ
220デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 20:12:43.82ID:ZUKGdUen0 9.7/2.01
ピリオドと/を含むこの文字列を分数と見做して小数にしてしまうかどうかも勝手に決めて言い
2.54/-0.07
これは非常に怪しいけど、負の小数に直してもいい、と決めていい
.565
これはどこからどう見ても小数の0.565に見えるから小数である、としてもいい
00.3
ゼロが重なってるけどだいたい小数だろ、ということにしてもいい
ピリオドと/を含むこの文字列を分数と見做して小数にしてしまうかどうかも勝手に決めて言い
2.54/-0.07
これは非常に怪しいけど、負の小数に直してもいい、と決めていい
.565
これはどこからどう見ても小数の0.565に見えるから小数である、としてもいい
00.3
ゼロが重なってるけどだいたい小数だろ、ということにしてもいい
221デフォルトの名無しさん (JP)
2019/06/28(金) 20:30:23.52ID:j8DkSia+H222デフォルトの名無しさん (アウアウウー)
2019/06/28(金) 20:38:09.73ID:OXCJu0Q4a 読み込みの時点で処理をするときの型に変換するだけでは?
223デフォルトの名無しさん (JP)
2019/06/28(金) 20:41:38.84ID:j8DkSia+H224デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 21:21:06.58ID:DjhzO0vj0 とりあえずvector<string>に収集してから中身がintかdoubleかcomplexかゆっくり解析すればええやん
225デフォルトの名無しさん (JP)
2019/06/28(金) 21:23:57.66ID:j8DkSia+H >>224
皆そんなダサいやり方でやっているのですか?
皆そんなダサいやり方でやっているのですか?
226蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/06/28(金) 21:25:54.60ID:WO9nfxiid 字句解析の方法を勉強しないといけないよ。簡単に言えば文字列を一文字一文字解釈する訳。
227蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/06/28(金) 21:27:07.49ID:WO9nfxiid std::atoiとか、std::strtolなどの関数を使えば字句解析は省略できるけど。
228蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/06/28(金) 21:27:59.32ID:WO9nfxiid std::sscanfっつーのもあるね。
229デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 21:29:46.80ID:eXqq+/Cl0 ださいと思うならプログラミング向いてない
230デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 21:36:20.96ID:4VImPalK0 てか面倒だから全部doubleで読むんじゃダメなの?
231デフォルトの名無しさん (JP)
2019/06/28(金) 21:41:50.76ID:j8DkSia+H ハァ〜〜〜ダセェ奴しかいねぇなここは
分かった。自分で勉強するわ
ありがとう
分かった。自分で勉強するわ
ありがとう
232蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/06/28(金) 23:21:16.52ID:XG6P9m/X0 N⊆Z⊆Q⊆R⊆C
233デフォルトの名無しさん (ワッチョイ)
2019/06/28(金) 23:59:43.49ID:4xkaC8y70 答えでてんのに何が聞きたいんだこいつ
234デフォルトの名無しさん (アウアウウー)
2019/06/29(土) 00:51:14.21ID:JdKIde9pa >>233
自分が思うカッコイイやり方があるかと期待してたら、誰も期待に応えてくれなかったということだろう。
周囲の人間が「お前のカッコイイは世間からずれてるぞ(むしろバカっぽいぞ)」と教えてやっても、本人は納得しないのだろう。
自分が思うカッコイイやり方があるかと期待してたら、誰も期待に応えてくれなかったということだろう。
周囲の人間が「お前のカッコイイは世間からずれてるぞ(むしろバカっぽいぞ)」と教えてやっても、本人は納得しないのだろう。
235デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 01:06:46.73ID:3pgMwDvE0 C++をPythonかなんかと勘違いしてるんだろう
236デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 01:39:33.69ID:wtFmE/I80 >>196
ストラウストラップのは初心者用って聞いてたからスルーしてた。両方ちょっとチェックしてみるわ感謝
ストラウストラップのは初心者用って聞いてたからスルーしてた。両方ちょっとチェックしてみるわ感謝
237デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 01:58:15.72ID:RmkpebDX0 typescriptだとint|floatみたいな型指定ができるんだっけ
238デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 02:25:19.40ID:WOkj4PNs0 質問です。weak_ptr<T>とintの双方向マップがやりたかったので
boost::bimap<weak_ptr<T>,int> bm;
とやったらweak_ptrはハッシュにできないのでエラーになりました。よく考えると当たり前ですね。
仕方ないのでとりあえずunordered_mapと組み合わせて
boost::bimap<T*,int> bm;
unordered_map<T*, weak_ptr<T>> um;
この2つをセットで用いてるんですが、なんか不格好というか・・・
もしかして変なことしてますかね自分?
boost::bimap<weak_ptr<T>,int> bm;
とやったらweak_ptrはハッシュにできないのでエラーになりました。よく考えると当たり前ですね。
仕方ないのでとりあえずunordered_mapと組み合わせて
boost::bimap<T*,int> bm;
unordered_map<T*, weak_ptr<T>> um;
この2つをセットで用いてるんですが、なんか不格好というか・・・
もしかして変なことしてますかね自分?
239デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 07:07:52.52ID:TGC7pT1Z0 字句解析しても書かれた数が整数型として扱うべきなのか浮動小数点型として扱うべきなのか
書いてあるのが数だけなら、書いた奴の意図まで常にわかるとは限らん
価域だけが問題ならとりあえずdoubleかlong doubleの数値xとして読んでから
std::numeric_limits<T>::lowest()〜std::numeric_limits<T>::max()にxが収まるような最少の型Tを決定せよ、
みたいな
書いてあるのが数だけなら、書いた奴の意図まで常にわかるとは限らん
価域だけが問題ならとりあえずdoubleかlong doubleの数値xとして読んでから
std::numeric_limits<T>::lowest()〜std::numeric_limits<T>::max()にxが収まるような最少の型Tを決定せよ、
みたいな
240デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 07:08:51.86ID:TGC7pT1Z0 訂正
誤: 価域
正: 値域
誤: 価域
正: 値域
241デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 07:20:56.68ID:vBcvr2/W0 >>237
文字列から直接ぶち込むのは無理でしょ
文字列から直接ぶち込むのは無理でしょ
242デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 08:06:13.25ID:8bAr7lLW0 >>231
隙のないクソ野郎コメントだなw
隙のないクソ野郎コメントだなw
243デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 08:35:15.39ID:z4L1A7GC0 >>239
Tclが演算するときに整数か浮動小数点か勝手に決めるんだよね。
ファイルからデータ読んできて処理させたら所々不自然な値になると思ったら
整数演算になってたりさ。
型変換関数噛ませばいいだけだけどね。
Tclが演算するときに整数か浮動小数点か勝手に決めるんだよね。
ファイルからデータ読んできて処理させたら所々不自然な値になると思ったら
整数演算になってたりさ。
型変換関数噛ませばいいだけだけどね。
244デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:14:29.25ID:1DstyLuX0 むしろ、整数と浮動小数点の両方のパターンで値を持っておいて、後で必要なときにどっちかを使えばいいだけなのでは?
245デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:20:12.61ID:xxikbG460 C++でアライメントを指定してクラスをnewしたい
void* operator new[](std::size_t, std::align_val_t)
なる関数が存在するからこれを使う
しかしnew側では一般的にクラスをどのアライメントでnewすればよいのかは知らない
というよりアライメントを指定すべきかどうかも知らない
こういった場合、例えば普通のnewをprivateにしておいて、
その近くにコメントで16でアライメントを使うこととか書くくらいしかできませんかね?
あるいはstatic klass* Generator()みたいな関数を用意すればよいのか
void* operator new[](std::size_t, std::align_val_t)
なる関数が存在するからこれを使う
しかしnew側では一般的にクラスをどのアライメントでnewすればよいのかは知らない
というよりアライメントを指定すべきかどうかも知らない
こういった場合、例えば普通のnewをprivateにしておいて、
その近くにコメントで16でアライメントを使うこととか書くくらいしかできませんかね?
あるいはstatic klass* Generator()みたいな関数を用意すればよいのか
246デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:35:17.38ID:TGC7pT1Z0 >>244
値を保持するだけならdouble(使えるならlong double)の一種類で十分
値を保持するだけならdouble(使えるならlong double)の一種類で十分
247デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:36:35.93ID:TGC7pT1Z0248デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:56:05.74ID:XuKJ1prL0 >>245
alignasが目的に合うように見えるが使ったことがないから適切かどうか分からん
alignasが目的に合うように見えるが使ったことがないから適切かどうか分からん
249デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 09:59:59.32ID:YSWfxQRJ0250デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:02:29.39ID:xxikbG460 アライメント指定してnewしてほしいクラスがある時
newする側にそれをどうやって伝えるべきか?という問題です
newする側にそれをどうやって伝えるべきか?という問題です
251デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:18:23.37ID:YSWfxQRJ0 __attribute__ ((aligned(x)))
252デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:20:28.90ID:TGC7pT1Z0 アライメント指定してnewしてほしいクラスTのoperator new()を
オーバーロードしてaligned_malloc()でも呼ぶようにすれば良い
オーバーロードしてaligned_malloc()でも呼ぶようにすれば良い
253デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:35:52.45ID:vBcvr2/W0 class C {
public:
__m512i aa;
void* operator new(std::size_t n) {
std::cout << "new" << std::endl;
return ::operator new(n, std::align_val_t(64));
}
};
こういうことではなく?
public:
__m512i aa;
void* operator new(std::size_t n) {
std::cout << "new" << std::endl;
return ::operator new(n, std::align_val_t(64));
}
};
こういうことではなく?
254デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:37:05.53ID:1DstyLuX0 >>246
でもそれだと、intとdoubleで別々の処理を書かないといけなくなる。
vector<int>とvector<double>を両方作ってtemplate関数で呼び分ければ処理の記述自体は1つにできるでしょ。
でもそれだと、intとdoubleで別々の処理を書かないといけなくなる。
vector<int>とvector<double>を両方作ってtemplate関数で呼び分ければ処理の記述自体は1つにできるでしょ。
255デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:45:25.08ID:cHNlfV280 >>246
整数値のビット数が長いとdoubleじゃダメ
整数値のビット数が長いとdoubleじゃダメ
256デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:55:17.59ID:TGC7pT1Z0257デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 10:59:12.33ID:TGC7pT1Z0 >>254
どっちかというとunionベースのクラスの出番かとオモテタ
要素型の方でキャスト演算子を定義するなどして整数型解釈と浮動小数点型解釈に両方対応したら、
コンテナを2種類用意する必要はなくなる
キモス
どっちかというとunionベースのクラスの出番かとオモテタ
要素型の方でキャスト演算子を定義するなどして整数型解釈と浮動小数点型解釈に両方対応したら、
コンテナを2種類用意する必要はなくなる
キモス
258デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 11:35:29.00ID:sVUKPNaW0 V言語が出来るからC++なんて誰も使わなくなる
259デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 12:00:09.50ID:V+jAPY2V0 >>250
alignas
alignas
260デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 12:03:32.81ID:vBcvr2/W0 >>258
今度こそ本当だろうな?
今度こそ本当だろうな?
261デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 12:40:30.78ID:LSTTNlMa0 >>258
流行る要素がない
流行る要素がない
262デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 13:00:13.77ID:N8jtlPKB0 アライメント指定はとっくに言語に組み込まれてるんだけど…
263デフォルトの名無しさん (アウアウウー)
2019/06/29(土) 13:07:40.29ID:HkzJkYF9a C++ってハウルの動く城みたいな言語だよね
264デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 13:12:22.27ID:xxikbG460265デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 15:10:49.18ID:TGC7pT1Z0 newを呼び出す側がアライメントサイズを過少に設定しても、
コンパイラはnewしようとする構造体に含まれる全メンバのアライメント要請を把握しているはずなので
>>247式に構造体定義を対策しておけば問題無い配置でポインタを返してくれる気もする(そうすべきなのが道理
が(さもないとARMとかで例外で落ちるコードを簡単に量産できてしまう
newの細かい仕様は知らんのでわからん
コンパイラはnewしようとする構造体に含まれる全メンバのアライメント要請を把握しているはずなので
>>247式に構造体定義を対策しておけば問題無い配置でポインタを返してくれる気もする(そうすべきなのが道理
が(さもないとARMとかで例外で落ちるコードを簡単に量産できてしまう
newの細かい仕様は知らんのでわからん
266デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 15:31:17.71ID:vBcvr2/W0 そんなに迷うことある?
267デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 16:11:26.09ID:N8jtlPKB0 どっちかというとmallocしたメモリよりスタックで確保した場合に問題なることがある
環境やコンパイルオプションにもよるけど
環境やコンパイルオプションにもよるけど
268デフォルトの名無しさん (ブーイモ)
2019/06/29(土) 16:12:26.58ID:oMQgVAVxM atoiとかで解析する前後でオーバーフローを検出する方法ってあるの?
269デフォルトの名無しさん (オイコラミネオ)
2019/06/29(土) 16:15:01.31ID:gccJajeoM 長さでもみとけばいいんじゃないの
270デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 16:19:54.13ID:N8jtlPKB0271デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 16:35:00.54ID:/vAOJE6i0 >>263
でも便利なんだな、実は。
でも便利なんだな、実は。
272デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 16:43:49.04ID:ggIuLAhq0 vtableの仕様を標準規格化してれば、もっと便利になっていたのにな。
273デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 17:08:11.53ID:/vAOJE6i0 clangやLLVMって、coff 形式の object file は作れないのかな?
274デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 21:36:10.47ID:TGC7pT1Z0275デフォルトの名無しさん (ワッチョイ)
2019/06/29(土) 22:45:38.89ID:zjX1HUko0276デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 00:04:22.02ID:ft0B/0dK0277デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 00:15:31.74ID:DqQWlJNh0 C言語が一番使いやすいからな
278デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 00:34:51.63ID:UuQw9kvG0 C++はSTLの既存クラスに、新たなメンバ関数を追加できますか? 継承の新クラス作るのはではなく。
javascriptとかは追加できたとおもいます。
javascriptとかは追加できたとおもいます。
279デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 00:43:41.85ID:DqQWlJNh0 無理だからフリー関数作りましょう
280デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 01:56:53.48ID:exYwiLt20281デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 03:02:40.95ID:xrN+8YHV0 >>275
ありがとうございます。owner_lessを使えばbimapだけで済むとわかり、こんなふうにしてましたが
boost::bimap<boost::bimaps::set_of<weak_ptr<string>, owner_less<weak_ptr<string>>>, int>
unordered_setを使う方法もあるんですね。
しかしググってみると、参照先が消えたらハッシュ値が変わるから駄目だ、少し遅くてもstd::set<weak_ptr>にしとけって意見もあるようです。
https://stackoverflow.com/questions/13695640/how-to-make-a-c11-stdunordered-set-of-stdweak-ptr
まぁ自分で分かってやるなら好きにすればいい感じですかね
ありがとうございます。owner_lessを使えばbimapだけで済むとわかり、こんなふうにしてましたが
boost::bimap<boost::bimaps::set_of<weak_ptr<string>, owner_less<weak_ptr<string>>>, int>
unordered_setを使う方法もあるんですね。
しかしググってみると、参照先が消えたらハッシュ値が変わるから駄目だ、少し遅くてもstd::set<weak_ptr>にしとけって意見もあるようです。
https://stackoverflow.com/questions/13695640/how-to-make-a-c11-stdunordered-set-of-stdweak-ptr
まぁ自分で分かってやるなら好きにすればいい感じですかね
282デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 07:01:13.58ID:V2b2ALnu0 昔C++にお世話になってたんだけどその頃はゲームでよく使われる言語だったんだよね
今でもゲーム開発によく使われてるの?
今でもゲーム開発によく使われてるの?
283デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 07:14:28.67ID:CneIN5yy0284デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 08:26:27.75ID:VKcFh0qo0 ゲームエンジン自体はC++だけど、購入したエンジンを使って作る場合にはエンジンによって使う言語は変わる
285デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 08:41:33.25ID:V2b2ALnu0286デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 10:05:11.67ID:ft0B/0dK0287デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 10:59:26.27ID:xpepSpla0 新言語上げでよくやられてるC++叩きって、書いてる方の知識が98/03で止まってて
「そんなん最近のC++でも出来るし…」ってなる事が多い印象が強い
もちろん新言語の本当に優れてるところもあるんだろうけど、比較するなら比較元もちゃんと勉強しろと言いたい
あと「C++はこんなに危険!」ってどうしようもないクソコードを藁人形に出してきたりな
お前らの新言語の新機能も間違った理解でクソみたいな使い方したら危険だっての
「そんなん最近のC++でも出来るし…」ってなる事が多い印象が強い
もちろん新言語の本当に優れてるところもあるんだろうけど、比較するなら比較元もちゃんと勉強しろと言いたい
あと「C++はこんなに危険!」ってどうしようもないクソコードを藁人形に出してきたりな
お前らの新言語の新機能も間違った理解でクソみたいな使い方したら危険だっての
288デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:09:37.42ID:BKgyqS0e0 メタではみんなLISPを作りたがるんだけど、表現方法の違いで文法が狂う。
289デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:19:26.11ID:HRz15QoR0 そうはいってもRustは良さげなので
コンパイルがVisual C++クラスに瞬時に終わって
Visual Studioクラスの光速で反応するインテリセンスができたらぜひやりたい
変数がデフォルトでimmutableなのがたいへん痺れる、
コンパイルがVisual C++クラスに瞬時に終わって
Visual Studioクラスの光速で反応するインテリセンスができたらぜひやりたい
変数がデフォルトでimmutableなのがたいへん痺れる、
290デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:23:39.34ID:/mKHwNLn0 確かに今のC++の用途で置き換えられる可能性がありそうなのはRust位だな
291デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:27:27.66ID:ft0B/0dK0 でもRustは使いたくない。
292デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:30:06.24ID:BKgyqS0e0 Rustは情緒的に言って錆びだからな。蓄積使うんですーって感じの命名なのだろう。
293デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 11:39:32.70ID:iTCTHGA20 RustってC++11以降の機能を勉強して
難しすぎると感じた人がやったらすんなり入れるんだよね
でも普通の言語から移った人は何じゃこれってなる
C++11以降に挫折した人のための言語
難しすぎると感じた人がやったらすんなり入れるんだよね
でも普通の言語から移った人は何じゃこれってなる
C++11以降に挫折した人のための言語
294デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 13:14:05.13ID:HRz15QoR0 RustでC++ → Rustトランスレータを書いたら勉強になると思うわ
295デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 13:31:27.33ID:BKgyqS0e0 >>294
間にLLVM挟むと公共の福祉になりえます。
間にLLVM挟むと公共の福祉になりえます。
296デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 13:54:46.76ID:HRz15QoR0297デフォルトの名無しさん (ブーイモ)
2019/06/30(日) 14:03:37.82ID:aHps5PsQM298デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 14:31:31.86ID:BKgyqS0e0299デフォルトの名無しさん (ブーイモ)
2019/06/30(日) 15:34:49.82ID:TD3JD5CyM みんなC++がここまで残ることになるとは予想してた?
このままだとC++30とか40とか普通に来そう
このままだとC++30とか40とか普通に来そう
300デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:01:24.12ID:y+UHg1Q80 OSを除けば基礎的なソフトはだいたいC++でしょ
ふつーに重要言語の1つ
ふつーに重要言語の1つ
301デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:06:12.25ID:/mKHwNLn0 C++11以降標準のフットワークが軽くなってありがたい
その代わり要るんかこれ?みたいのもガンガン入ってくるけど
その代わり要るんかこれ?みたいのもガンガン入ってくるけど
302デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:09:27.02ID:9MaqxN1M0 >OSを除けば基礎的なソフトはだいたいC++でしょ
docker, kubeはgolangだが?
docker, kubeはgolangだが?
303デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:09:52.38ID:9MaqxN1M0 ちなみにgitはc
304デフォルトの名無しさん (ラクッペ)
2019/06/30(日) 16:10:56.10ID:Eya2a1WdM >>303
開発者があいつだからだろ
開発者があいつだからだろ
305デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:37:46.54ID:iTCTHGA20 golangが増えてきたね
Cを置き換える感じになりそう
言語仕様もCとPython混ぜたような言語だし
Cを置き換える感じになりそう
言語仕様もCとPython混ぜたような言語だし
306デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:42:10.94ID:9MaqxN1M0 c++が使われるとこってのはゲーム、ブラウザ、windows, MSoffice
とか、GUIでかつ計算資源どっかり使うようなプログラムだわ。
とか、GUIでかつ計算資源どっかり使うようなプログラムだわ。
307デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 16:59:55.50ID:HRz15QoR0 確かにVC++はMFCが使えるからGUI向きだな!
308デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 18:33:30.39ID:y+UHg1Q80 clang, llvm, jdk, .net core, chrome,ほとんどのゲームエンジン
この辺C++
他の主要ブラウザも大体C++のはず
dockerはgoで書かれたせいで性能が悪いって言ってる記事を読んだ事がある
この辺C++
他の主要ブラウザも大体C++のはず
dockerはgoで書かれたせいで性能が悪いって言ってる記事を読んだ事がある
309デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 18:34:08.60ID:y+UHg1Q80310デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 18:40:59.64ID:y+UHg1Q80 要するにC++は「ソースコードが大規模かつ性能がシビアに要求される」場面で使われる。
開発効率はJavaより悪い事が実証されてたはず。
なんかの研究論文もあったし多くの開発者の経験談もある。
だから開発効率を多少悪化させてでも性能を求める場合に使われる。
開発効率はJavaより悪い事が実証されてたはず。
なんかの研究論文もあったし多くの開発者の経験談もある。
だから開発効率を多少悪化させてでも性能を求める場合に使われる。
311デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 18:45:18.35ID:/mKHwNLn0 使える人揃えるの大変なんだよ
Rustの導入談とか見ると、
性能に問題があって他言語導入を検討したがC++は使える人がいないのでRustにしましたとか書いてあるし
Rustの導入談とか見ると、
性能に問題があって他言語導入を検討したがC++は使える人がいないのでRustにしましたとか書いてあるし
312デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 19:27:38.00ID:y5K6zYFc0 マジで?
313デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 19:34:56.51ID:CneIN5yy0 そもそもポインタが理解できる人が、アメリカの大学の理系の学生でもほとんどいないという話がある。
だから、C++が悪い言語というより、C++がある種の数学みたいに難しすぎて理解できない人が多いので
Javaなんかが必要になったらしい。
だから、C++が悪い言語というより、C++がある種の数学みたいに難しすぎて理解できない人が多いので
Javaなんかが必要になったらしい。
314デフォルトの名無しさん (アウアウカー)
2019/06/30(日) 19:49:13.48ID:+OB1DaoJa Rustはポインタ理解でない人が使える言語ではない気がする
315デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 19:56:47.32ID:9MaqxN1M0 ポインタが理解できるとかそういう問題じゃねーわ。
むしろ「〜の概念が理解できる」てだけでドヤって
まともなプログラム書けると思い込むバカが問題なんだわ。
むしろ「〜の概念が理解できる」てだけでドヤって
まともなプログラム書けると思い込むバカが問題なんだわ。
316デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 19:57:51.51ID:DqQWlJNh0 ポインタすら理解できない人にプログラミングは難しすぎないか?
317デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:16:06.58ID:y+UHg1Q80 >>313はただのデマだろう
ポインタが理解できないなんてことはありえない
ポインタが理解できないなんてことはありえない
318デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:16:57.22ID:y+UHg1Q80 C++がある種の数学ってなんだよ
この板最近一人おかしな作り話書き込み続けてるやつがいるよ
この板最近一人おかしな作り話書き込み続けてるやつがいるよ
319デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:17:37.05ID:v919s9nK0 包丁使えない人に料理は難しすぎないか?みたいな話だな。
包丁使えなくてもハサミ使えば料理できるでしょ。
包丁使えなくてもハサミ使えば料理できるでしょ。
320デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:19:17.74ID:vP+txDXc0 リファクタリング中毒言語
勉強すればするほど書き直したくなる
勉強すればするほど書き直したくなる
321デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:21:38.63ID:y+UHg1Q80 なんだろうな
中学生とかかな
中学生とかかな
322デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 20:57:12.06ID:9MaqxN1M0 どんな書き方しても新しい規格は出てくるわけで、
そこで古い書き方だからとかいちいち引っかかる奴はc++は向いてない。
そこで古い書き方だからとかいちいち引っかかる奴はc++は向いてない。
323デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:18:32.10ID:HRz15QoR0 RustスレなのにC++の話で申し訳ないが、この前
template<class T, class U> void tr_pos(const T& src, U& dst) { ... } // メンバ関数T::get()、U::set()がある前提
というテンプレートを1個書いて、メンバ関数get()やset()を有する無数のクラスA、B、C、...について
任意の組み合わせでの相互変換(および同一型のコピー)を可能ならしめたんじゃわ
C++は数学や!とそのときオモタわ
次の日、今度はメンバ関数get()やset()を持たないクラスFooとBarについて
template<class U> void tr_pos(const Foo& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Foo& dst) { ... } // メンバ関数T::get()がある前提
template<class U> void tr_pos(const Bar& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Bar& dst) { ... } // メンバ関数T::get()がある前提
というテンプレートを追加して、{ A, B, C, ... }とFoo、および{ A, B, C, ... }とBar、
および(前日実現済みの){ A, B, C, ... }内の任意のクラス間のの相互変換を
tr_pos(src, dst)と書いただけで可能ならしめるという壮大な体系を実現したんじゃわ
C++は数学や!という思いをそのときさらに強くしたわ
template<class T, class U> void tr_pos(const T& src, U& dst) { ... } // メンバ関数T::get()、U::set()がある前提
というテンプレートを1個書いて、メンバ関数get()やset()を有する無数のクラスA、B、C、...について
任意の組み合わせでの相互変換(および同一型のコピー)を可能ならしめたんじゃわ
C++は数学や!とそのときオモタわ
次の日、今度はメンバ関数get()やset()を持たないクラスFooとBarについて
template<class U> void tr_pos(const Foo& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Foo& dst) { ... } // メンバ関数T::get()がある前提
template<class U> void tr_pos(const Bar& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Bar& dst) { ... } // メンバ関数T::get()がある前提
というテンプレートを追加して、{ A, B, C, ... }とFoo、および{ A, B, C, ... }とBar、
および(前日実現済みの){ A, B, C, ... }内の任意のクラス間のの相互変換を
tr_pos(src, dst)と書いただけで可能ならしめるという壮大な体系を実現したんじゃわ
C++は数学や!という思いをそのときさらに強くしたわ
324デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:19:31.58ID:HRz15QoR0 さらに次の日、Foo型オブジェクトsrcとBar型オブジェクトdstについてtr_pos(src, dst)と
書いたらビルドエラーになったわ;
仕方ないので関数のオーバーロードを使って
void tr_pos(const Foo& src, Bar& dst) { tr_pos(src, A); tr_pos(A, dst); }
void tr_pos(const Bar& src, Foo& dst) { tr_pos(src, A); tr_pos(A, dst); }
のようにして解決したんじゃわ
C++はちょっとしたテクニックを要する数学や!とそのときオモタわ
さらに次の日、Foo型同士、およびBar型同士でコピーしたくなったので、
一昨日書いたテンプレートを特殊化したら行けるやろ、と思って
template<> void tr_pos<Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar>(const Bar& src, const Bar& dst) { ... }
と書いたらコンパイラが一昨日書いたテンプレートではなくて昨日書いた
オーバーロード関数を特殊化しようとしてビルドエラーになるわrz
C++はいろいろ破綻している罠だらけの言語やとそのとき確信したわ;
書いたらビルドエラーになったわ;
仕方ないので関数のオーバーロードを使って
void tr_pos(const Foo& src, Bar& dst) { tr_pos(src, A); tr_pos(A, dst); }
void tr_pos(const Bar& src, Foo& dst) { tr_pos(src, A); tr_pos(A, dst); }
のようにして解決したんじゃわ
C++はちょっとしたテクニックを要する数学や!とそのときオモタわ
さらに次の日、Foo型同士、およびBar型同士でコピーしたくなったので、
一昨日書いたテンプレートを特殊化したら行けるやろ、と思って
template<> void tr_pos<Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar>(const Bar& src, const Bar& dst) { ... }
と書いたらコンパイラが一昨日書いたテンプレートではなくて昨日書いた
オーバーロード関数を特殊化しようとしてビルドエラーになるわrz
C++はいろいろ破綻している罠だらけの言語やとそのとき確信したわ;
325デフォルトの名無しさん (アウアウウー)
2019/06/30(日) 21:42:30.00ID:quJHbj16a C++スレでC++の話をして何が悪いの
326デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:45:46.60ID:HRz15QoR0 C++の話は悪くないかもしれないが、関数テンプレートの部分特殊化ができないというC++の仕様は悪い
※ 個人の感想です
※ 個人の感想です
327デフォルトの名無しさん (アウアウウー)
2019/06/30(日) 21:47:02.52ID:quJHbj16a >>324
念のため確認なんだけど
template<> void tr_pos<Foo,Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar,Bar>(const Bar& src, const Bar& dst) { ... }
じゃなくて?
念のため確認なんだけど
template<> void tr_pos<Foo,Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar,Bar>(const Bar& src, const Bar& dst) { ... }
じゃなくて?
328デフォルトの名無しさん (ワンミングク)
2019/06/30(日) 21:47:07.25ID:FO3LFjkXM 皮肉もわからんか
オーバーロードの解決順を制御するTipsがあった気が
この辺はマジで分かりにくいわ
コンパイルオプションで名前解決の過程が可視化できるとありがたいんだけど
オーバーロードの解決順を制御するTipsがあった気が
この辺はマジで分かりにくいわ
コンパイルオプションで名前解決の過程が可視化できるとありがたいんだけど
329デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:50:50.85ID:DqQWlJNh0 constexpr ifで解決
330デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 22:04:25.11ID:HRz15QoR0331デフォルトの名無しさん (アウアウウー)
2019/06/30(日) 22:15:40.66ID:quJHbj16a さらに言えば<Foo,Foo>と<Bar,Bar>の所消しても動かん?
template<>void tr_pos(const Foo...
template<>void tr_pos(const Foo...
332デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 22:49:04.24ID:HRz15QoR0 >>331
それはさすがに駄目で、VC++で次のエラーになる
error C2912: 明示的な特殊化; 'void tr_pos(const Foo&,Foo &)' は関数テンプレートの特殊化ではありません。
原因は1日目に追加したtr_pos<T, U>(const T&, U&)、および2日目に追加したtr_pos<U>(const Foo&, U&)、tr_pos<T>(const T&, Foo&)の
3種類のうちのどれを特殊化すべきなのかわからないかららしい
それはさすがに駄目で、VC++で次のエラーになる
error C2912: 明示的な特殊化; 'void tr_pos(const Foo&,Foo &)' は関数テンプレートの特殊化ではありません。
原因は1日目に追加したtr_pos<T, U>(const T&, U&)、および2日目に追加したtr_pos<U>(const Foo&, U&)、tr_pos<T>(const T&, Foo&)の
3種類のうちのどれを特殊化すべきなのかわからないかららしい
333デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 01:21:35.16ID:BYU8+sPJ0 まとめ: >>323-324の状況において、特殊化は次のように手段を使い分けねばならない
(1) 3日目のtr_pos(Foo, Bar)の追加は、関数テンプレートの特殊化ではエラーになるので関数のオーバーロードで特殊化する必要がある。
(理由)
tr_pos(Foo, Bar)は以下の関数テンプレート全てに当てはまってしまい、コンパイラが特殊化対象を特定できない。
tr_pos<T, U>(T, U), tr_pos<U>(Foo, U), tr_pos(U, Bar)
(2) 4日目のtr_pos(Foo, Foo)の追加は、関数テンプレートを>>327のように型パラメータ<T, U>を全て指定して明示的特殊化するなら逝ける
(理由)
関数引数にBarが現れないことから、tr_pos<U>(U, Bar)は特殊化対象から外れる。
型パラメータ<T, U>を両方明示することにより、tr_pos<U>(Foo, U)も特殊化対象から外れる。
==> 残るtr_pos<T, U>(T, U)が特殊化対象の関数テンプレートであるとコンパイラが判断できる。
(3) 一方、4日目のやつを暗黙的特殊化で行おうとするとビルドエラーで失敗する。
(>>332でも述べたが、上記(1)と同じことになる。
T::get()やU::set()を持たないクラスであるFooやBarを無理やりtr_pos()というシグネチャで他と統一的に扱おうとした結果スゲー薄氷を踏むようなプログラミングになっていた、
ことがわかった、、
(1) 3日目のtr_pos(Foo, Bar)の追加は、関数テンプレートの特殊化ではエラーになるので関数のオーバーロードで特殊化する必要がある。
(理由)
tr_pos(Foo, Bar)は以下の関数テンプレート全てに当てはまってしまい、コンパイラが特殊化対象を特定できない。
tr_pos<T, U>(T, U), tr_pos<U>(Foo, U), tr_pos(U, Bar)
(2) 4日目のtr_pos(Foo, Foo)の追加は、関数テンプレートを>>327のように型パラメータ<T, U>を全て指定して明示的特殊化するなら逝ける
(理由)
関数引数にBarが現れないことから、tr_pos<U>(U, Bar)は特殊化対象から外れる。
型パラメータ<T, U>を両方明示することにより、tr_pos<U>(Foo, U)も特殊化対象から外れる。
==> 残るtr_pos<T, U>(T, U)が特殊化対象の関数テンプレートであるとコンパイラが判断できる。
(3) 一方、4日目のやつを暗黙的特殊化で行おうとするとビルドエラーで失敗する。
(>>332でも述べたが、上記(1)と同じことになる。
T::get()やU::set()を持たないクラスであるFooやBarを無理やりtr_pos()というシグネチャで他と統一的に扱おうとした結果スゲー薄氷を踏むようなプログラミングになっていた、
ことがわかった、、
334デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 01:26:55.48ID:VrgMufZ30 constexpr if使えって
335デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 07:07:40.85ID:BYU8+sPJ0 >>333プチ訂正orz
誤: tr_pos(U, Bar)
正: tr_pos<T>(T, Bar)
>>334
手元の環境はC++14なので使えないっぽい
および、>>323-324のガンはtr_pos<U>(Foo, U), tr_pos<T>(T, Bar)の2つのテンプレートの名前が
tr_pos<T, U>(T, U)と同じであることにあるのは確定的に明らかなので、これを治療するのが筋
constexpr ifに逃げるのはいささか筋が悪いかと、
※ tr_pos<U>(Foo, U), tr_pos<T>(T, Bar) を、それぞれtr_pos以外の固有の名前に改名し
(例えばtr_pos_from_Foo,とtr_pos_to_Bar)、
tr_pos<T, U>(T, U)にてそれらを使って共通の名前tr_posで実体化するテンプレートを書くならば、
テンプレート機能の中だけで目的(tr_pos(T, U)式のシグネチャへの統一)を果たせてシンプル&スマートに解決する。
誤: tr_pos(U, Bar)
正: tr_pos<T>(T, Bar)
>>334
手元の環境はC++14なので使えないっぽい
および、>>323-324のガンはtr_pos<U>(Foo, U), tr_pos<T>(T, Bar)の2つのテンプレートの名前が
tr_pos<T, U>(T, U)と同じであることにあるのは確定的に明らかなので、これを治療するのが筋
constexpr ifに逃げるのはいささか筋が悪いかと、
※ tr_pos<U>(Foo, U), tr_pos<T>(T, Bar) を、それぞれtr_pos以外の固有の名前に改名し
(例えばtr_pos_from_Foo,とtr_pos_to_Bar)、
tr_pos<T, U>(T, U)にてそれらを使って共通の名前tr_posで実体化するテンプレートを書くならば、
テンプレート機能の中だけで目的(tr_pos(T, U)式のシグネチャへの統一)を果たせてシンプル&スマートに解決する。
336デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 09:30:45.05ID:9r8RZXK30 >>317
アメリカのコンピュータ科学系の学生の7割がポインタが理解できないらしい。
アメリカのコンピュータ科学系の学生の7割がポインタが理解できないらしい。
337デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 10:02:33.15ID:PRpBlBSs0338デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 11:10:00.06ID:O1pDJEnN0 Ruby の女神・池澤あやかが言ってる
大学で、C言語を教えるから、ほとんどの人がプログラムを嫌いになる!
だから、Rubyから始めるべきだって!
YouTube に動画を上げてるKENTA も、初心者はRubyから始めるべきだって言ってる!
多言語やってる専門家は、皆、Rubyからって言う
大学で、C言語を教えるから、ほとんどの人がプログラムを嫌いになる!
だから、Rubyから始めるべきだって!
YouTube に動画を上げてるKENTA も、初心者はRubyから始めるべきだって言ってる!
多言語やってる専門家は、皆、Rubyからって言う
339デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 11:18:05.93ID:VrgMufZ30 動いているプログラムそのものを記述できるC言語を理解できないとコンピュータサイエンスを修めたとは言えないでしょ
340デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 11:58:55.18ID:PRpBlBSs0 俺もCから始めるべきだって思ってた
ま、俺自身はHSPやった後にCやったんだけど
最初スクリプト言語みたいなライトウェイトなやつやるべきだってのは正しいのかもね
ま、俺自身はHSPやった後にCやったんだけど
最初スクリプト言語みたいなライトウェイトなやつやるべきだってのは正しいのかもね
341デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 12:02:11.46ID:9r8RZXK30 実は、プログラミングに興味がある人は多くても、適性が余り無い人の方が多い。
だから、誰でも出来る言語の人気が高まる。それがスクリプト言語であり、
VBやC#だろう。多数決の投票では平易な言語が上位に来る。
だから、誰でも出来る言語の人気が高まる。それがスクリプト言語であり、
VBやC#だろう。多数決の投票では平易な言語が上位に来る。
342デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 12:20:44.35ID:egPtqar40 個人的にはC++は難しいのではなく面倒くさい言語だと思っている
343デフォルトの名無しさん (スップ)
2019/07/01(月) 12:24:01.47ID:1rDt3gobd ポインタが理解できないなら参照も理解できないと思うんだけどな
344デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 13:20:50.81ID:s+tlfRKE0 日本にはc言語ポインターだけを解説した本が有るじゃないか
自分はあれを読んで初めて
ポインターの何を理解出来ていないのかが解った
c言語は人間の認識的に誤りやすい書き方になっているのが問題
そういうのをシマンテッスク問題とか言うらしい
自分はあれを読んで初めて
ポインターの何を理解出来ていないのかが解った
c言語は人間の認識的に誤りやすい書き方になっているのが問題
そういうのをシマンテッスク問題とか言うらしい
345デフォルトの名無しさん (アウアウカー)
2019/07/01(月) 13:42:23.56ID:8FaRxtrBa アセンブリ言語を先に勉強すべきだんだよな
それだとメモリとそのアドレスを当たり前のように使うし
それこそがコンピュータなのだとわかる
そのあとで変数や参照はどう受け渡しされるのかを理解すればスムーズ
それだとメモリとそのアドレスを当たり前のように使うし
それこそがコンピュータなのだとわかる
そのあとで変数や参照はどう受け渡しされるのかを理解すればスムーズ
346デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 15:06:31.19ID:AV54Usro0 問題はアセンブリを始めるには手頃なアセンブラが無いというところか?
手頃さで言ったらGASぐらいだと思うんだが
手頃さで言ったらGASぐらいだと思うんだが
347デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 15:17:48.47ID:a6aZqP3P0 >>343
ところが、
1. TYPE[10][10] aaa; は理解しやすくても、
2. TYPE aaa[10][10];
3. TYPE *aaa[10][10];
4. TYPE (*aaa)[10][10];
3, 4 となると意味不明になる人が多いらしい。また、典型的な例として、
2の場合に、aaa[5] の意味を理解できない人が多い。
ところが、
1. TYPE[10][10] aaa; は理解しやすくても、
2. TYPE aaa[10][10];
3. TYPE *aaa[10][10];
4. TYPE (*aaa)[10][10];
3, 4 となると意味不明になる人が多いらしい。また、典型的な例として、
2の場合に、aaa[5] の意味を理解できない人が多い。
348デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 15:21:46.37ID:9r8RZXK30349デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 15:24:39.60ID:9r8RZXK30 >>342
実際にそういう人もいるが、自分が難しくて理解できないだけなのに、
言語設計に問題があるという風に捕らえる人もいる。そして多数決だと
圧倒的に後者のように感じる人が多くなってしまう。微分積分や
複素数、ベクトルはどれも美しい理論だが、理解できないために、
不要論が出てくるのと同じ。
実際にそういう人もいるが、自分が難しくて理解できないだけなのに、
言語設計に問題があるという風に捕らえる人もいる。そして多数決だと
圧倒的に後者のように感じる人が多くなってしまう。微分積分や
複素数、ベクトルはどれも美しい理論だが、理解できないために、
不要論が出てくるのと同じ。
350デフォルトの名無しさん (ブーイモ)
2019/07/01(月) 15:39:49.57ID:EBI1AAR2M 言語設計は誉められたもんじゃないだろ
数学に例えられるレベルじゃない
数学に例えられるレベルじゃない
351デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 15:47:20.77ID:VrgMufZ30 でもC/C++に変わるものが無いのが現実なんだよね
結局これがベター
結局これがベター
352デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 16:34:31.14ID:a6aZqP3P0 >>350
でも、ポインタの書き方なんかはC設計者によるとても美しい設計とも言える部分。
言語設計が汚いのは、むしろ、C++に後から追加されてきた部分で、特に
最近に付け加えられてきた部分が誰かの言ったように「ハウルの動く城」的
になっている。
ところが、逆のことを言ってしまう人がいて、その人はポインタが理解できる
才能が無い人だと思う。
でも、ポインタの書き方なんかはC設計者によるとても美しい設計とも言える部分。
言語設計が汚いのは、むしろ、C++に後から追加されてきた部分で、特に
最近に付け加えられてきた部分が誰かの言ったように「ハウルの動く城」的
になっている。
ところが、逆のことを言ってしまう人がいて、その人はポインタが理解できる
才能が無い人だと思う。
353デフォルトの名無しさん (ブーイモ)
2019/07/01(月) 17:17:50.53ID:P3ZjOgE1M >>351
そりゃ他の言語はC++のクラスを手本にクラスの仕様を決めてるからな
そりゃ他の言語はC++のクラスを手本にクラスの仕様を決めてるからな
354デフォルトの名無しさん (スフッ)
2019/07/01(月) 17:40:46.64ID:LBwvGCQOd355デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 17:43:47.18ID:9r8RZXK30 >>354
右辺値参照が理解できないのは分かるけど、単なる TYPE &aaa みたいな参照型
は、ポインタが理解しにくい人用に用意されたとも言われてる機能で、
ポインタが理解できたのにそれが理解できないとは考えにくい。
右辺値参照が理解できないのは分かるけど、単なる TYPE &aaa みたいな参照型
は、ポインタが理解しにくい人用に用意されたとも言われてる機能で、
ポインタが理解できたのにそれが理解できないとは考えにくい。
356デフォルトの名無しさん (ブーイモ)
2019/07/01(月) 18:19:11.58ID:P3ZjOgE1M 右辺値と左辺値で参照レベルが変わるのがややこしい原因だと思うけどね。
変数名aを左辺で使うとaという入れ物、右辺で使うとaの中身。
*bを左辺で使うとbの中身のアドレスが指し示す場所、
右辺で使うとbの中身が指してるアドレスの中に入ってる値。
参照レベルを変える演算子のない言語なら意識しないところだが。
変数名aを左辺で使うとaという入れ物、右辺で使うとaの中身。
*bを左辺で使うとbの中身のアドレスが指し示す場所、
右辺で使うとbの中身が指してるアドレスの中に入ってる値。
参照レベルを変える演算子のない言語なら意識しないところだが。
357デフォルトの名無しさん (ワントンキン)
2019/07/01(月) 19:34:03.65ID:/QTcp5brM glvalue
rvalue
lvalue
xvalue
prvalue
入門者の皆さんはまず上記の違いを把握することから始めましょう!
rvalue
lvalue
xvalue
prvalue
入門者の皆さんはまず上記の違いを把握することから始めましょう!
358デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:19:13.74ID:CBwS2tFI0 そういうのしょうもないと思わないってのはほんとセンスないわ。
359デフォルトの名無しさん (ブーイモ)
2019/07/01(月) 21:23:38.44ID:EBI1AAR2M 皮肉だろ
否定3つも使うな
お前は国語のセンスない
否定3つも使うな
お前は国語のセンスない
360デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:30:29.37ID:/C7KUVH40 韻を踏んでるのかと思った
361蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/01(月) 21:40:34.52ID:4oyko1E1d ♪そうゆうの〜、しょ〜もないって、思わないって、ほんとセンスないないさぁ〜
作曲頼む
作曲頼む
362デフォルトの名無しさん (ワッチョイ)
2019/07/01(月) 21:54:03.12ID:DUIe02Rn0 槇原敬之かよ
363デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 08:17:38.82ID:vQT+qXro0 >>357
入門者はCを学んだ後、C++の class、メンバ関数、仮想関数、コンストラクタ、
デストラクタ、演算子のオーバーロード、継承、templateの基本などを学べば
C++の重要な部分は使えるので、xvalue、glvalue、prvalueなどは
すぐには分からなくてもいいと思う。
入門者はCを学んだ後、C++の class、メンバ関数、仮想関数、コンストラクタ、
デストラクタ、演算子のオーバーロード、継承、templateの基本などを学べば
C++の重要な部分は使えるので、xvalue、glvalue、prvalueなどは
すぐには分からなくてもいいと思う。
364デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 08:29:28.55ID:vQT+qXro0 便利そうに見えても、CやC++の基礎をすっ飛ばしてboostやSTLを学ぶのは
C++の本質が学べないので良くない。それらにも配列やリストなどがあって、
C#などの高級言語風に使えるので初心者は勘違いしてしまいがちだが、
それらは「動的」なものが多く、本来のC++の速度が出ない事がある。
もともとのC++は、静的な配列が基本なので、速度を上げたいなら、
静的な方で済む場合にはなるべく静的なものを使うべき。その基本を知らずに
STLだけを何の配慮も無く使っていたら、昔からのC++のような高速なアプリ
を作るのは困難。
C++の本質が学べないので良くない。それらにも配列やリストなどがあって、
C#などの高級言語風に使えるので初心者は勘違いしてしまいがちだが、
それらは「動的」なものが多く、本来のC++の速度が出ない事がある。
もともとのC++は、静的な配列が基本なので、速度を上げたいなら、
静的な方で済む場合にはなるべく静的なものを使うべき。その基本を知らずに
STLだけを何の配慮も無く使っていたら、昔からのC++のような高速なアプリ
を作るのは困難。
365デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 09:16:37.23ID:4nney+pq0366デフォルトの名無しさん (オイコラミネオ)
2019/07/02(火) 09:47:27.28ID:OxvoR50aM std::arrayとかあるじゃん
367デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 10:32:43.01ID:uMGeffjZ0 たとえ動的な、vector を使っていても、それよりも速いコードを書けないw
368デフォルトの名無しさん (アウアウウー)
2019/07/02(火) 11:01:07.84ID:YKseWMPYa それCで良くねってなってSTLとか使うのがおかしいとか言ってくるようになるんだろ?
テンプレートなんか使うんじゃねえとか。
テンプレートなんか使うんじゃねえとか。
369デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 13:50:47.02ID:vQT+qXro0 >>368
そうはならない。C++とCの違いは、STLが使えるかどうかではなく、
class、コンストラクタ、デストラクタ、メンバ関数、仮想関数、
演算子の多重定義、template などが使えるかどうかだから。
STLは、言語ではなく、template library。
そうはならない。C++とCの違いは、STLが使えるかどうかではなく、
class、コンストラクタ、デストラクタ、メンバ関数、仮想関数、
演算子の多重定義、template などが使えるかどうかだから。
STLは、言語ではなく、template library。
370デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 13:52:51.90ID:vQT+qXro0 Cにおいては、「標準ライブラリ」と呼ばれたライブラリは効率が良かったので
特殊な環境や黎明期以外では、それ以外を使う必要性は特になく、ほとんどの
場合それを使えば良いと考えられた。
ところが、STLはそういう設計にはなっていないことが多いので注意が必要だと
言っている。
特殊な環境や黎明期以外では、それ以外を使う必要性は特になく、ほとんどの
場合それを使えば良いと考えられた。
ところが、STLはそういう設計にはなっていないことが多いので注意が必要だと
言っている。
371デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 14:21:08.67ID:0IWRI8p9M で、STLのどの辺が具体的に効率悪いの?
372デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 15:28:23.54ID:vQT+qXro0 >>371
Cの基本的な配列などを理解してない人は、コンピュータの動作の細かな仕組み
が分かってないので、挿入時間や末尾追加時間、参照のための時間などが
O(1)やO(N) などと言われてもちゃんと理解できないので、良く分からずに
単純なC風の配列で済むところを、vector などを使って遅くなったりしやすい。
array, vector, deque, list などを目的別に区別して使うためには、Cの配列や
ポインタが理解できないと難しいはずだ。どれもデータを集合させるためのもので、
速度やメモリの効率以外には余り違いは無いが、どういう違いがあるかはCや
アセンブラでの基礎が出来てなければ理解できしにくいと思われる。
たとえば構造体のメンバに配列データを入れる場合、サイズが固定である場合も
多いが、その場合には、文句なしに、TYPE aaa[16]; のような C流の配列で
十分。そこに vector を使ってしまう人がいて、それはかなり効率面で問題となる。
そのような場合には、std::array を使うのも避けるべきである。
Cの基本的な配列などを理解してない人は、コンピュータの動作の細かな仕組み
が分かってないので、挿入時間や末尾追加時間、参照のための時間などが
O(1)やO(N) などと言われてもちゃんと理解できないので、良く分からずに
単純なC風の配列で済むところを、vector などを使って遅くなったりしやすい。
array, vector, deque, list などを目的別に区別して使うためには、Cの配列や
ポインタが理解できないと難しいはずだ。どれもデータを集合させるためのもので、
速度やメモリの効率以外には余り違いは無いが、どういう違いがあるかはCや
アセンブラでの基礎が出来てなければ理解できしにくいと思われる。
たとえば構造体のメンバに配列データを入れる場合、サイズが固定である場合も
多いが、その場合には、文句なしに、TYPE aaa[16]; のような C流の配列で
十分。そこに vector を使ってしまう人がいて、それはかなり効率面で問題となる。
そのような場合には、std::array を使うのも避けるべきである。
373デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 15:38:38.79ID:vQT+qXro0374デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 16:10:20.92ID:0IWRI8p9M 計算量と配列使うかvector使うかは別の問題なんだけど…
あとarrayの要件分かってる?
あとarrayの要件分かってる?
375デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 16:14:23.02ID:vQT+qXro0376デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 16:44:50.17ID:6JNNUWgV0 組み込みなんかだとvector始めSTL全部使えないとかあった
環境によっては標準ライブラリも全部使えないとかあったし
スタックサイズまで気にしなきゃいけないような組み込み系の話
環境によっては標準ライブラリも全部使えないとかあったし
スタックサイズまで気にしなきゃいけないような組み込み系の話
377デフォルトの名無しさん (オイコラミネオ)
2019/07/02(火) 16:50:12.65ID:OxvoR50aM >>375
arrayとcの配列って速度一緒だろ
arrayとcの配列って速度一緒だろ
378デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 17:21:45.00ID:85iZu+nz0 初めはSTLやフレームワークに依存した書き方で学んでも構わんと思うがね
そういうものが使えない環境で開発する人は、その時にそのための書き方を学べばいい
そういうものが使えない環境で開発する人は、その時にそのための書き方を学べばいい
379デフォルトの名無しさん (スフッ)
2019/07/02(火) 17:29:58.39ID:++9dcTkMd ヒープに確保するならstd::vectorが実用上ほぼ最速
380デフォルトの名無しさん (ワンミングク)
2019/07/02(火) 17:45:38.13ID:0IWRI8p9M ダメだこりゃ
もうちょっとマシな答え返ってくるかと思ったが
もうちょっとマシな答え返ってくるかと思ったが
381デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:04:09.25ID:vQT+qXro0382デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:05:26.83ID:B2rauTX7M スマポはしゃーない
ライブラリがヒープに構築するオブジェクトを例外安全に使おうと思ったら使わんと
ライブラリがヒープに構築するオブジェクトを例外安全に使おうと思ったら使わんと
383デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:09:34.75ID:z0GlqJ7U0 vecorというかSTLコンテナ全般だけど、push_back(void)みたいなデフォルトコンストラクタでの要素構築があればもっと良かった。
なんでないのかな。
なんでないのかな。
384デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:10:54.83ID:gnGzqTIu0 std::arrayでなく生配列を使うべき理由なんてC++03以前との相互運用性以外には一切ねえよクソ雑魚
385デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:11:09.91ID:B2rauTX7M vectorも然りで、例外時にちゃんと捨ててくれないと困るときにはnewなんかやってられんし。
386デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:13:44.29ID:B2rauTX7M >>383
emplace_backを空で呼べばぁ?
emplace_backを空で呼べばぁ?
387デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:14:56.47ID:B2rauTX7M ところで生ポ怖いとかそんなヌルい理由でSTL使うやつおるの?w
ポインタ覚えたてのボクちゃんがイキってはるように見えますね。
ポインタ覚えたてのボクちゃんがイキってはるように見えますね。
388デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:17:41.70ID:++9dcTkMd てか使わん理由がない
unique_ptrならオーバーヘッド0だろ
unique_ptrならオーバーヘッド0だろ
389デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:18:10.18ID:z0GlqJ7U0 >>386
それでもmoveが発生するでしょ。美しくないw
それでもmoveが発生するでしょ。美しくないw
390デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:19:02.38ID:++9dcTkMd >>389
moveは発生しないだろ?
moveは発生しないだろ?
391デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:19:50.61ID:gnGzqTIu0 ナマポは怖いよ
あれの不適切な取扱いのせいで数限りないバグとセキュリティホールが生まれて莫大な損害を生み出してる歴史に学ぶべきだ
そうなれば適切な取扱いを強制する仕組みをなるべく取り入れるのは至極当然のことだ
あれの不適切な取扱いのせいで数限りないバグとセキュリティホールが生まれて莫大な損害を生み出してる歴史に学ぶべきだ
そうなれば適切な取扱いを強制する仕組みをなるべく取り入れるのは至極当然のことだ
392デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:23:26.11ID:z0GlqJ7U0 >>390
MSVCとclangで試した範囲では、基本的にはスタック上に構築されたインスタンスをメモリコピーするアセンブリが生成される。
もちろん最適化で消えることもあるけど、全てというわけではない。
内部で確保されたメモリに対してplacement newで直接コンストラクタを呼び出すのと比べると若干のオーバーヘッドになる。
MSVCとclangで試した範囲では、基本的にはスタック上に構築されたインスタンスをメモリコピーするアセンブリが生成される。
もちろん最適化で消えることもあるけど、全てというわけではない。
内部で確保されたメモリに対してplacement newで直接コンストラクタを呼び出すのと比べると若干のオーバーヘッドになる。
393デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:26:53.67ID:++9dcTkMd それコンパイラかオプション腐ってね?
moveが無駄ってのがemplaceの存在意義だろ?
moveが無駄ってのがemplaceの存在意義だろ?
394デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:30:07.12ID:z0GlqJ7U0395デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:34:24.96ID:B2rauTX7M コンストラクタしか呼ばんよ
396デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:36:54.51ID:gnGzqTIu0 push_backにも右辺値参照取るオーバーロードがあるんだけど?
397デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:37:04.80ID:z0GlqJ7U0 emplace系(moveコンストラクタ)の利点は一時オブジェクトのデストラクタを呼ばなくて良いことであって、
メモリコピー自体は発生するよ。
メモリコピー自体は発生するよ。
398デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 18:41:38.86ID:z0GlqJ7U0 すまん、おれが間違ってた、emplace_back(void)なんてものがあったんだなwwww
399デフォルトの名無しさん (ブーイモ)
2019/07/02(火) 18:42:45.57ID:B2rauTX7M ないない
アセンブリ出力なんか見なくても
各コンストラクタに自分の素性を出力させるようにしてテストすりゃあわかる。
emplace_backはコンストラクタしか呼ばない
ムーブやコピーなどの余計なコンストラクタは呼ばれない。
v.emplace_back(A())
なんてアホなことやってたら呼ばれるけどなw
アセンブリ出力なんか見なくても
各コンストラクタに自分の素性を出力させるようにしてテストすりゃあわかる。
emplace_backはコンストラクタしか呼ばない
ムーブやコピーなどの余計なコンストラクタは呼ばれない。
v.emplace_back(A())
なんてアホなことやってたら呼ばれるけどなw
400デフォルトの名無しさん (スフッ)
2019/07/02(火) 18:45:36.48ID:++9dcTkMd てかplacement newさせるための機能だから
401デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 19:01:52.58ID:gnGzqTIu0 よくよく規格読むとemplace_backの要件のところでなぜかvectorに限って要素型にMoveInsertable要求してるな
(Table 88 - Optional sequence container operations)
vectorに限ってはID:z0GlqJ7U0の言う通りmoveするのかもしれんが何故だろう
アロケータ絡み?
(Table 88 - Optional sequence container operations)
vectorに限ってはID:z0GlqJ7U0の言う通りmoveするのかもしれんが何故だろう
アロケータ絡み?
402デフォルトの名無しさん (スフッ)
2019/07/02(火) 19:20:16.00ID:++9dcTkMd それ、領域の再確保で既存要素をmoveする必要があるからじゃね
403デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 19:24:28.67ID:gnGzqTIu0 そうかと思ったんだけどdequeにはこの要求ないんよね
404デフォルトの名無しさん (スフッ)
2019/07/02(火) 19:40:57.73ID:++9dcTkMd dequeの場合、最初と最後に限っては既存要素の移動が必要ないからだろう
405デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 21:48:42.92ID:w/Y51Ss20 >>401
size()がcapacity()を超えた時ごっそり移すから
size()がcapacity()を超えた時ごっそり移すから
406デフォルトの名無しさん (ワッチョイ)
2019/07/02(火) 22:19:13.91ID:hWBdgMuf0 >>391
実際はナマポによる問題よりもスマポの取り扱いのわからんバカによる間違った使い方のが多いけどな。
重要なのは言語による強制じゃなくて、教育だわ。
そこのコストを無駄にケチるバカ企業はどんな言語使っても無駄。
実際はナマポによる問題よりもスマポの取り扱いのわからんバカによる間違った使い方のが多いけどな。
重要なのは言語による強制じゃなくて、教育だわ。
そこのコストを無駄にケチるバカ企業はどんな言語使っても無駄。
407デフォルトの名無しさん (アウアウウー)
2019/07/02(火) 23:11:40.30ID:YKseWMPYa なんかその間違えた使い方一覧とか見てみたくなるな
408デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 00:29:13.60ID:Odxsa8jS0 >>406
結局、生ポインタや生配列も必ず必要になるから、仕組みを理解せずに使えば
コンテナやスマートポインターの方こそが危険の原因になるのは容易に想像できる。
結局、実装の詳細を知らなければ危険なので、初心者向けでない。
結局、生ポインタや生配列も必ず必要になるから、仕組みを理解せずに使えば
コンテナやスマートポインターの方こそが危険の原因になるのは容易に想像できる。
結局、実装の詳細を知らなければ危険なので、初心者向けでない。
409デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 01:01:33.73ID:Lb2Tc2mw0 >>408
生ポインタや生配列をコンテナやスマートポインターに置き換えて危険の原因になる例おしえて。
生ポインタや生配列をコンテナやスマートポインターに置き換えて危険の原因になる例おしえて。
410デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 01:10:58.57ID:TLK5eLSla >>408
俺も教えて欲しい。何が危険なの?
俺も教えて欲しい。何が危険なの?
411デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 01:29:58.72ID:mX2Zy9Do0 こうやって具体例も出さずに古い知識と気分と思い込みでコンテナやスマポを意味なく禁止してナマポや生配列を強要する老害が一番危険
412デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 05:15:48.05ID:924EnmCA0 生ポ受け取って処理して返す関数の中で
受け取った生ポをユニポに入れてしまって
関数から抜けるときに消えちゃうバカとか?
受け取った生ポをユニポに入れてしまって
関数から抜けるときに消えちゃうバカとか?
413デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 06:37:42.42ID:TLK5eLSla それは生ポの危険性やん
414デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 07:37:02.82ID:Odxsa8jS0 >>409
全部置き換えることは出来ないから。
全部置き換えることは出来ないから。
415デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 07:54:35.14ID:mX2Zy9Do0 なんだキチガイか
416デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 07:58:15.56ID:giz72OluM コンテナなりで確保して必要なときにポインタで渡すだけだろ
417デフォルトの名無しさん (ワンミングク)
2019/07/03(水) 08:21:07.41ID:y5Z0HSqrM 結局このての老害が居座ってるのがこの言語の一番の欠点だわ
下手にC言語と互換性があるから頭の悪いナマポおじさんが初心者に間違った知識を広げていくという
下手にC言語と互換性があるから頭の悪いナマポおじさんが初心者に間違った知識を広げていくという
418デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 08:45:56.67ID:Odxsa8jS0 >>379
vector で、TYPE型のオブジェクトを N 個収める場合、通常は、
2 * N * sizeof(TYPE) + (制御情報)
程度のバイト数が必要になる。一方、Cの生配列の場合、
N * sizeof(TYPE)
で済む。重要なのは、必要メモリに2倍もの開きがあるということ。
つまり、配列なら10MB で済むところが、vector だと20MB必要になる。
vector で、TYPE型のオブジェクトを N 個収める場合、通常は、
2 * N * sizeof(TYPE) + (制御情報)
程度のバイト数が必要になる。一方、Cの生配列の場合、
N * sizeof(TYPE)
で済む。重要なのは、必要メモリに2倍もの開きがあるということ。
つまり、配列なら10MB で済むところが、vector だと20MB必要になる。
419デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 08:58:50.87ID:Odxsa8jS0 メモリ使用量という観点では、vectorよりもlistの方が優れる。
vectorは、メモリを2倍使用することで末尾追加の時間をO(1)に抑えているだけ。
固定長で済む場合はCの生配列を使うべき。
サイズを徐々に大きくしていくようなばあいは、vectorよりもlistの方が良い場合が
多い。ただし、listはランダムアクセスには向いてないが。
vectorは、メモリを2倍使用することで末尾追加の時間をO(1)に抑えているだけ。
固定長で済む場合はCの生配列を使うべき。
サイズを徐々に大きくしていくようなばあいは、vectorよりもlistの方が良い場合が
多い。ただし、listはランダムアクセスには向いてないが。
420デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 09:09:22.14ID:Odxsa8jS0 なお、TYPE のサイズが大きい場合に vectorを使うと、Core i7 でも Celeron 並み
にCPUキャッシュメモリが減ったかのようになり、せっかくのハイエンドなパソコンが
エントリーモデルのパソコン並みの速度になってしまうかも知れない。
にCPUキャッシュメモリが減ったかのようになり、せっかくのハイエンドなパソコンが
エントリーモデルのパソコン並みの速度になってしまうかも知れない。
421デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 09:13:08.57ID:+l3ADsTnM 生配列かvectorかlistかって論点古すぎ
今c++の複雑さはそういうとこじゃないから
他の言語含めてもうちょっと勉強しろ
今c++の複雑さはそういうとこじゃないから
他の言語含めてもうちょっと勉強しろ
422デフォルトの名無しさん (ワンミングク)
2019/07/03(水) 09:15:31.03ID:y5Z0HSqrM 明らかにC++03時代の入門見て覚えた知識を頑張って披露してます状態だな
勉強足りなすぎ
勉強足りなすぎ
423デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 09:16:24.83ID:TLK5eLSla typeのサイズが大きい場合に生配列使うとそれはそれで問題にならん?
424デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 09:35:22.83ID:Odxsa8jS0425デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 09:52:43.97ID:+l3ADsTnM >>424
はいはい雑魚雑魚
boostのstatic_vectorって調べてみな
生配列とvectorのいいとこどりのコンテナだ
eastlにも似たようなのあったはず
おれも大概おっさんでc++にネガティブな思いはある
だけどお前みたいな老害にはなりたくないな
はいはい雑魚雑魚
boostのstatic_vectorって調べてみな
生配列とvectorのいいとこどりのコンテナだ
eastlにも似たようなのあったはず
おれも大概おっさんでc++にネガティブな思いはある
だけどお前みたいな老害にはなりたくないな
426デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 10:01:00.52ID:Odxsa8jS0427デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 10:02:15.82ID:giz72OluM 約2倍使うのって追加するときに内部のサイズが足らん場合だけだろ
後別に遅くないがな
後別に遅くないがな
428デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 10:15:25.67ID:4T2xKCYX0 基礎をすっとばすのが良くないというのは同意だわ
C++はスクリプト言語の代わりにはなれない
C++はスクリプト言語の代わりにはなれない
429デフォルトの名無しさん (スフッ)
2019/07/03(水) 10:41:14.59ID:N/cOPmK/d430デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:06:00.23ID:PfdnSFjeM そんな細けーこと気にするならデフォのnewやmalloc使ってたら笑うぞ
431デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:28:18.95ID:Odxsa8jS0 >>429
vectorは構造上はリンクリストではなく、Cの生配列と全く同じ形式で
要素を単純な配列として持っているが、最初に最大要素数を指定しなくても
後から動的に要素数を増やす機能も持っている。この機能の実現の際、もし、
今入っている要素数とぴったり同じだけの個数が入る配列でデータを持っているだけだと、
1個ずつ末尾追加したときに、毎回、今までと同じ大きさの新しい配列を new し、
古い配列のN個の要素を全て新しい配列にコピーする動作をしなくてはならず
とても時間がかかってしまう。それを防ぐために、原則的には 今入っている
要素の2倍の配列を内部的に持つことにされている。そうすることによって、
要素数が2倍に到達するまでは、末尾追加しても今言った「new してから全てコピーする動作」
をしなくて済むようになる。そのために、必要メモリが生配列の二倍必要になっているらしい。
vectorは構造上はリンクリストではなく、Cの生配列と全く同じ形式で
要素を単純な配列として持っているが、最初に最大要素数を指定しなくても
後から動的に要素数を増やす機能も持っている。この機能の実現の際、もし、
今入っている要素数とぴったり同じだけの個数が入る配列でデータを持っているだけだと、
1個ずつ末尾追加したときに、毎回、今までと同じ大きさの新しい配列を new し、
古い配列のN個の要素を全て新しい配列にコピーする動作をしなくてはならず
とても時間がかかってしまう。それを防ぐために、原則的には 今入っている
要素の2倍の配列を内部的に持つことにされている。そうすることによって、
要素数が2倍に到達するまでは、末尾追加しても今言った「new してから全てコピーする動作」
をしなくて済むようになる。そのために、必要メモリが生配列の二倍必要になっているらしい。
432デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:36:58.84ID:uVFkIemlM 最悪の場合を言ってるのだろう
平均で見なきゃ意味ない
そんなこと言ったらクイックソートだって
平均で見なきゃ意味ない
そんなこと言ったらクイックソートだって
433デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:40:32.67ID:uVFkIemlM そもそも好きに使って経験を積みゃいいんだし手法を統一する必要もない
434デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:48:52.78ID:Odxsa8jS0 >>432
最悪で2倍、平均だと 1.5倍。
最悪で2倍、平均だと 1.5倍。
435デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:51:28.69ID:uVFkIemlM なら許容範囲だね!!よかったよかった
436デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:51:35.55ID:oDCSMM9SM shrink_to_fitでも使えや
437デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 11:53:21.22ID:Odxsa8jS0438デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 11:58:54.95ID:uVFkIemlM 用途要求仕様要件目的予算を特定せずに何を判断せよと
439デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:02:59.10ID:mX2Zy9Do0 #include <iostream>
#include <vector>
using namespace std;
int main() {
std::vector<int> v(10);
cout << v.capacity();
return 0;
}
>>431
どこのコンパイラが20や15表示するの?教えてよ
俺の手元のGCCとclangとVCとiccは当然だけど10だったよ
そんなサイズ伸縮やreserveもする前から手前勝手に1.5倍やら2倍やら確保するコンパイラがあるなんて怖いからさ
お前の妄想や思い込みじゃないなら当然答えられるよね?そんな長文書くほど自信満々なら知らないわけないよね?
教えてよ
#include <vector>
using namespace std;
int main() {
std::vector<int> v(10);
cout << v.capacity();
return 0;
}
>>431
どこのコンパイラが20や15表示するの?教えてよ
俺の手元のGCCとclangとVCとiccは当然だけど10だったよ
そんなサイズ伸縮やreserveもする前から手前勝手に1.5倍やら2倍やら確保するコンパイラがあるなんて怖いからさ
お前の妄想や思い込みじゃないなら当然答えられるよね?そんな長文書くほど自信満々なら知らないわけないよね?
教えてよ
440デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:08:29.19ID:Odxsa8jS0441デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:10:06.32ID:oDCSMM9SM 末尾追加したいのかCのように固定長で使いたいのかはっきりせぇや
どう転んでも文句言いやがってw
どう転んでも文句言いやがってw
442デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:10:28.85ID:N/cOPmK/d 生配列と比較するならサイズ既知なのだから、サイズ指定して初期化、もしくはreserveするのは当然だろ
push_back使うなら、生配列の側も現在の実サイズを別変数で管理しないと公平でない
push_back使うなら、生配列の側も現在の実サイズを別変数で管理しないと公平でない
443デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:12:09.83ID:Odxsa8jS0 >>442
区別することが大切だといってるんだよ。
区別することが大切だといってるんだよ。
444デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:12:52.89ID:oDCSMM9SM キャッシュなんてキャッシュラインサイズごとに読み込むのだから
使いもしないvectorで確保した領域全部読むわけちゃうぞwwww
vectorか生ポかなんて低次元な話ではなくメモリアライメントまで気にしとけと。
だからごちゃごちゃ言うやつはデフォのmallocなんか使ってないよなと確認したのにwww
使いもしないvectorで確保した領域全部読むわけちゃうぞwwww
vectorか生ポかなんて低次元な話ではなくメモリアライメントまで気にしとけと。
だからごちゃごちゃ言うやつはデフォのmallocなんか使ってないよなと確認したのにwww
445デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:13:13.85ID:uVFkIemlM 「トレードオフを理解はするが、許せない」
こういうことか?
こういうことか?
446デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:13:21.22ID:mX2Zy9Do0 >>440
あっはい追加時の話はどうでもいいです
追加量が読めてるならreserveなり最初に大きめに構築するなりするだけだし、読めてないならそれ必要なコストですよね?
私が聞きたいのはreserveや要素追加も伴わずに勝手に常に2倍で確保するというコンパイラorライブラリの具体的な情報です
質問に答えてください
あっはい追加時の話はどうでもいいです
追加量が読めてるならreserveなり最初に大きめに構築するなりするだけだし、読めてないならそれ必要なコストですよね?
私が聞きたいのはreserveや要素追加も伴わずに勝手に常に2倍で確保するというコンパイラorライブラリの具体的な情報です
質問に答えてください
447デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:14:08.32ID:oDCSMM9SM448デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:14:30.07ID:Odxsa8jS0 >>441
そういうことじゃなくて、新しく追加された機能を何も考えずにそのまま使って
C#との速度比較に用いてC++がC#に負けたと主張するQiitaの記事が「C# 速度」と
いうGoogle検索で上位に来るから困るんだよ。
そういうことじゃなくて、新しく追加された機能を何も考えずにそのまま使って
C#との速度比較に用いてC++がC#に負けたと主張するQiitaの記事が「C# 速度」と
いうGoogle検索で上位に来るから困るんだよ。
449デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:15:34.63ID:Odxsa8jS0 ここはアホが多すぎ。
450デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:16:03.22ID:oDCSMM9SM451デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:16:29.07ID:oDCSMM9SM >>449
敗北宣言なら素直になれよwww
敗北宣言なら素直になれよwww
452デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:17:18.98ID:N/cOPmK/d この展開だと、知識もスキルも足りていない奴が、誤解でvector使えないといっているだけにしか見えないな
453デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:18:06.65ID:mX2Zy9Do0454デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:18:33.35ID:Odxsa8jS0 日本のITが駄目な理由がここに全て現れている。
その上、自分達がレベルが高いと思っているのがまた痛い。
日本はもう二度と浮上しないな。
その上、自分達がレベルが高いと思っているのがまた痛い。
日本はもう二度と浮上しないな。
455デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:20:42.38ID:mX2Zy9Do0456デフォルトの名無しさん (スフッ)
2019/07/03(水) 12:21:17.25ID:N/cOPmK/d 自ら体現してくれているんかな
457デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:22:21.83ID:oDCSMM9SM >>454
逃げる前にお願い
効率悪いとかそういう話ではなく
一番最初に主張していた
スマポとコンテナの方が生ポより危険
をちゃんと言ってからにしてよ。
危険性の話から効率の話になってc#とか言い出して
ひたすらトーンダウンなんだけどwww
逃げる前にお願い
効率悪いとかそういう話ではなく
一番最初に主張していた
スマポとコンテナの方が生ポより危険
をちゃんと言ってからにしてよ。
危険性の話から効率の話になってc#とか言い出して
ひたすらトーンダウンなんだけどwww
458デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:24:17.58ID:mX2Zy9Do0 やめたれよ
vector2倍コンパイラの名前をずばり答える能力すらない人間にその抽象的な質問は難しすぎる
vector2倍コンパイラの名前をずばり答える能力すらない人間にその抽象的な質問は難しすぎる
459デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:26:05.69ID:+Us18YV60 駄目なところは用途によって変えるべきなのに包括的に物事を判断することしかしないから
vectorが確保するcapacity程度でも気にすべき環境なら当然気にするし、そうじゃないなら気にしなきゃいい
気にしなくて良いケースでもとにかく重箱の隅をつついて難癖つけるような輩が居る
サービス利用者からみて大差無けりゃどうでもいいのに変なところにこだわり持つからサービスが生まれない
vectorが確保するcapacity程度でも気にすべき環境なら当然気にするし、そうじゃないなら気にしなきゃいい
気にしなくて良いケースでもとにかく重箱の隅をつついて難癖つけるような輩が居る
サービス利用者からみて大差無けりゃどうでもいいのに変なところにこだわり持つからサービスが生まれない
460デフォルトの名無しさん (ササクッテロル)
2019/07/03(水) 12:44:03.73ID:gUarAEEJp なんや今日はいろんなスレでキチガイ多いなと思ってID見たら
VS2019スレで妄言垂れてたのと同じキチガイじゃねえかw
VS2019スレで妄言垂れてたのと同じキチガイじゃねえかw
461デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:45:35.43ID:mX2Zy9Do0 このボケ老人よそでも暴れてたのか
くわばらくわばら
くわばらくわばら
462デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 12:51:50.17ID:oDCSMM9SM そもそもmallocでも管理領域あるしな。
さもなくばfreeするときサイズわからんようなるからwww
さもなくばfreeするときサイズわからんようなるからwww
463デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 12:56:09.64ID:XRQdtmsk0 2018年度の流行語大賞をとった彼じゃないの
C言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/37
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0
>>36
(略)
> void show_all(void)
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
(略)
C言語なら俺に聞け 148
https://mevius.5ch.net/test/read.cgi/tech/1537347410/37
37 名前:デフォルトの名無しさん (ワッチョイ f94f-yqSl)[sage] 投稿日:2018/09/22(土) 01:42:06.64 ID:16ZpsTnK0
>>36
(略)
> void show_all(void)
なんだこれ?引数 void って初めて見たぞ。文法的にありなのかこれ?
(略)
464デフォルトの名無しさん (アウアウカー)
2019/07/03(水) 14:05:50.55ID:zZwRICR4a まあ今のC++で生配列と生ポインタ使う理由はゼロだわな
465デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 14:52:53.74ID:4T2xKCYX0466デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 14:53:02.50ID:eEnZmm5I0 C互換APIは生配列と生ポインタで受け渡しなので完全排除は不可能。
467デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 15:25:33.02ID:uVFkIemlM 狭いローカルスコープ内にある
int arr[3] をわざわざ std::array<int, 3> にしようとも思わないけどな
int arr[3] をわざわざ std::array<int, 3> にしようとも思わないけどな
468デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 15:40:50.78ID:mX2Zy9Do0 なるべくスマポとarrayに変えていくべきだというのも、置き換えきれない所があるのも両方とも正しい
どっちかの極端に走るとさっきの老害みたいになる
どっちかの極端に走るとさっきの老害みたいになる
469デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 16:44:21.55ID:Odxsa8jS0470デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 16:59:26.35ID:mX2Zy9Do0471デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:05:49.68ID:Odxsa8jS0 無能の意見 ---> 「自転車は危険なので全員三輪車に乗るべき」
472デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:10:10.75ID:mX2Zy9Do0473デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:24:49.04ID:Odxsa8jS0 昔、「BASIC言語は誰でも使える」と言われていたが、STLのコンテナや
スマポを使ったプログラムは、絶対にそれだけを使って、かつ、効率を
考えなければそれに匹敵するくらい簡単。
でもそれでは駄目な領域が有る。
スマポを使ったプログラムは、絶対にそれだけを使って、かつ、効率を
考えなければそれに匹敵するくらい簡単。
でもそれでは駄目な領域が有る。
474デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:28:06.79ID:+Us18YV60 何の主張で議論してんのかさっぱりわからん
マウント取りたいだけ大会みたい
マウント取りたいだけ大会みたい
475デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:28:59.92ID:mX2Zy9Do0476デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 17:31:39.19ID:oDCSMM9SM477デフォルトの名無しさん (スプッッ)
2019/07/03(水) 17:33:01.94ID:Kb9ohuF+d 効率も大部分の応用分野では悪くないんだな
478デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 17:34:35.23ID:giz72OluM 用途にあったコンテナなら効率いいだろ
479デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:44:37.37ID:mX2Zy9Do0480デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:54:58.55ID:Odxsa8jS0 この板のような匿名性の過疎スレはレベルの低い連中の意見が多数派になりやすい。
つまり少数精鋭の完全な逆。
つまり少数精鋭の完全な逆。
481デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:55:47.12ID:mX2Zy9Do0482デフォルトの名無しさん (スプッッ)
2019/07/03(水) 17:55:50.16ID:Kb9ohuF+d お願いだからレベルの高さを見せてくれよ
483デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 17:57:20.12ID:giz72OluM アホだから要素追加時のとごっちゃになってんだろう
要素0でpush_backしたらキャパ2以上になるのはそれなりにあるんかな
要素0でpush_backしたらキャパ2以上になるのはそれなりにあるんかな
484デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:58:11.80ID:Odxsa8jS0 馬鹿にはいくら言っても本質が理解できない。ちゃんと答えても的外れな
観点で何か言って来る。質問自体が馬鹿だから答えてもしょうがない。
観点で何か言って来る。質問自体が馬鹿だから答えてもしょうがない。
485デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 17:58:59.95ID:Odxsa8jS0 いっとくが、むしろ俺は天才といわれてる。天才の言うことが理解できない
凡人たちだ。ここの人は。
凡人たちだ。ここの人は。
486デフォルトの名無しさん (スプッッ)
2019/07/03(水) 17:59:33.93ID:Kb9ohuF+d 確かにこの流れを見た感想そのものだがw
487デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:00:04.76ID:uMmlAeoj0 変なの住み着いちゃったな
488デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:01:34.34ID:Odxsa8jS0 雑魚は黙っとけ。馬鹿どもめが。
489デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:01:56.66ID:mX2Zy9Do0490デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:03:42.55ID:mX2Zy9Do0491デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:04:02.74ID:mX2Zy9Do0492デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:04:04.67ID:lDDJeJVH0 >>483
一般的には、capacity()サイズを倍々にしていく実装が多いんじゃないかな?
一般的には、capacity()サイズを倍々にしていく実装が多いんじゃないかな?
493デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:04:18.16ID:Odxsa8jS0494デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:06:23.80ID:Odxsa8jS0 凡人は本質を理解できないからソースを見たり実験しないと分からないんだろう。
天才はソースも実験もしないでも結論が分かる。数学と同じだ。
実験して結果が違っていたとしてもそれは例外だと断定できる。
なぜなら、絶対にそういう実装で無ければ成らないことが天才には分かるからだ。
凡人の反論は受け付けない。これは絶対だ。実験とか関係ない。
天才はソースも実験もしないでも結論が分かる。数学と同じだ。
実験して結果が違っていたとしてもそれは例外だと断定できる。
なぜなら、絶対にそういう実装で無ければ成らないことが天才には分かるからだ。
凡人の反論は受け付けない。これは絶対だ。実験とか関係ない。
495デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:09:13.98ID:mX2Zy9Do0 そっか
天才様の書いたプログラムは必ず天才様が思ったとおりに動くに決まってるから、動かしてテストもしないんだね
怖すぎるから絶対に本番用コードに近寄らないでね天才様
天才様の書いたプログラムは必ず天才様が思ったとおりに動くに決まってるから、動かしてテストもしないんだね
怖すぎるから絶対に本番用コードに近寄らないでね天才様
496デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:11:21.64ID:Odxsa8jS0497デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:11:41.02ID:uMmlAeoj0 適当に書いたことに予想外に食いつかれて、
答えられなくなったからネタに走ってごまかそうとしてるだけだろ
答えられなくなったからネタに走ってごまかそうとしてるだけだろ
498蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/03(水) 18:13:16.43ID:qqPAz+Nsd 「便所の落書きに天才現る (2)」
(c) 蟻人間 2019年7月発行.
無断転載を禁ず.
(c) 蟻人間 2019年7月発行.
無断転載を禁ず.
499デフォルトの名無しさん (オイコラミネオ)
2019/07/03(水) 18:13:49.02ID:giz72OluM500デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:15:19.28ID:mX2Zy9Do0 >>496
うん、天才様はそれでいいんだろうけど、凡人の世界では書いたコードは必ずテストして報告書を納品するものなんですよ
天才様は我々凡人のやり方とは合わないでしょうから、どうぞお一人で自分のためだけのコーディングを楽しんでください
未テストのクソコードを凡人世界に持ち込まないでくださいお願いします
うん、天才様はそれでいいんだろうけど、凡人の世界では書いたコードは必ずテストして報告書を納品するものなんですよ
天才様は我々凡人のやり方とは合わないでしょうから、どうぞお一人で自分のためだけのコーディングを楽しんでください
未テストのクソコードを凡人世界に持ち込まないでくださいお願いします
501デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:16:15.13ID:Odxsa8jS0 プログラミングでテストが必要なのは、たとえば、過去に書いた何万行ものコード
を全部は思い出せないので、grep検索などで調査した結果にもと髄手後から機能追加
する時にミスが入り込んだり、ケアレスミスがあるからだ。
ところが、アルゴリズムのようなものは数学のようなもので、完全に正しいことが
天才には分かる。ところがここの人たちは凡才なので分からないから、いつまで
たっても証拠を見せろ、説明せよ、を連呼し続けてるだけだ。しかしそれは、
天才の結論が間違っていることにはならない。
を全部は思い出せないので、grep検索などで調査した結果にもと髄手後から機能追加
する時にミスが入り込んだり、ケアレスミスがあるからだ。
ところが、アルゴリズムのようなものは数学のようなもので、完全に正しいことが
天才には分かる。ところがここの人たちは凡才なので分からないから、いつまで
たっても証拠を見せろ、説明せよ、を連呼し続けてるだけだ。しかしそれは、
天才の結論が間違っていることにはならない。
502デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:16:39.18ID:NC+hYvon0 あれということは追加したときに足らんときって一時的に約3倍メモリくうのか
503デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:17:15.31ID:mX2Zy9Do0 凡人向け情報
ちょっと古いけど2倍とか1.5倍とか色々あるみたいよ
もちろんcapacity超えるサイズが必要になってから伸ばすけど
http://www.kmonos.net/wlog/111.html#_2334100705
ちょっと古いけど2倍とか1.5倍とか色々あるみたいよ
もちろんcapacity超えるサイズが必要になってから伸ばすけど
http://www.kmonos.net/wlog/111.html#_2334100705
504デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:18:05.72ID:Odxsa8jS0 >>499
勘違いなどしてない。勘違いだと思い込むのは、ここの人たちが凡人だからだよ。
勘違いなどしてない。勘違いだと思い込むのは、ここの人たちが凡人だからだよ。
505蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/03(水) 18:20:25.23ID:qqPAz+Nsd 天才って普段どんなもの作ってるの?
506デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:20:28.94ID:Odxsa8jS0507デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:22:29.45ID:mX2Zy9Do0 つまんね
自分を天才だと思いこむ狂人を演じる雑魚ってどんだけ殻被らないと自分を守れないの?
もうオモチャにする価値もないわNGします
自分を天才だと思いこむ狂人を演じる雑魚ってどんだけ殻被らないと自分を守れないの?
もうオモチャにする価値もないわNGします
508デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:23:43.51ID:Odxsa8jS0 >>507
思い込みではない。
思い込みではない。
509デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:26:07.57ID:NC+hYvon0 まずvectorはN個の要素を確保するときはN個分でふつうの配列と同じ分だけ確保する
要素追加時にキャパ足りない場合は配列の1.5とか2倍に増加する
この時ID:Odxsa8jS0のいうとおり2*Nとかになるときがあるという話ですね
要素追加時にキャパ足りない場合は配列の1.5とか2倍に増加する
この時ID:Odxsa8jS0のいうとおり2*Nとかになるときがあるという話ですね
510デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:29:57.28ID:Odxsa8jS0 >>509
最初に確保したまま、絶対に後から追加しないなら、固定長配列で十分だから、
2倍などになっていることの方が通常。ただし、2倍、2倍で増えていく場合でも、
平均のテーブルサイズは、要素数の1.5倍+(固定サイズの制御情報)となる。
最初に確保したまま、絶対に後から追加しないなら、固定長配列で十分だから、
2倍などになっていることの方が通常。ただし、2倍、2倍で増えていく場合でも、
平均のテーブルサイズは、要素数の1.5倍+(固定サイズの制御情報)となる。
511デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:30:24.41ID:mX2Zy9Do0512デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:31:44.49ID:NC+hYvon0 >>510
指定の2倍とかになる開発環境あげてよ
指定の2倍とかになる開発環境あげてよ
513デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:33:16.53ID:mX2Zy9Do0 >>512
少なくともGCCとclangとVCとiccは違うよ
少なくともGCCとclangとVCとiccは違うよ
514デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:33:29.09ID:Odxsa8jS0 >>511
アホはだまっとれ。誰も2倍固定などとは思ってない。4倍でもなんでもいい。
とにかく、そのような「感じ」で増加していくということだけだ。「感じで」
といったのは数学的感覚に優れた秀才以上の人でなければ理解できなくて、
凡才には誤解を招くだろうが。
アホはだまっとれ。誰も2倍固定などとは思ってない。4倍でもなんでもいい。
とにかく、そのような「感じ」で増加していくということだけだ。「感じで」
といったのは数学的感覚に優れた秀才以上の人でなければ理解できなくて、
凡才には誤解を招くだろうが。
515デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:34:26.35ID:Odxsa8jS0 >>513
何度も行ってるが、それはテストの時にたまたまそうなっただけ。
何度も行ってるが、それはテストの時にたまたまそうなっただけ。
516デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:36:00.16ID:NC+hYvon0 >>515
君のいうとおりになった環境とコードあげたら君の勝ちよ
君のいうとおりになった環境とコードあげたら君の勝ちよ
517デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:37:25.69ID:Odxsa8jS0518デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 18:38:04.09ID:oDCSMM9SM 引くに引けないバカ
何が危険なのー
何が危険なのー
519蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/03(水) 18:38:42.10ID:qqPAz+Nsd 天才様、ReactOSの開発を手伝って下さい。お願いします
520デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:39:36.54ID:Odxsa8jS0521デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:42:33.07ID:NC+hYvon0 >>517
テストしなくても分かるなら探すまでもなく名前挙げれるでしょ
テストしなくても分かるなら探すまでもなく名前挙げれるでしょ
522デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:46:22.64ID:Odxsa8jS0523蟻人間 ◆T6xkBnTXz7B0 (スフッ)
2019/07/03(水) 18:46:23.12ID:qqPAz+Nsd 天才さーん!
524デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:48:44.79ID:Odxsa8jS0525デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:54:33.31ID:mX2Zy9Do0 キチガイ見えない状態で書いてるけどなんかほざいてるっぽいので
通りかかった初心者が勘違いしないように正しいこと書いておくね
std::vectorのpush_backが要求する計算量は「償却定数時間」で、これはざっくり言うと
たまに長い時間がかかるけどそれが稀なので、平均的には定数で抑えられるってこと
capacityいっぱいのvectorにpush_backをすると領域再確保してO(n)かかるけど、その頻度がnのオーダーより小さければ償却定数時間になる
2倍2倍で広げるってのはそういうこと(再確保の頻度がO(logn)になる)。2倍に限らず1.5倍とかでもいいしそれは実装次第
で、キチガイの主張は「push_backは定数時間!だからその保証のために追加先として始めから2倍の領域を確保してて効率悪いんだ(ドヤァ…」だけど見ての通り大間違いね
capacityがいっぱいになってから再確保すれば償却定数時間には十分で、要素が追加されるかもわからない最初の段階でそんな事する必要はまったくない
当然ながら実際にGCCとclangとVCとiccは、例えば要素10個で構築されればcapacityを10にする常識的な実装をしている
追加量が読めていて、何度も2倍2倍で再確保するのが無駄な場合はcapacityをあらかじめ広げるreserve()という操作があるので、それを使えば効率的になる
蛇足だけど、キチガイの主張通り常に2倍の領域を確保したとしても、push_backの(償却でない)定数時間は達成できないことも指摘しておく
その2倍が埋まったら結局再配置はしないといけないわけだからね。キチガイ式の実装は再確保のタイミングをずらして、メモリを無駄にしつつ当初の目的も達成できないという
大変悪い見本です。真似しないようにしましょう
以上、長文失礼しました
通りかかった初心者が勘違いしないように正しいこと書いておくね
std::vectorのpush_backが要求する計算量は「償却定数時間」で、これはざっくり言うと
たまに長い時間がかかるけどそれが稀なので、平均的には定数で抑えられるってこと
capacityいっぱいのvectorにpush_backをすると領域再確保してO(n)かかるけど、その頻度がnのオーダーより小さければ償却定数時間になる
2倍2倍で広げるってのはそういうこと(再確保の頻度がO(logn)になる)。2倍に限らず1.5倍とかでもいいしそれは実装次第
で、キチガイの主張は「push_backは定数時間!だからその保証のために追加先として始めから2倍の領域を確保してて効率悪いんだ(ドヤァ…」だけど見ての通り大間違いね
capacityがいっぱいになってから再確保すれば償却定数時間には十分で、要素が追加されるかもわからない最初の段階でそんな事する必要はまったくない
当然ながら実際にGCCとclangとVCとiccは、例えば要素10個で構築されればcapacityを10にする常識的な実装をしている
追加量が読めていて、何度も2倍2倍で再確保するのが無駄な場合はcapacityをあらかじめ広げるreserve()という操作があるので、それを使えば効率的になる
蛇足だけど、キチガイの主張通り常に2倍の領域を確保したとしても、push_backの(償却でない)定数時間は達成できないことも指摘しておく
その2倍が埋まったら結局再配置はしないといけないわけだからね。キチガイ式の実装は再確保のタイミングをずらして、メモリを無駄にしつつ当初の目的も達成できないという
大変悪い見本です。真似しないようにしましょう
以上、長文失礼しました
526デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 18:55:40.74ID:oDCSMM9SM527デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:56:24.16ID:Odxsa8jS0528デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 18:56:42.45ID:oDCSMM9SM >>527
危険な具体例はよ
危険な具体例はよ
529デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 18:58:43.37ID:Odxsa8jS0 >>525 の勘違いは、「勉強しなければ分からない」と思っているところに有る。
天才は勉強しなくてもその場で考えれば自力で本に書いてあること同じ結論が
導ける。だから、言葉は分からない。ただ、同じアルゴリズムがひらめく。
そして全てが分かる。
天才は勉強しなくてもその場で考えれば自力で本に書いてあること同じ結論が
導ける。だから、言葉は分からない。ただ、同じアルゴリズムがひらめく。
そして全てが分かる。
530デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 19:01:31.61ID:TLK5eLSla >>419のメモリ使用量でvectorよりlistが勝るというのも間違いだよね。
531デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:02:27.93ID:Odxsa8jS0532デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:03:10.68ID:Odxsa8jS0 >>530
1つの要素 TYPE のサイズが十分大きいばあいは間違いじゃない。
1つの要素 TYPE のサイズが十分大きいばあいは間違いじゃない。
533デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 19:06:30.93ID:oDCSMM9SM534デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 19:08:18.94ID:oDCSMM9SM listはシーケンシャルアクセスでも異常に遅いけどな。
中間挿入の頻度がシーケンシャルアクセスよりも低い場合はdeque使ったほうが遥かにマシ。
中間挿入の頻度がシーケンシャルアクセスよりも低い場合はdeque使ったほうが遥かにマシ。
535蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 19:10:00.22ID:JWWmhuhv0 >>532
やっぱりお前さんは阿呆か?
std::listは1要素に対して要素のデータとポインタ2個消費する。std::vectorはヘッダーとcapacity個の要素のデータだけだ。要素が多ければlistの方が不利。
やっぱりお前さんは阿呆か?
std::listは1要素に対して要素のデータとポインタ2個消費する。std::vectorはヘッダーとcapacity個の要素のデータだけだ。要素が多ければlistの方が不利。
536デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:10:08.72ID:Odxsa8jS0537デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:10:43.15ID:Odxsa8jS0 >>535
小学生の算数からやり直して来い。
小学生の算数からやり直して来い。
538デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:10:47.63ID:mX2Zy9Do0 std::listはメモリ局所性が低いので現代的なコンピュータだと遅いってのはよく言われてる
サイズが小さいと中間挿入でvectorに負けることさえある
サイズが小さいと中間挿入でvectorに負けることさえある
539デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:12:59.20ID:Odxsa8jS0540デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:13:32.58ID:mX2Zy9Do0 天才様のクソ実装だとvectorは要素数の2倍のcapacityを抱えてなければならないからlistよりでかくなるんだよ
天才様のクソ実装がいかにダメ実装なのかを示す実例なわけだ
天才様のクソ実装がいかにダメ実装なのかを示す実例なわけだ
541デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:16:07.25ID:uMmlAeoj0 今のコンピュータなんて100MB単位でメモリ食ったって構わんのだしメモリ効率なんてそこまで気にすることか?
気にしなきゃならん組み込みの開発ではSTLなんか使わんだろ
気にしなきゃならん組み込みの開発ではSTLなんか使わんだろ
542デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:18:43.49ID:Odxsa8jS0 >>540
アホはだまっとれ。
アホはだまっとれ。
543デフォルトの名無しさん (アウアウウー)
2019/07/03(水) 19:18:47.59ID:sI4W8GZya >>539
さっきからずっと小学生の喧嘩のような返ししかできてないけど、もしかしてリアルキッズ?
お前がどんなに自分を天才だと評価して事実天才だったとしても、周りからはただの興奮して引くに引けなくなったバカとしか見えてないよ。
天才アピールしてるし周囲にもそう認識して欲しいなら、それが実現できるように頑張りなよ。
さっきからずっと小学生の喧嘩のような返ししかできてないけど、もしかしてリアルキッズ?
お前がどんなに自分を天才だと評価して事実天才だったとしても、周りからはただの興奮して引くに引けなくなったバカとしか見えてないよ。
天才アピールしてるし周囲にもそう認識して欲しいなら、それが実現できるように頑張りなよ。
544デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:20:09.54ID:Odxsa8jS0 >>543
そんなめんどくさいことしても、凡人以下のここの人には理解してもらえない。
そんなめんどくさいことしても、凡人以下のここの人には理解してもらえない。
545デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:21:13.51ID:Odxsa8jS0 まあ、せいぜい数年掛けて理解すればいい。
一生理解できない人も多いのかも知れんが。
そんな世話してられないし、知らん。
一生理解できない人も多いのかも知れんが。
そんな世話してられないし、知らん。
546デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:23:47.88ID:CGn5f0Sh0 要素を挿入したときにイテレータが無効になってよいかどうかがlistを選択する基準で結論が出てるんですよ。
これ、欧米では20世紀に決着がついてるんです。
これ、欧米では20世紀に決着がついてるんです。
547蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 19:29:21.30ID:JWWmhuhv0 天才は明快な直感に導かれ、才能を実証する。秀才は歴史や書物に学び、凡人は愚鈍な考えや経験に頼る。
548デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 19:59:26.10ID:924EnmCA0 >>536
早く教えて何が危険かwwww
早く教えて何が危険かwwww
549蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 20:05:24.45ID:JWWmhuhv0 std::listは、連結リストである。rbeginとrendを持っているから、逆方向にも走査できる二重連結リストである。二重連結リストは、1個の要素に対して要素データと2個のポインタを消費する。
要素データのサイズをEとし、1個のポインタのサイズをPとすると、std::listが1個の要素に対して消費するメモリーサイズは、(E + P * 2)バイトとなる。
要素数やルートポインタを含むヘッダ情報のサイズをH1とし、n個の要素があるとすると、合計 H1 + n * (E + P * 2) バイトとなる。
std::vectorは、動的配列であり、要素の個数や要素を格納する連続データへのポインタなどを含むヘッダ情報を持っている。
ヘッダ情報のサイズをH2とする。capacityの個数が実際の要素の1.5倍だと仮定すると、(H2 + n * E * 1.5)となる。
listよりvectorの方がサイズが小さいと仮定すると、
H1 + n * (E + P * 2) > H2 + n * E * 1.5.
n * (E + P * 2 - E * 1.5) > H2 - H1.
n * (P * 2 - E * 0.5) > H2 - H1.
n > (H2 - H1) / (P * 2 - E * 0.5).
となる。
要素データのサイズをEとし、1個のポインタのサイズをPとすると、std::listが1個の要素に対して消費するメモリーサイズは、(E + P * 2)バイトとなる。
要素数やルートポインタを含むヘッダ情報のサイズをH1とし、n個の要素があるとすると、合計 H1 + n * (E + P * 2) バイトとなる。
std::vectorは、動的配列であり、要素の個数や要素を格納する連続データへのポインタなどを含むヘッダ情報を持っている。
ヘッダ情報のサイズをH2とする。capacityの個数が実際の要素の1.5倍だと仮定すると、(H2 + n * E * 1.5)となる。
listよりvectorの方がサイズが小さいと仮定すると、
H1 + n * (E + P * 2) > H2 + n * E * 1.5.
n * (E + P * 2 - E * 1.5) > H2 - H1.
n * (P * 2 - E * 0.5) > H2 - H1.
n > (H2 - H1) / (P * 2 - E * 0.5).
となる。
551蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 20:17:55.39ID:JWWmhuhv0552蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 20:23:33.84ID:JWWmhuhv0 しかしこれは「小さいばあいは」の間違いだ。
553デフォルトの名無しさん (ワンミングク)
2019/07/03(水) 20:48:16.58ID:y5Z0HSqrM 凄まじい勢いでスレ伸びてて草
久々に香ばしいのきたな
久々に香ばしいのきたな
554デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 21:02:28.13ID:ZH/uFNI10555蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 21:20:13.81ID:JWWmhuhv0 Borland C++ 5.5.1でGlobalMemoryStatusテスト。
MemCheck1.cpp (std::vector<DWORDLONG>)
https://gist.github.com/katahiromz/b4f73c25a92f60b1b40b544a3b0474e1
4170416128
MemCheck2.cpp (std::list<DWORDLONG>)
https://gist.github.com/katahiromz/b460644fc9ca5202e7ffc017b9a1dfa2
4031049728
要素の個数は0xFFFFFF個。確かにstd::listの方がメモリー消費量が少ない。
MemCheck1.cpp (std::vector<DWORDLONG>)
https://gist.github.com/katahiromz/b4f73c25a92f60b1b40b544a3b0474e1
4170416128
MemCheck2.cpp (std::list<DWORDLONG>)
https://gist.github.com/katahiromz/b460644fc9ca5202e7ffc017b9a1dfa2
4031049728
要素の個数は0xFFFFFF個。確かにstd::listの方がメモリー消費量が少ない。
556蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 21:23:21.80ID:JWWmhuhv0 あれ? dwMemoryLoadは、MemCheck1の方が小さいのか。。。
分からなくなってきた。。。
分からなくなってきた。。。
557蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 21:31:03.30ID:JWWmhuhv0 >確かにstd::listの方がメモリー消費量が少ない。
これは間違い。Availが少ない → 消費量が多い
だから std::vectorの方が消費量が小さいということになる。
これは間違い。Availが少ない → 消費量が多い
だから std::vectorの方が消費量が小さいということになる。
558蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 21:32:13.65ID:JWWmhuhv0 よって、自称天才君は敗北。はっはっは。
559デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 21:42:26.72ID:/a+dV4Ct0 180°正反対の間違いをしておいて他人を笑うとは。
560蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 21:55:07.11ID:JWWmhuhv0 中学レベルの問題が直感で分かるような自称天才は、問題を見るとすぐ答えがわかるから、自分が天才・神童だと思い込む。
しかし、複数の変数が絡む数式になると直感は外れるようになる。だから、考える努力をしない自称天才は高校くらいで落ちぶれる。
しかし、複数の変数が絡む数式になると直感は外れるようになる。だから、考える努力をしない自称天才は高校くらいで落ちぶれる。
561デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:05:55.22ID:S/aBv8fE0562デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:07:27.64ID:Mf/6Ojwj0563デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:11:09.39ID:MMRf6v9s0 std array使わないで生配列推奨する意味がわからない
564デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:26:30.32ID:S/aBv8fE0 どのようにプログラミングしても、vector には勝てない!
真ん中あたりの要素の追加・削除で、大量の要素がズレても、それでもvector が有利!
だから素人は、vector を使っておけばよい
リストは、ランダムアクセスできない。
常に線形探索だから、O(n)
真ん中あたりの要素の追加・削除で、大量の要素がズレても、それでもvector が有利!
だから素人は、vector を使っておけばよい
リストは、ランダムアクセスできない。
常に線形探索だから、O(n)
565デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:29:53.07ID:JvcEtzLy0 >>564
お前はRubyだけ弄ってればいいよ
お前はRubyだけ弄ってればいいよ
566デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:30:37.31ID:U3PwexmG0 >>563
記述が少ない
記述が少ない
567蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)
2019/07/03(水) 22:32:11.35ID:JWWmhuhv0 allocaもいいぞ。
568デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 22:43:27.14ID:S/aBv8fE0 Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの本に書いてあるけど、
Rubyでは、Hashの要素数が増えていくと、再編成される
バケット数は、2の累乗付近の素数を使う。
つまり、倍々に増やしていく
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...
1つのバケットには、平均して5つの要素を入れる(衝突)。
11*5=55, 19*5=95, 37*5=185...
つまり要素数が、56, 96, 186...個になると、
バケット数を増やして、再編成する
普段、1万個の要素を追加するのに、8msかかるが、
再編成するタイミングでは、20msかかる。
要素数が増えていけば、もっとかかる
10万個なら200ms、100万個なら2秒と、再編成があるたび、ドンドン増えていく
Rubyの実装系、Ruby1.9のRuby仮想マシンの本に書いてあるけど、
Rubyでは、Hashの要素数が増えていくと、再編成される
バケット数は、2の累乗付近の素数を使う。
つまり、倍々に増やしていく
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...
1つのバケットには、平均して5つの要素を入れる(衝突)。
11*5=55, 19*5=95, 37*5=185...
つまり要素数が、56, 96, 186...個になると、
バケット数を増やして、再編成する
普段、1万個の要素を追加するのに、8msかかるが、
再編成するタイミングでは、20msかかる。
要素数が増えていけば、もっとかかる
10万個なら200ms、100万個なら2秒と、再編成があるたび、ドンドン増えていく
569デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 22:47:35.04ID:+l3ADsTnM570デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:06:06.02ID:Odxsa8jS0 >>558
違う。
vector は、最悪、a*N*sizeof(TYPE) + (制御情報サイズ) だ。
listは、常に、N * ( sizeof(TYPE) + ポインタサイズ * b ) + (制御情報サイズ) だ。
aは、実装依存で、典型的には2。vectorを確保した直後を除いて1であることはない。
b は、1または2。
あなたのやったテストでは、vector を確保した直後だから、a=1になっていただけ。
違う。
vector は、最悪、a*N*sizeof(TYPE) + (制御情報サイズ) だ。
listは、常に、N * ( sizeof(TYPE) + ポインタサイズ * b ) + (制御情報サイズ) だ。
aは、実装依存で、典型的には2。vectorを確保した直後を除いて1であることはない。
b は、1または2。
あなたのやったテストでは、vector を確保した直後だから、a=1になっていただけ。
571デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:08:20.45ID:MMRf6v9s0 bが1ですむ可能性があるとかw
572デフォルトの名無しさん (ブーイモ)
2019/07/03(水) 23:18:47.11ID:+l3ADsTnM vectorとかlistとか初心者向けの話題いつまでやんの?
まさにパーキンソンの凡俗法則だな
天才様が主導してるわけだがw
まさにパーキンソンの凡俗法則だな
天才様が主導してるわけだがw
573デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:22:56.33ID:MMRf6v9s0 使用メモリって観点だと、realloc時は要素数の1+a倍だから、最悪値もそれになる
まあ、要素数の見積もりが全くできない状況でもaは容易に制御可能でcapacity見ながらreallocが起こる直前のpush_back前にreserveかけりゃ済む
最悪1要素ずつ拡張すればa~1
性能は最悪だがw
まあ、要素数の見積もりが全くできない状況でもaは容易に制御可能でcapacity見ながらreallocが起こる直前のpush_back前にreserveかけりゃ済む
最悪1要素ずつ拡張すればa~1
性能は最悪だがw
574デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:26:03.86ID:U3PwexmG0 参考書に答え書いてあるものを永久に語り続けるのおもろ
575デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:42:03.45ID:MMRf6v9s0 std::list<std::string> lines;
std::string l;
while(std::getline(std::cin,l)){
lines.push_back(l); //(1)
//lines.push_back(std::move(l)); //(2)
}
だと(1)の方がいいよね
特に行内の文字数、行数が大きくなると速度差はかなり大きくなる。
stringじゃなく同様のvectorでも同じ
listだと(2)が速いだろうけど
std::string l;
while(std::getline(std::cin,l)){
lines.push_back(l); //(1)
//lines.push_back(std::move(l)); //(2)
}
だと(1)の方がいいよね
特に行内の文字数、行数が大きくなると速度差はかなり大きくなる。
stringじゃなく同様のvectorでも同じ
listだと(2)が速いだろうけど
576デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:42:46.34ID:Odxsa8jS0 >>549
あなたの誘導に沿って説明しよう。
要素の型をTYPEとすると、要素の1つのバイト数を、E=sizeof(TYPE)であり、
それが、x 個ある場合を考える。
L(x) = H1 + x * (E + P * 2) // list に必要なバイト数
V(x) = H2 + x * E * 1.5 // vector に必要なバイト数
となっている。
P は、ポインタ1つ当りのバイト数であり、Windows の 32BIT モードの時は、4 である。
これらの関数は、どちらも n に対する1次関数で、
グラフにすると、傾きはそれぞれ、
a_L = E + P * 2 // list の必要バイト数の傾き
= E + 8
a_V = 1.5 * E // vector の必要バイト数の傾き
だ。
要素1つ辺りのサイズ E が十分大きい場合、たとえば、100バイトの時を考えれば、
a_L = 100 + 8 = 108
a_V = 1.5 * 100 = 150
となる。
だから、V(x)の傾きの方が、L(x) の傾きのよりも大きい。
だから明らかに V(x) の方が効率が悪い事になる。H1, H2 がどんな
値であれ、要素数 x が十分大きい場合にはメモリ効率の良さは
xに対するグラフの傾きで決まる。H1, H2 は、いわゆる「y切片」
を決めるだけで、x が大きい時には影響はなくなっていくから。
あなたの誘導に沿って説明しよう。
要素の型をTYPEとすると、要素の1つのバイト数を、E=sizeof(TYPE)であり、
それが、x 個ある場合を考える。
L(x) = H1 + x * (E + P * 2) // list に必要なバイト数
V(x) = H2 + x * E * 1.5 // vector に必要なバイト数
となっている。
P は、ポインタ1つ当りのバイト数であり、Windows の 32BIT モードの時は、4 である。
これらの関数は、どちらも n に対する1次関数で、
グラフにすると、傾きはそれぞれ、
a_L = E + P * 2 // list の必要バイト数の傾き
= E + 8
a_V = 1.5 * E // vector の必要バイト数の傾き
だ。
要素1つ辺りのサイズ E が十分大きい場合、たとえば、100バイトの時を考えれば、
a_L = 100 + 8 = 108
a_V = 1.5 * 100 = 150
となる。
だから、V(x)の傾きの方が、L(x) の傾きのよりも大きい。
だから明らかに V(x) の方が効率が悪い事になる。H1, H2 がどんな
値であれ、要素数 x が十分大きい場合にはメモリ効率の良さは
xに対するグラフの傾きで決まる。H1, H2 は、いわゆる「y切片」
を決めるだけで、x が大きい時には影響はなくなっていくから。
577デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:43:59.85ID:Odxsa8jS0 >>576
[続き]
>>549 の最後の方は:
『listよりvectorの方がサイズが小さい』・・・・☆
と同値な条件は、
H1 + n * (E + P * 2) > H2 + n * E * 1.5 ・・・・(1)
⇔
n * (P * 2 - E * 0.5) > H2 - H1 ・・・・(2)
である、というところまでは正しい。ところが、中学校で習ったように、
不等式では、両辺を負の数で割るると、不等号の向きが逆になってしまう。
だから、割る数が正か負かを気をつけないといけない。
今、E = 100, P = 4 だから、
(P * 2 - E * 0.5) = 4 * 2 - 100 * 0.5 = 8 - 50 = -42
となり、負の値である。E が1000や10000の場合は、どちらも
もっと絶対値の大きな負の値となる。だから、この部分は要素のサイズ
が十分大きいと必ず負の値である。ゆえに、(2) をこの数で割ると、
n < (H2 - H1) / (P * 2 - E * 0.5) ・・・・(3)
となり、あなたの書いた式とは不等号の向きが逆となる。
さて、この(3)の意味は、右辺の値は、Eの値が100の場合は、分母は負の値であるが、
分子の H2-H1 の値は実装依存なので、右辺全体としては、正か負かも定まらない。
そこで、右辺の値を R とおくと、n < R という式になる。
この意味は、ある値 R よりも要素数 n が小さいと、この式が成立する、
ということである。この式は、あなたが書いたように、
☆と同値な式である。だから、ある値 R よりも要素数 n が小さいと、
☆が成立することを意味している。つまり、要素数が十分小さいときに
のみ「list より vector のサイズが小さい」のである。逆に、
要素数が十分大きければ、「list より vector のサイズが大きい」
ことが言える。
[続き]
>>549 の最後の方は:
『listよりvectorの方がサイズが小さい』・・・・☆
と同値な条件は、
H1 + n * (E + P * 2) > H2 + n * E * 1.5 ・・・・(1)
⇔
n * (P * 2 - E * 0.5) > H2 - H1 ・・・・(2)
である、というところまでは正しい。ところが、中学校で習ったように、
不等式では、両辺を負の数で割るると、不等号の向きが逆になってしまう。
だから、割る数が正か負かを気をつけないといけない。
今、E = 100, P = 4 だから、
(P * 2 - E * 0.5) = 4 * 2 - 100 * 0.5 = 8 - 50 = -42
となり、負の値である。E が1000や10000の場合は、どちらも
もっと絶対値の大きな負の値となる。だから、この部分は要素のサイズ
が十分大きいと必ず負の値である。ゆえに、(2) をこの数で割ると、
n < (H2 - H1) / (P * 2 - E * 0.5) ・・・・(3)
となり、あなたの書いた式とは不等号の向きが逆となる。
さて、この(3)の意味は、右辺の値は、Eの値が100の場合は、分母は負の値であるが、
分子の H2-H1 の値は実装依存なので、右辺全体としては、正か負かも定まらない。
そこで、右辺の値を R とおくと、n < R という式になる。
この意味は、ある値 R よりも要素数 n が小さいと、この式が成立する、
ということである。この式は、あなたが書いたように、
☆と同値な式である。だから、ある値 R よりも要素数 n が小さいと、
☆が成立することを意味している。つまり、要素数が十分小さいときに
のみ「list より vector のサイズが小さい」のである。逆に、
要素数が十分大きければ、「list より vector のサイズが大きい」
ことが言える。
578デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:44:44.32ID:U3PwexmG0 もういいってしょうもない話
579デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:45:33.05ID:MMRf6v9s0 数学得意とか言うわりに内容が中学生レベルなのをわざわざ説明するとか
580デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:45:34.35ID:Odxsa8jS0581デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:48:05.25ID:Odxsa8jS0 >>579
ここにいる人たちが、懇切丁寧に説明しないと分かってくれないからだよ。
ここにいる人たちが、懇切丁寧に説明しないと分かってくれないからだよ。
582デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:50:03.60ID:U3PwexmG0 3行以下にできないなら説明しなくていいです・・・
583デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:53:56.60ID:MMRf6v9s0 メモリ容量が厳しいときにreserveしないなんてあり得ないし、Typeがでかく、要素数不明なときにそのままvectorに放り込むとかも普通しないよね
それこそスマポとか使ってでもlist使わない方がましな場合が殆んど
それこそスマポとか使ってでもlist使わない方がましな場合が殆んど
584デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:54:04.68ID:Odxsa8jS0585デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:54:50.78ID:efP/7s/50 (自分が知っている部分だけ)懇切丁寧に説明しないと
=知らない部分は無視して天才どうのこうので議論を拒否する
説明した部分に疑問持ってるレスどれ?
=知らない部分は無視して天才どうのこうので議論を拒否する
説明した部分に疑問持ってるレスどれ?
586デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:55:01.46ID:U3PwexmG0 ヒント:ここは5ch
587デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:58:40.02ID:MMRf6v9s0 大体が生配列とvectorの比較だったわけだが、なんで可変長でのメモリ使用でlistと比較しているんだ?
vectorじゃなく生配列使うべき有意な優位性を説明しろと
vectorじゃなく生配列使うべき有意な優位性を説明しろと
588デフォルトの名無しさん (ワッチョイ)
2019/07/03(水) 23:59:40.90ID:Odxsa8jS0589デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:04:14.98ID:+bvr5vAX0 そもそも、最大限使えるメモリ容量から計算してreserveしておけば、listよりより多くの要素数格納できるんだな。
listの場合malloc的なものの管理領域も大きくなるってのも、メモリ厳しい場合には無視できない
listの場合malloc的なものの管理領域も大きくなるってのも、メモリ厳しい場合には無視できない
590デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 00:04:37.74ID:BGPK0DtMM >>560
行列がわからない自称上級者の蟻さん、チーッス
行列がわからない自称上級者の蟻さん、チーッス
591デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:05:06.10ID:OupeWpkE0 >>587
生配列に必要なバイト数:
A(x)=E * x
vector に必要なバイト数
V1(x) = H2 + 1.5 * E * x // 平均時
V2(x) = H2 + 2 * E * x // 最悪時
これらをみるだけでも、生配列の方が効率がいい事が分かる。
要素を書き込む時にも、生配列は典型的には1クロック。
vectorだと、境界チェックが入るので5クロックくらいは必要となる。
境界チェックは条件 jump なので、パイプライン類の乱れが生じ
だいぶ遅くなることが有る。
生配列に必要なバイト数:
A(x)=E * x
vector に必要なバイト数
V1(x) = H2 + 1.5 * E * x // 平均時
V2(x) = H2 + 2 * E * x // 最悪時
これらをみるだけでも、生配列の方が効率がいい事が分かる。
要素を書き込む時にも、生配列は典型的には1クロック。
vectorだと、境界チェックが入るので5クロックくらいは必要となる。
境界チェックは条件 jump なので、パイプライン類の乱れが生じ
だいぶ遅くなることが有る。
592デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:05:27.97ID:OMb74HbU0 listとvectorの違いなんて皆わかった上で議論しているのに天才さんはバカなの?
最近アルゴリズム入門書でも読んで語りたいだけなの?
最近アルゴリズム入門書でも読んで語りたいだけなの?
593デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:08:18.15ID:OupeWpkE0 >>589
それもあるが、reserve()は時間がかかるので、扱うデータが巨大な場合には、
無駄が多くなるのと、reserve()するまでの最悪時には2倍の領域が必要となる事が
メモリ用件が厳しいときには問題となることも有る。
ただし、listにもデメリットは有る。それは、1要素を追加するときに new されるので、
典型的には150クロック程度の時間がかかってしまうことだ。
それもあるが、reserve()は時間がかかるので、扱うデータが巨大な場合には、
無駄が多くなるのと、reserve()するまでの最悪時には2倍の領域が必要となる事が
メモリ用件が厳しいときには問題となることも有る。
ただし、listにもデメリットは有る。それは、1要素を追加するときに new されるので、
典型的には150クロック程度の時間がかかってしまうことだ。
594デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:08:37.45ID:+bvr5vAX0 容量既知なら配列との差は管理領域とヒープが別になるオーバヘッドだけ
ヒープが別になるってのを責めて来るならまあ分かるが、容量既知なのに全くその情報使わない最悪値で比較とかセンス無さすぎ
ヒープが別になるってのを責めて来るならまあ分かるが、容量既知なのに全くその情報使わない最悪値で比較とかセンス無さすぎ
595デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:10:31.88ID:OupeWpkE0 >>592
このスレの99%の人が分かってない。
このスレの99%の人が分かってない。
596デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:11:56.58ID:+bvr5vAX0 size 0でのreserveは別に時間かからんだろ
それこそlistで要素追加でnewされるの1回分と大差ない
それこそlistで要素追加でnewされるの1回分と大差ない
597デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:15:07.03ID:pXTZ8sNQ0 MATLABで演算するときforループを使って一つずつ計算するよりもsumやmeanなどの関数を行列に対して行う方が圧倒的に速いのですが
C++にもMATLABのように一括で高速に行う方法がありますか?
C++にもMATLABのように一括で高速に行う方法がありますか?
598デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:17:08.19ID:OupeWpkE0 >>593
なお、要素が、サイズが小さくて、かつコンストラクタを持たないような
単純なデータだとreserve()の時間が list の (150 * 要素数) (クロック)
よりも短いことも少なくて済む事もあるが、サイズが600バイトを超えたり、
要素の中に、newして持っているデータがあるような場合があったりする
場合や、要素のコンストラクタが重い作業を行うには、reserve()は、
listよりも遅くなる。
だから、要素が今後のプログラミングの過程でどんなものになるか分からない場合には、
listは安定した速度が維持できるが、vectorはだんだん遅くなっていく恐れが有る。
なお、要素が、サイズが小さくて、かつコンストラクタを持たないような
単純なデータだとreserve()の時間が list の (150 * 要素数) (クロック)
よりも短いことも少なくて済む事もあるが、サイズが600バイトを超えたり、
要素の中に、newして持っているデータがあるような場合があったりする
場合や、要素のコンストラクタが重い作業を行うには、reserve()は、
listよりも遅くなる。
だから、要素が今後のプログラミングの過程でどんなものになるか分からない場合には、
listは安定した速度が維持できるが、vectorはだんだん遅くなっていく恐れが有る。
599デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 00:19:04.81ID:Evy1L2/hM クロックとか言ってるやつもロートルだな
全く世の技術についていけてない
全く世の技術についていけてない
600デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:19:14.34ID:QgrgqeUu0 >>597
ない
ない
601デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:19:40.29ID:OupeWpkE0602デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 00:21:13.94ID:Evy1L2/hM ハイパフォーマンス必要なとこでlistなんか使わないからど素人さん
603デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:25:40.63ID:OupeWpkE0 >>601
それに、reserve()のためには、一般的には、要素は、コピー・コンストラクタを
持つ必要がある。一方、listの場合には、コピ・コンを省略できる。
C++を使っていると分かるが、デフォルト・コンストラクタを作ることはほぼ必須
だが、コピ・コンはめんどくさいので書きたくないことが多い。その場合に、
listの方が楽。
それに、reserve()のためには、一般的には、要素は、コピー・コンストラクタを
持つ必要がある。一方、listの場合には、コピ・コンを省略できる。
C++を使っていると分かるが、デフォルト・コンストラクタを作ることはほぼ必須
だが、コピ・コンはめんどくさいので書きたくないことが多い。その場合に、
listの方が楽。
604デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:26:45.21ID:OupeWpkE0 >>602
vectorとreserve()の組み合わせはもっと駄目だ。
vectorとreserve()の組み合わせはもっと駄目だ。
605デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:27:30.60ID:OMb74HbU0 forward_list
とか知らないんだろうな
バカそうだし
とか知らないんだろうな
バカそうだし
606デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:31:07.37ID:+bvr5vAX0 >>601
要素既知の配列と同様の用途の場合、まともなスキルのあるプログラマなら、サイズ指定constructor、empty状態でのresize、empty状態でのreserve
のいずれかを使う。
そうするとmalloc一回と、前者二つは要素数分の要素型の配置newデフォルトもしくはコピーconstructorが呼ばれる。
要素既知の配列と同様の用途の場合、まともなスキルのあるプログラマなら、サイズ指定constructor、empty状態でのresize、empty状態でのreserve
のいずれかを使う。
そうするとmalloc一回と、前者二つは要素数分の要素型の配置newデフォルトもしくはコピーconstructorが呼ばれる。
607デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:31:14.53ID:z3/vg39Q0608デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:36:08.58ID:+bvr5vAX0 vector相当にcapaciry()+xなreserve相当をするCArrayってのがあってだな
MS自身がどうしてもこれじゃなきゃ駄目な場合以外使うなと言うくらいの糞
MS自身がどうしてもこれじゃなきゃ駄目な場合以外使うなと言うくらいの糞
609デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:36:47.68ID:OupeWpkE0 >>606
要素数既知なら、最速が TYPE aaa[N] で次が new TYPE[N]。
逢えて vector を使う意味がない。
empty状態の reserve() とかしてまで vector にこだわる意味が分からない。
要素数既知なら、最速が TYPE aaa[N] で次が new TYPE[N]。
逢えて vector を使う意味がない。
empty状態の reserve() とかしてまで vector にこだわる意味が分からない。
610デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:38:37.52ID:OupeWpkE0 >>607
むしろ逆で、生配列使えばいい場面で、何故か vector に固執する人がいるんだよ。
むしろ逆で、生配列使えばいい場面で、何故か vector に固執する人がいるんだよ。
611デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:39:15.33ID:aorw8zR90 どこにそんな人居たの?
レス番あげてよ
レス番あげてよ
612デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:48:01.35ID:+bvr5vAX0 サイズ完全固定ならstd::array
最大サイズが既知なら少し無駄だがvector
格納領域内包する最大サイズ指定のvector擬きがあればベストなんだが
最大サイズが既知なら少し無駄だがvector
格納領域内包する最大サイズ指定のvector擬きがあればベストなんだが
613デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:51:39.87ID:+bvr5vAX0 後はサイズが大きくてスタック上に確保したくない時もvector使うだろ。
614デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:53:59.44ID:OupeWpkE0 >>613
その場合は、TYPE *pAaa = new TYPE[N];
その場合は、TYPE *pAaa = new TYPE[N];
615デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 00:56:53.06ID:knl8K+q10 まだやってるのかw
616デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:00:33.98ID:+bvr5vAX0617デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:02:18.21ID:jo/K3cJX0 自称天才すげーな
自分が何かいてるのか分かってないんだろうな
規格も読んでなさそう
自分が何かいてるのか分かってないんだろうな
規格も読んでなさそう
618デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:05:54.39ID:+bvr5vAX0619デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:21:19.34ID:OupeWpkE0 >>618
あなたは、C++とC#の速度が変わらないと思ってる系統の人だよね。
あなたは、C++とC#の速度が変わらないと思ってる系統の人だよね。
620デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:21:50.22ID:vGw4d28b0621デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 01:52:09.26ID:GHUD7qNB0 shared_array はまだ標準化されてないんだね。
622デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 02:32:03.47ID:z3/vg39Q0 たぶんこのおっさん例外安全って何かわかってないw
623デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 02:56:32.67ID:OupeWpkE0624デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 02:58:14.89ID:boKHx0+g0 >>623
誰がヒープ回収するねん...
誰がヒープ回収するねん...
625デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 03:00:26.38ID:QgrgqeUu0 とりあえずnewとかmake_sharedとかIDEがなくても型が明らかな場合はauto使おう
626デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 03:00:52.24ID:OupeWpkE0627デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 03:01:53.76ID:OupeWpkE0 「メモリ確保に失敗したこと」のメッセージを出す以外に対処法はないと
思うんだけど。
思うんだけど。
628デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 03:16:52.36ID:+bvr5vAX0 なんでnewで例外起こる話しているんだか
本当に全くわかっていないのね
本当に全くわかっていないのね
629デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 03:47:53.77ID:P4gQiU7c0 どうでもいい話はやめて今までにない新しい画期的なテクニックの話をしてくれ
頼む
一生のお願い
頼む
一生のお願い
630デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 05:48:37.09ID:Vr4LlPEB0 >>549
> n * (P * 2 - E * 0.5) > H2 - H1.
> n > (H2 - H1) / (P * 2 - E * 0.5).
> となる。
(P * 2 - E * 0.5)がマイナスだと不等号が逆転するのを忘れている
3 > 2 の両辺を-1で割ると -3 < -2
> n * (P * 2 - E * 0.5) > H2 - H1.
> n > (H2 - H1) / (P * 2 - E * 0.5).
> となる。
(P * 2 - E * 0.5)がマイナスだと不等号が逆転するのを忘れている
3 > 2 の両辺を-1で割ると -3 < -2
631デフォルトの名無しさん (オイコラミネオ)
2019/07/04(木) 07:22:01.27ID:Ic4+qAXvM >>629
そんなテクニックはここに書かない
そんなテクニックはここに書かない
632デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 08:41:24.64ID:boKHx0+g0633デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 08:52:16.87ID:yrHYMywV0634デフォルトの名無しさん (スッップ)
2019/07/04(木) 09:10:15.58ID:MHKH+BBjd また話それたのかw
ポインタもコンテナも結局都合の悪いレスはスルーしてるからこうなる
ポインタもコンテナも結局都合の悪いレスはスルーしてるからこうなる
635デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 09:34:14.60ID:8zHkL2vVM こいつC++98で時間止まってるからな
20年かけてSTLコンテナの使い方学んで
その結果がvectorよりlist、それ以上に生ポインタが最強って結論
どうせ40代おっさん低収入だろうけど、自分を天才と呼び、
数学ががどうのこうの言うわり、単なる足し算掛け算をどや顔でさらすし、
本当読んでて可哀想になってくる
20年かけてSTLコンテナの使い方学んで
その結果がvectorよりlist、それ以上に生ポインタが最強って結論
どうせ40代おっさん低収入だろうけど、自分を天才と呼び、
数学ががどうのこうの言うわり、単なる足し算掛け算をどや顔でさらすし、
本当読んでて可哀想になってくる
636デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 10:15:53.90ID:mwmcFkvyM 要素数固定ってコンパイル時に固定の意味と実行時にある値に決まるって意味があると思うけど
前者では T Arr[N]
後者では std::unique_ptr<T[ ],>
を使ってしまう。
それ自体をreturnしないときは std::array を使うのがかったるく感じてしまう
前者では T Arr[N]
後者では std::unique_ptr<T[ ],>
を使ってしまう。
それ自体をreturnしないときは std::array を使うのがかったるく感じてしまう
637デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 10:35:11.99ID:VBCrH1IpM638デフォルトの名無しさん (アウアウウー)
2019/07/04(木) 11:36:25.81ID:Bk1vOaTSa639デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 11:42:55.77ID:mwmcFkvyM でも std::begin std::end があるからスコープ内の単純な配列に std::arrayを使う
メリットがいまいちわからないんだよねー
メリットがいまいちわからないんだよねー
640デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 11:55:46.77ID:zoOerLpiM begin endは普通の配列にも使えるだろ
641デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 11:56:48.16ID:tdjije7mM642デフォルトの名無しさん (スフッ)
2019/07/04(木) 12:06:11.23ID:VQxD4eRSd template関数で受けたときにポインターにならないからauto lambdaで受けてもsizeがとれる
643デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 12:17:57.65ID:mwmcFkvyM >>640
だから普通の配列を使ってしまうという話なんだが
だから普通の配列を使ってしまうという話なんだが
644デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 12:19:43.85ID:mwmcFkvyM645デフォルトの名無しさん (ササクッテロ)
2019/07/04(木) 12:49:15.77ID:bmYDtW5Wp646デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 12:50:55.35ID:zoOerLpiM >>643
変なところで改行するなよ
変なところで改行するなよ
647デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 15:52:29.03ID:mwmcFkvyM648デフォルトの名無しさん (アウアウウー)
2019/07/04(木) 17:29:10.64ID:XTdeRRSwa 構造体をchar配列にシリアライズする方法を教えてください
649デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 17:31:04.99ID:QgrgqeUu0 memcpy
650デフォルトの名無しさん (ワントンキン)
2019/07/04(木) 17:32:23.03ID:MlPmA9V9M キャストしてぶっ込め
なお環境とアドレスによってはバスエラーが発生したりするよ
なお環境とアドレスによってはバスエラーが発生したりするよ
651デフォルトの名無しさん (スフッ)
2019/07/04(木) 17:41:18.95ID:DFmBoT0+d >>645
cとの互換性に起因した過去コードとの互換性保つために、配列を引数で渡そうとするとpointer渡しになるのだろう。
受け側でtemplate使ってT (&arr)[N]みたいに明示的に引き取らない限りは
c++20でstd::spanが使えるようになれば楽になるな。
それでも完全転送は通らないけど
cとの互換性に起因した過去コードとの互換性保つために、配列を引数で渡そうとするとpointer渡しになるのだろう。
受け側でtemplate使ってT (&arr)[N]みたいに明示的に引き取らない限りは
c++20でstd::spanが使えるようになれば楽になるな。
それでも完全転送は通らないけど
652デフォルトの名無しさん (アウアウウー)
2019/07/04(木) 17:42:05.56ID:Bk1vOaTSa 配置newで出来たりしますか?
653デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 20:00:03.82ID:C9xm0dvc0 >>651
いや、受け側でそう書いても、普通の配列はいけても
arrayは通らないんだわ・・自分の書き方が間違ってるのかもしれんけど
https://wandbox.org/permlink/LBzgUfB6MRtk9P12
いや、受け側でそう書いても、普通の配列はいけても
arrayは通らないんだわ・・自分の書き方が間違ってるのかもしれんけど
https://wandbox.org/permlink/LBzgUfB6MRtk9P12
654デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 20:05:01.64ID:SRe/Pasd0 使ってるコンパイラのArrayヘッダの実装見てそのメンバ変数名をしらべてそれを指定すれば通る
655デフォルトの名無しさん (スフッ)
2019/07/04(木) 20:12:08.06ID:DFmBoT0+d reinterpret_castならいけたけど未定義かどうかは知らん
656デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 20:40:50.48ID:C9xm0dvc0 別に無理に通そうとしてるわけじゃないんだぜ
arrayの不備のひとつではないかな、ってだけ
arrayの不備のひとつではないかな、ってだけ
657デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 20:53:10.33ID:SRe/Pasd0 暗黙変換定義すれば出来るんだろうけど、出来ない方が自然な気がする
658デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 20:54:01.06ID:GHUD7qNB0659デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 21:48:13.92ID:WSU/R6xT0 確かに内部配列の参照を取得する手段はあってもいい気がする
先頭のポインタはdata()で取れるけど、配列型そのものへと読み替える手段って標準の範囲にはないんだな
ちょっと意外
先頭のポインタはdata()で取れるけど、配列型そのものへと読み替える手段って標準の範囲にはないんだな
ちょっと意外
660デフォルトの名無しさん (ワントンキン)
2019/07/04(木) 22:18:07.85ID:MlPmA9V9M えっじゃあdataはどこをさしてんのよ
661デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 22:36:36.22ID:j4C7DC1D0662デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 22:41:46.89ID:C9xm0dvc0 >>660
いや、わかりにくかったかもしれんけど
配列の参照にキャスト出来れば配列またはarrayから、静的に要素数が取れるのよ
現状だとそういう時array版と配列の参照版の2つを書かなきゃいけない
ので配列の参照のキャスト演算子も定義しててくれたらなぁ・・
と思ったらポインタへのキャストも無いのね
まぁあくまでSTLフレンドリーな配列ってことなんだろう
いや、わかりにくかったかもしれんけど
配列の参照にキャスト出来れば配列またはarrayから、静的に要素数が取れるのよ
現状だとそういう時array版と配列の参照版の2つを書かなきゃいけない
ので配列の参照のキャスト演算子も定義しててくれたらなぁ・・
と思ったらポインタへのキャストも無いのね
まぁあくまでSTLフレンドリーな配列ってことなんだろう
663デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 22:51:51.05ID:GHUD7qNB0 ポインタ使うなと言ったそばからイテレータ使ってたら同じだろ、と誰も言わない優しいスレ
664デフォルトの名無しさん (ブーイモ)
2019/07/04(木) 22:52:31.12ID:8zHkL2vVM バイナリ肥大を屁とも思わず静的解決マンセーのやつに名前つけたいんだけどなんかないかな?
665デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:07:27.43ID:OMb74HbU0 イテレータ渡してるならdistanceで取ればええやん
666デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:11:39.07ID:+bvr5vAX0 バイナリむしろ減ることも多いしな
バイナリ肥大が許せないなら多少の工夫で何とでもなる
バイナリ肥大が許せないなら多少の工夫で何とでもなる
667デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:30:20.81ID:kZ6AZY+J0 バイナリ肥大を気にするならそもそもc++じゃなくてc使えや。
668デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:32:41.86ID:+bvr5vAX0 c使っても変わらんだろ
無駄に面倒臭くなるだけで
c++のままバイナリ肥大対策した方が楽だし効果も変わらない
無駄に面倒臭くなるだけで
c++のままバイナリ肥大対策した方が楽だし効果も変わらない
669デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:34:32.32ID:kZ6AZY+J0 なんだ真性のバカか。
670デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:35:07.30ID:gNJuQcZk0671デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:36:33.90ID:gNJuQcZk0 訂正;
誤:だってコンパイラが見渡せる範囲で要素のpush_back()をしていないし…
正:だってコンパイラが見渡せない範囲で要素のpush_back()をやられる可能性が無いコードやし…
誤:だってコンパイラが見渡せる範囲で要素のpush_back()をしていないし…
正:だってコンパイラが見渡せない範囲で要素のpush_back()をやられる可能性が無いコードやし…
672デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:37:50.01ID:OMb74HbU0 お前らそんなにカツカツのターゲットで仕事してるの?
フリースタンディング環境でトースターの制御マイコンとかそういう世界?
フリースタンディング環境でトースターの制御マイコンとかそういう世界?
673デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:42:16.32ID:+bvr5vAX0 マイコンでRAM1キロとかでもc++つかうよ。
ヒープどころかスタックすら殆んど使えず、ループカウンタすらstatic使うような状況でも、高級マクロとしての性能はc++の方が上
オーバーロード使えるだけでもありがたい
ヒープどころかスタックすら殆んど使えず、ループカウンタすらstatic使うような状況でも、高級マクロとしての性能はc++の方が上
オーバーロード使えるだけでもありがたい
674デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:44:44.77ID:gNJuQcZk0 しかしポインタは悪という考えには賛成する
全てのオブジェクトはimmutableであるべきだが現実にはそうではない
(オブジェクト指向プログラミングはmutableなオブジェクトを作る仕事だと一般に理解されている
するとポインタや参照の使用はオブジェクトの参照透明性を失わせる究極の悪となる
全てのオブジェクトはimmutableであるべきだが現実にはそうではない
(オブジェクト指向プログラミングはmutableなオブジェクトを作る仕事だと一般に理解されている
するとポインタや参照の使用はオブジェクトの参照透明性を失わせる究極の悪となる
675デフォルトの名無しさん (ワッチョイ)
2019/07/04(木) 23:45:53.18ID:+bvr5vAX0 バイナリ肥大は余り気にしなくていい
ROM容量はRAMとは桁違いに余裕あるし
速度稼ぐためにテーブル作って持っておくとかでもc++だとやり易いw
ROM容量はRAMとは桁違いに余裕あるし
速度稼ぐためにテーブル作って持っておくとかでもc++だとやり易いw
676デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 00:42:05.40ID:iD2vPqXr0 ポインタは悪いは草
プログラムの性質そのものだろw
良いも悪いもない
プログラムの性質そのものだろw
良いも悪いもない
677デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 00:50:35.24ID:sXJnPGx/0 >>675
おいおい
今時組み込みでrom実行する環境ほとんどないだろ
だいたい普通肥大化したかどうか比較できん
2つ作ることなんてまずないし
もし容量が足りなくなったら実行コードより他のでかいデータがやり玉になるので目立たない
おいおい
今時組み込みでrom実行する環境ほとんどないだろ
だいたい普通肥大化したかどうか比較できん
2つ作ることなんてまずないし
もし容量が足りなくなったら実行コードより他のでかいデータがやり玉になるので目立たない
678デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:08:22.53ID:V2Gzd6Sr0 参照子を長い時間や広い空間で保持する行為が危険なのはどんな言語でも同じ。
679デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:20:04.09ID:RI4o57M10680デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:20:13.88ID:pqoXwmD60 ファームウェアのバージョンアップとかなら容量との戦い出てくるんでないの
681デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:20:46.48ID:Gz4SaY1k0 rom実行する業界ですまん
自分とこの環境はrom容量も限られてるけどロジックでの肥大化よりデータの肥大化の方が圧倒的に大きいからそこまで気にならんけど
自分とこの環境はrom容量も限られてるけどロジックでの肥大化よりデータの肥大化の方が圧倒的に大きいからそこまで気にならんけど
682679 (ワッチョイ)
2019/07/05(金) 01:29:54.68ID:RI4o57M10 すまん全部immutableならと書こうとして手が滑った、
683デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:33:18.52ID:RI4o57M10 ポップアップトースターのファームウェア(入力はほとんど時間と温度だけ、出力は動作だけ)で
実行コードより他のでかいデータが生じるケースとは
なんじゃらほい
実行コードより他のでかいデータが生じるケースとは
なんじゃらほい
684デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:33:25.26ID:iD2vPqXr0 高級アセンブラの役割があること理解してる奴いないな
685デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 01:48:21.75ID:84H5xbwY0 シンプルなポップアップトースターに電子制御はいらんし
電子制御するような高機能トースターなら音声データくらい入ってるかもしれん
電子制御するような高機能トースターなら音声データくらい入ってるかもしれん
686デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 02:03:59.75ID:iD2vPqXr0 転倒したときに加熱が停止するようにするくらいの制御はいるでしょ
687デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 02:10:23.60ID:RI4o57M10688デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 02:11:34.20ID:84H5xbwY0 転倒時の停止なんかに電子制御はいらん
床面に接触するとオンになり、離れたら回路が切断される、というような単純なスイッチだけで十分
床面に接触するとオンになり、離れたら回路が切断される、というような単純なスイッチだけで十分
689デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 02:12:54.60ID:RI4o57M10 もっとも、状態変数みたいなmutableで邪悪なものを使わずに
全てimmutablueなオブジェクトでスマートに済ませるなら、オブジェクトの生成がデータの生成に該当し、多少RAM容量を消費するが
な、
全てimmutablueなオブジェクトでスマートに済ませるなら、オブジェクトの生成がデータの生成に該当し、多少RAM容量を消費するが
な、
690デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 02:20:38.54ID:iD2vPqXr0 >>688
なるほど
なるほど
691デフォルトの名無しさん (ブーイモ)
2019/07/05(金) 07:41:44.43ID:RDJzDNDNM Rom実行でC++のテンプレートばりばり使ってバイナリ肥大しても問題ない環境ってどんなの?
プロセッサ、OS、メモリのサイズあたりどんなもん?
プロセッサ、OS、メモリのサイズあたりどんなもん?
692デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 08:32:12.48ID:Gz4SaY1k0 OSは無し、CPUは数百Mhz、RAMは数十KB
誤解を招いたかもしれんが環境がこういう感じなんでテンプレートばりばりなんて無理なんだ
誤解を招いたかもしれんが環境がこういう感じなんでテンプレートばりばりなんて無理なんだ
693デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 10:27:12.65ID:V2Gzd6Sr0 C++はろくに使いもしない巨大モジュールがプログラムのビルド時にリンクされるから実用性ないわな・・・
694デフォルトの名無しさん (ブーイモ)
2019/07/05(金) 11:53:33.73ID:RDJzDNDNM695デフォルトの名無しさん (ワンミングク)
2019/07/05(金) 12:05:00.53ID:vxFjgZssM またCで十分おじさんか
696デフォルトの名無しさん (スフッ)
2019/07/05(金) 12:26:27.03ID:8Dqkh8+pd もちろん例外なし、RTTIなし、標準コンテナなし、仮想関数無し、new mallocも無し
だよ
templateで組み込みのC関数呼び出しに変換する固定小数点クラス作ったり、peripheralの実アドレスにmapしてメンバ関数で制御可能なラッパー作ったりと、メモリやバイナリ肥大しない様に使うのでも、c++機能は色々使い手が多い
だよ
templateで組み込みのC関数呼び出しに変換する固定小数点クラス作ったり、peripheralの実アドレスにmapしてメンバ関数で制御可能なラッパー作ったりと、メモリやバイナリ肥大しない様に使うのでも、c++機能は色々使い手が多い
697デフォルトの名無しさん (ドコグロ)
2019/07/05(金) 13:02:54.74ID:yhA0U74XM いわゆるBetter Cだろ
俺もそう言うのよくやる
俺もそう言うのよくやる
698デフォルトの名無しさん (ブーイモ)
2019/07/05(金) 13:20:11.14ID:RDJzDNDNM699デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 13:31:43.83ID:h+45fasi0 ?
元々バイナリ肥大全く気にしないとかではないだろ
template使うとバイナリが必ず肥大するってのが大嘘なのよ
うまく使えばCよりユーザー側の負担を減らしたまま、バイナリサイズ減る方向に誘導出来る
ifdefのスイッチを型で分岐して自動指定するようなことが出来るからね
元々バイナリ肥大全く気にしないとかではないだろ
template使うとバイナリが必ず肥大するってのが大嘘なのよ
うまく使えばCよりユーザー側の負担を減らしたまま、バイナリサイズ減る方向に誘導出来る
ifdefのスイッチを型で分岐して自動指定するようなことが出来るからね
700デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 13:36:49.89ID:h+45fasi0 まあRAMが極端に少ない場合は、
大抵バイナリ肥大気にする前にRAMが枯渇してしまう
ROM浪費してまでRAM容量押さえる手段すらとることもあるし。
ループ回さず展開すればループ変数分のスタック消費は押さえられるみたいな奴
大抵バイナリ肥大気にする前にRAMが枯渇してしまう
ROM浪費してまでRAM容量押さえる手段すらとることもあるし。
ループ回さず展開すればループ変数分のスタック消費は押さえられるみたいな奴
701デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 13:38:34.49ID:iD2vPqXr0 そうですか
どうでもいいですね
どうでもいいですね
702デフォルトの名無しさん (ワンミングク)
2019/07/05(金) 14:29:40.45ID:vxFjgZssM 多相アロケータとか組み込みに使えそうで期待してる
703デフォルトの名無しさん (ドコグロ)
2019/07/05(金) 19:29:27.74ID:cg54bwGhM704デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 22:54:57.76ID:v6DHhGs90 なおc++を使うことで増えるバイナリ肥大化は考慮しなくて良いものとする。
みたいなクソ意見。
みたいなクソ意見。
705デフォルトの名無しさん (ワントンキン)
2019/07/05(金) 23:06:22.44ID:RqC4v1rZM PCなら考慮しなくていいしプアな環境ならスタートアップルーチン削りまでする場合もあるし
環境書かなきゃクソも何もないわ
環境書かなきゃクソも何もないわ
706デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 23:23:06.20ID:RI4o57M10707デフォルトの名無しさん (ワッチョイ)
2019/07/05(金) 23:35:12.09ID:RI4o57M10 よく見たら2 MBやったorz
まあRAMは多いほうが良い
コードもRAMに置いた方が速いしimmutableなプログラミングもしやすいし、、
まあRAMは多いほうが良い
コードもRAMに置いた方が速いしimmutableなプログラミングもしやすいし、、
708デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 00:24:21.88ID:Cx3pk18b0 ramよりromの方がだいたい安価
電源が不安定でも一定の動作の保証がほしい
OS無いんで電源投入時の処理から自前で実装
そもそもそこまで速度重視しない
組み込みだとこういう環境があるんすよ
技術的には枯れた世界かもしれんが
電源が不安定でも一定の動作の保証がほしい
OS無いんで電源投入時の処理から自前で実装
そもそもそこまで速度重視しない
組み込みだとこういう環境があるんすよ
技術的には枯れた世界かもしれんが
709デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 02:13:02.83ID:2DlqEmd30 stringからstd::chrono::secondsへ変換するにはどうしたらよいですか??????????
710デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 02:18:48.19ID:QpY/QUgO0 auto sec=std::chrono::seconds(std::stoi(s));
711デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 02:23:42.88ID:2DlqEmd30 atoiだとオーバーフローする場合がありませんか?
712蟻人間 ◆T6xkBnTXz7B0 (スププ)
2019/07/06(土) 02:42:12.32ID:F4bvg3qDd タイヤに空気入れると破裂しませんか?
713デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 08:21:27.31ID:UHbZjDbS0 ディグダグのROMは何キロバイトですか?
714デフォルトの名無しさん (ワッチョイ)
2019/07/06(土) 10:43:54.53ID:YCbxVHxg0 stoullにしなさい
時間はintで扱っちゃあかん
あの日までもう20年切ってるんだ
時間はintで扱っちゃあかん
あの日までもう20年切ってるんだ
715デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 00:31:17.33ID:t8N8shlC0 ↑誰か曲を付けよう
716デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 00:41:38.39ID:04ONxsyD0 いいかい、学生さん、トンカツをな、トンカツをいつでも食えるくらいになりなよ。
717デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 01:15:25.86ID:t8N8shlC0 >>335の続き。
目的は一応達成できていたものの、偶然に頼りすぎたきらいのある>>333式の解決策の改善を試みたが、
やっぱテンプレートだけでは済まず、関数のオーバーロードも援用しなければ(意図した記述量では)実現できなかった、
・ 関数テンプレートの部分特殊化をやらないと、
tr_pos<Foo, *>()、tr_pos<Bar, *>()、tr_pos<*, Foo>()、tr_pos<*, Foo>() (*=A, B, C, D, ...)
の特殊化を総当りで書く必要があり全然省力化にならない
(A, B, C, ...は1兆個ぐらいあるから、ほとんどコピペとはいえ4兆個のテンプレートの定義を書く必要が出てくる
・ というわけで、クラステンプレートを経由する例のやり方で関数テンプレートの部分特殊化はやった
・ 結局、テンプレートの名前解決規則ではコンパイラが名前を解決できなくなるものとして以下の4ケースが残った。
tr_pos<Foo, Bar>(), tr_pos<Foo, Foo>(), tr_pos<Bar, Foo>, tr_pos<Bar, Bar>()
こいつらは関数のオーバーロードで特殊化でおk
・ スフィ姉は未調査
いじょ
目的は一応達成できていたものの、偶然に頼りすぎたきらいのある>>333式の解決策の改善を試みたが、
やっぱテンプレートだけでは済まず、関数のオーバーロードも援用しなければ(意図した記述量では)実現できなかった、
・ 関数テンプレートの部分特殊化をやらないと、
tr_pos<Foo, *>()、tr_pos<Bar, *>()、tr_pos<*, Foo>()、tr_pos<*, Foo>() (*=A, B, C, D, ...)
の特殊化を総当りで書く必要があり全然省力化にならない
(A, B, C, ...は1兆個ぐらいあるから、ほとんどコピペとはいえ4兆個のテンプレートの定義を書く必要が出てくる
・ というわけで、クラステンプレートを経由する例のやり方で関数テンプレートの部分特殊化はやった
・ 結局、テンプレートの名前解決規則ではコンパイラが名前を解決できなくなるものとして以下の4ケースが残った。
tr_pos<Foo, Bar>(), tr_pos<Foo, Foo>(), tr_pos<Bar, Foo>, tr_pos<Bar, Bar>()
こいつらは関数のオーバーロードで特殊化でおk
・ スフィ姉は未調査
いじょ
718デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 01:22:19.64ID:t8N8shlC0 なおFooやBarにset()やget()のメソッドを追加してA, B, C, ...と共通にtr_pos()できるようにする案はパフォーマンス上の問題で論外なのでもともと却下
(set()やget()の追加は出し入れするデータの型としてintermediateなクラスWの存在を仮定しているが、FooやBarとWとの間の変換は極めて重い処理となる
(set()やget()の追加は出し入れするデータの型としてintermediateなクラスWの存在を仮定しているが、FooやBarとWとの間の変換は極めて重い処理となる
719デフォルトの名無しさん (アウアウウー)
2019/07/07(日) 09:11:52.62ID:SNWX9Bjla720デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 12:23:18.94ID:t8N8shlC0 >>719
共通ではありません
Foo->Bar、Bar->Fooは互いに他方の逆関数なので別
Foo->Foo、Bar->Barはそれぞれのコピコンを呼ぶように(今週から)しますた、
なお、先週は変換元インスタンスをx、変換先インスタンスをy、intermediateなクラスWをaとして、
inline void tr_pos(.const (変換元クラス).& x, (変換後クラス)& y) { tr_pos(x, a); tr_pos(a, y); }
とか書いていたので、上記4者は「表記上は」共通操作に見えるコードだったが
今週からはその共通性も無くなり申した、
共通ではありません
Foo->Bar、Bar->Fooは互いに他方の逆関数なので別
Foo->Foo、Bar->Barはそれぞれのコピコンを呼ぶように(今週から)しますた、
なお、先週は変換元インスタンスをx、変換先インスタンスをy、intermediateなクラスWをaとして、
inline void tr_pos(.const (変換元クラス).& x, (変換後クラス)& y) { tr_pos(x, a); tr_pos(a, y); }
とか書いていたので、上記4者は「表記上は」共通操作に見えるコードだったが
今週からはその共通性も無くなり申した、
721デフォルトの名無しさん (アウウィフ)
2019/07/07(日) 12:29:05.93ID:L+nDH+YyF722デフォルトの名無しさん (アウアウウー)
2019/07/07(日) 22:04:14.86ID:SWnsKia6a なんでC++で備えてる通信関係のインターフェースがソケット止まりなの
723デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 22:10:23.25ID:rayzKf1F0 需要がないから
724デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 22:26:16.63ID:2F5duMK20 少なくとも高レイヤのライブラリが標準で提供されることは今のところないな
725デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 22:50:37.10ID:gRf2diQc0 networking-TSで<net>を検討中だよ
C++20にはまだ入らなそうだけど
C++20にはまだ入らなそうだけど
726デフォルトの名無しさん (ワッチョイ)
2019/07/07(日) 23:00:04.50ID:yY7Z+zin0 無数にライブラリがあるじゃん
727デフォルトの名無しさん (オッペケ)
2019/07/09(火) 16:24:18.39ID:810tT4wer string で任意制度の整数とか浮動小数点数を実装した信頼されてるやつない?
コピペで済むようなやつ!
コピペで済むようなやつ!
728デフォルトの名無しさん (アウアウウー)
2019/07/09(火) 16:32:51.09ID:uGZEPt9ja 文字列から数値への変換で精度求めるのは設計が間違っているのでは?
729デフォルトの名無しさん (ドコグロ)
2019/07/09(火) 16:42:32.66ID:VtjrtSEDM COBOLのゾーン十進数みたいなやつ?
ネタとしては面白そうだな
ネタとしては面白そうだな
730デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 16:46:10.73ID:zjLFaLyy0 任意精度じゃないけどこういうのじゃダメ?
Gooooogle様が作ってるdouble-conversionっていうやつ
https://github.com/google/double-conversion
Gooooogle様が作ってるdouble-conversionっていうやつ
https://github.com/google/double-conversion
731デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 16:53:49.80ID:zjLFaLyy0 変換が望みではなかったか
732デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 20:59:34.72ID:5DOcmAvj0 if( auto a = f() ){}
ってのが便利でよく使ってんだが
2変数になった場合はどう書けばよい?
if( auto a = f() && auto b = g() ){}
って書いたらコンパイラに怒られた
ってのが便利でよく使ってんだが
2変数になった場合はどう書けばよい?
if( auto a = f() && auto b = g() ){}
って書いたらコンパイラに怒られた
733デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:10:59.22ID:ZHNSssOw0 fowrad_as_tupleして構造化束縛?カンマで行けるかな
734デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:38:25.16ID:t5qNdO7w0 if( auto a = f() && g() ){}
735デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:38:44.04ID:t5qNdO7w0 if( auto a = f() & g() ){}
736デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:51:32.92ID:E5vjkFcA0 //c++17
bool f() {
return true;
}
bool g() {
return true;
}
int main(void) {
if (auto a = f(); auto b = g() && a) {
std::cout << "True" << std::endl;
}
return 0;
}
bool f() {
return true;
}
bool g() {
return true;
}
int main(void) {
if (auto a = f(); auto b = g() && a) {
std::cout << "True" << std::endl;
}
return 0;
}
737デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:54:10.28ID:5DOcmAvj0 おお、しかしそれ
if( auto a = f() )
if( auto b = g() )
{
}
ってぶら下がり文で書いた方がマシ・・・
if( auto a = f() )
if( auto b = g() )
{
}
ってぶら下がり文で書いた方がマシ・・・
738デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 21:57:13.33ID:E5vjkFcA0 これでいいか
if (auto [a,b] = std::make_tuple(f(), g()); a && b) {
}
if (auto [a,b] = std::make_tuple(f(), g()); a && b) {
}
739デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 22:12:00.87ID:pkZ4t/JR0 short circuitが使えないのが痛い
結局if2つに分けて書いた方がましと言うことに
結局if2つに分けて書いた方がましと言うことに
740デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 22:27:33.86ID:td6qAd7k0 簡潔に表記しようとしてかえって素で書くより煩雑になってたら本末転倒だね
741デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 22:29:17.74ID:JhNoJX2l0 operator boolをa&&bの結果でoverrideしたpairを返す関数作って引数に実行対象の関数渡すのはダメか
742デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 22:43:40.47ID:11PXPZRU0 cobol風ならこんなのが有るよ
https://github.com/vpiotr/decimal_for_cpp
それと上で話になってるautoのループについて横槍で聞きたいんだけど
ちょっと変わったことしようとすると
どう分解?すればいいのか解らなくて
autoを上手く元の形に戻すコツみたいなものか
それを解説しているサイトとか有ったら教えてくだされ
https://github.com/vpiotr/decimal_for_cpp
それと上で話になってるautoのループについて横槍で聞きたいんだけど
ちょっと変わったことしようとすると
どう分解?すればいいのか解らなくて
autoを上手く元の形に戻すコツみたいなものか
それを解説しているサイトとか有ったら教えてくだされ
743デフォルトの名無しさん (アウアウウー)
2019/07/09(火) 22:52:20.35ID:qZOKZ1zLa >>742
何が知りたい?
何が知りたい?
744デフォルトの名無しさん (ワッチョイ)
2019/07/09(火) 23:08:48.39ID:kBXtWzHg0745デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 00:37:30.64ID:CjBjj/SJ0 >>744
もともと質問者があげていた&&のケースについての議論だから短絡評価で問題ないでしょ
もともと質問者があげていた&&のケースについての議論だから短絡評価で問題ないでしょ
746デフォルトの名無しさん (ブーイモ)
2019/07/10(水) 00:45:23.28ID:kYtVBUtkM >>745
どっちかは使えない非対称な仕様なんていややわー
どっちかは使えない非対称な仕様なんていややわー
747デフォルトの名無しさん (ドコグロ)
2019/07/10(水) 05:17:16.10ID:BNPBqUg0M >>745
応用力なさすぎ
if( auto a = f() && auto b = g() ){
} else {
// f() が false 返したら b がない状態で来る
// まあ変数は作っておいて不定にしちゃうと言うのもありかもしれないけど…
}
応用力なさすぎ
if( auto a = f() && auto b = g() ){
} else {
// f() が false 返したら b がない状態で来る
// まあ変数は作っておいて不定にしちゃうと言うのもありかもしれないけど…
}
748デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 07:45:11.92ID:IKBgPxAr0 &&のオーバーロードで死ぬコードやん
749デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 08:00:59.47ID:brNiC0jH0 てかそこまでして変数宣言をif文に入れる必要なくね?
750デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 10:10:53.73ID:BYC+2ije0 いやでもweak_ptrとか
751デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 11:27:22.84ID:OXvWQFj60 {
}
でくくれ
}
でくくれ
752デフォルトの名無しさん (ブーイモ)
2019/07/10(水) 12:16:47.27ID:Y7REIpqsM ぐぐれ
に空目してそんなの無理だろと思った
に空目してそんなの無理だろと思った
753デフォルトの名無しさん (ラクッペ)
2019/07/10(水) 12:34:32.89ID:R0s9iXV+M テンプレート使ってなにかしたいけど、何を作ればいいのか思いつかない
車輪の再開発でおすすめのある?
車輪の再開発でおすすめのある?
754デフォルトの名無しさん (スップ)
2019/07/10(水) 14:44:49.38ID:rP/FdQrfd 行列クラスでも作ってみれば?
データ型とサイズをテンプレートパラメータにして
データ型とサイズをテンプレートパラメータにして
755デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 16:49:22.22ID:NolX0ibb0 >>743
そうですね
具体的にどういう事がしたい
というのは無いんですけど
リンクに書いた
https://github.com/vpiotr/decimal_for_cpp
これも使用例にはautoループを使ったものが有るんですけど
それを見ていて
そういえばautoループで書いてある物をc++03風?で書くにはどうすればいいんだろうか?
って疑問に思って調べたんんですけど
その時に特にこれといった物が見付らなくて
諦めたんですけど
ここで上に有るcobol風数値の話とautoの話の流れを見ていて
急に思い出して
何か知っている人がいそうだなと思って
何となく質問してみた次第
具体例をあえて言えば
このcobol風の物の使用例のautoループを何と言うか普通に戻すには
どういう風に考えていけば良いのだろうか?
その考え方や手順が解ればいいなと
そんな疑問を持って書かせて貰った次第です
かなり漠然とした疑問
という程度です
そうですね
具体的にどういう事がしたい
というのは無いんですけど
リンクに書いた
https://github.com/vpiotr/decimal_for_cpp
これも使用例にはautoループを使ったものが有るんですけど
それを見ていて
そういえばautoループで書いてある物をc++03風?で書くにはどうすればいいんだろうか?
って疑問に思って調べたんんですけど
その時に特にこれといった物が見付らなくて
諦めたんですけど
ここで上に有るcobol風数値の話とautoの話の流れを見ていて
急に思い出して
何か知っている人がいそうだなと思って
何となく質問してみた次第
具体例をあえて言えば
このcobol風の物の使用例のautoループを何と言うか普通に戻すには
どういう風に考えていけば良いのだろうか?
その考え方や手順が解ればいいなと
そんな疑問を持って書かせて貰った次第です
かなり漠然とした疑問
という程度です
756デフォルトの名無しさん (アウアウウー)
2019/07/10(水) 17:10:50.06ID:dvhbJ9iGa757デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 19:43:28.78ID:h7pwbJEr0 type_traitsヘッダ再実装
758デフォルトの名無しさん (ブーイモ)
2019/07/10(水) 20:09:02.22ID:PyTD27+8M autoループって何?
759デフォルトの名無しさん (アウアウウー)
2019/07/10(水) 20:22:30.91ID:/yjxFivUa range-based forの事を指していると思われる。
for(auto&& v: vec){
//vについての処理
}
for(auto&& v: vec){
//vについての処理
}
760デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 20:25:53.09ID:hIMxNPLy0 >>753
文字列やら数値やら与えて文字列にする関数を作った。
f("1+1=",1+1,string("ですよねー"))
みたいなの。
可変引数テンプレートやらtype traitsやら機能いろいろ使うことになるからいい練習になる。
文字列やら数値やら与えて文字列にする関数を作った。
f("1+1=",1+1,string("ですよねー"))
みたいなの。
可変引数テンプレートやらtype traitsやら機能いろいろ使うことになるからいい練習になる。
761デフォルトの名無しさん (ワンミングク)
2019/07/10(水) 20:27:41.92ID:mLQ0O0GxM 完璧なprintfクローンをテンプレートで作る
俺は挫折した
俺は挫折した
762デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 21:19:19.86ID:/Irjr7BN0 gcc, g++9.1
763デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 21:21:05.72ID:/Irjr7BN0 >>762
途中で書き込んでしまったすまない
gcc g++ 9.1だと
for_each_n(InputIterator first, Size n,Function f)が定義されてなくて
for_each_n(ExecutionPolicy&& exec, InputIterator first, Size n,Function f)のみ定義されてるんだけど
途中で書き込んでしまったすまない
gcc g++ 9.1だと
for_each_n(InputIterator first, Size n,Function f)が定義されてなくて
for_each_n(ExecutionPolicy&& exec, InputIterator first, Size n,Function f)のみ定義されてるんだけど
764デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 22:31:22.11ID:IKBgPxAr0 おめえの汚ねえテンプレート実装なんてオラ使いたくねぇ
765デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 23:04:21.40ID:ddYZk9I40 >>761のまねしてprintf作ろうと頑張ってみたところ。
std::to_string()にstd::stringをスルーする関数と、char[]からstd::stringに変換する関数が欲しくなった。
https://ideone.com/8RUAQh
std::to_string()にstd::stringをスルーする関数と、char[]からstd::stringに変換する関数が欲しくなった。
https://ideone.com/8RUAQh
766デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 23:26:51.16ID:dtMqcxnO0767デフォルトの名無しさん (ワッチョイ)
2019/07/10(水) 23:33:46.92ID:ddYZk9I40 std::string to_string(const std::string_view& In) {
return In.data();
}
こういう関数ほしいほしいほしい。ばいきんまん。とってきて
return In.data();
}
こういう関数ほしいほしいほしい。ばいきんまん。とってきて
768デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 00:08:50.79ID:1bNokJon0 テンプレートのエラーってめちゃくちゃでわけわからんです
あれで嫌いになるC++初心者多いのでは?
AIみたいなのが優しく教えてくれればいいのに
あれで嫌いになるC++初心者多いのでは?
AIみたいなのが優しく教えてくれればいいのに
769デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 00:09:04.21ID:+eNm2iJo0 https://ideone.com/bFsq3d
適当にいじってみたところ、動かなくもない感じ。@C++17
適当にいじってみたところ、動かなくもない感じ。@C++17
770デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 00:10:14.28ID:+eNm2iJo0771デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 00:20:00.77ID:pODzikO+0 主要3コンパイラともとりあえず1番上のエラー付近を調べればいいから分からんということもない
稀に本当に無関係なエラー出てることもあるけど
稀に本当に無関係なエラー出てることもあるけど
772デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 01:06:51.67ID:wg5f1lI10 エラーの読み方を知っちゃえば面倒くさいだけでどうということもない
ただ、これと間違えたんじゃないの、っての候補表示がかえって混乱をさそってる感はある
ただ、これと間違えたんじゃないの、っての候補表示がかえって混乱をさそってる感はある
773デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 01:54:45.72ID:PMWvbDa10 C++ は perl にまけずおとらず読みにくい
というのは誤解でしょうか?
というのは誤解でしょうか?
774デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 02:09:28.69ID:TZ7Ijk3p0 書き方しだい
775デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 02:40:24.86ID:Kuyk/Ifa0 >>773
C++は型がある分ちょっとマシ
C++は型がある分ちょっとマシ
776デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 08:50:22.94ID:PMWvbDa10 ありがとうございました
早さが必要なのに、C できつくなったら
ストラウストラップ本
というのを買ってスタートしてみようかなと思ってました
初めるときは、少しでも読めるように気合いれておきます
早さが必要なのに、C できつくなったら
ストラウストラップ本
というのを買ってスタートしてみようかなと思ってました
初めるときは、少しでも読めるように気合いれておきます
777デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 17:19:21.71ID:HcmCiWg70 756さんどうもです
読み込んでみます
読み込んでみます
778デフォルトの名無しさん (アウアウウー)
2019/07/11(木) 18:59:11.77ID:eLSvbx+Sa 自分で定義したコピーコンストラクタからデフォルトのコピーコンストラクタを呼ぶ方法はありませんか?
C(const C& c){
//デフォルトのコピーコンストラクタを使って静的にメンバをコピーしたい
//その後にポインタの参照先を修正したい
}
C(const C& c){
//デフォルトのコピーコンストラクタを使って静的にメンバをコピーしたい
//その後にポインタの参照先を修正したい
}
779デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 19:26:34.40ID:ryNigZ+S0 データメンバー分離すればいいんじゃない
class C
{
struct Data { /*...*/ } data;
C(const C& c)
: data(c.data) // C::Dataのデフォルトコピコン
{
// やりたい処理
}
};
class C
{
struct Data { /*...*/ } data;
C(const C& c)
: data(c.data) // C::Dataのデフォルトコピコン
{
// やりたい処理
}
};
780デフォルトの名無しさん (ワッチョイ)
2019/07/11(木) 21:59:39.17ID:t9WNsdfx0781デフォルトの名無しさん (ワッチョイ)
2019/07/12(金) 19:18:07.56ID:l82xLe+v0 ムーブコンストラクタとコピーコンストラクタ両方作って保守するのも
完全転送とsfinae用意するのもどちらも面倒臭いんですがc++erの皆様はどのように対象しているのでしょうか
完全転送とsfinae用意するのもどちらも面倒臭いんですがc++erの皆様はどのように対象しているのでしょうか
782デフォルトの名無しさん (ワッチョイ)
2019/07/12(金) 20:04:43.42ID:rLvHx2BM0 基本的に全部unique_ptrとdefaultのムーブコピーに任せてる
大抵はそれで困らないし困ったらその時考える
大抵はそれで困らないし困ったらその時考える
783デフォルトの名無しさん (アウアウウー)
2019/07/12(金) 21:54:46.19ID:hdEhfFLPa784デフォルトの名無しさん (ワッチョイ)
2019/07/12(金) 22:51:40.54ID:Bn8x2zNm0 暗黙のコンストラクタに任せるとか一番の事故パターンじゃん
785デフォルトの名無しさん (ワッチョイ)
2019/07/12(金) 23:06:47.15ID:I2Ktnv+c0786デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 02:39:27.85ID:6MHTVTJ70 最近のC++(少なくとも11以降?)ならば、マクロの使用は悪と決めつけてOKなもんですか?
それとも未だにマクロの役立つシーンはあったりするんですか?
それとも未だにマクロの役立つシーンはあったりするんですか?
787デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 02:46:19.08ID:kRrXltov0 普通に使ってる
ただ代替がある機能についてはわざわざ使わない
ただ代替がある機能についてはわざわざ使わない
788デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 02:46:46.90ID:rtc9CxCA0 あるよ
789デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 03:27:27.54ID:WqGPp55Y0 >>786
template classをいくつかの型で特殊化しておきたいときとか
型の名前を静的に調べる - 凹みTips
http://tips.hecomi.com/entry/20110321/1300691095?amp=1
template classをいくつかの型で特殊化しておきたいときとか
型の名前を静的に調べる - 凹みTips
http://tips.hecomi.com/entry/20110321/1300691095?amp=1
790デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 07:14:17.28ID:4+1a5dQe0791デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 09:10:55.61ID:2OenGlWi0 >>786
互換性のない複数プラットフォームに対応しようとするとき
ヘッダーファイルをincludeするかどうかを切り替えたいとき
ヘッダーファイルをincludeしたかどうかでプログラムの動作を切り替えたいとき
なんかは素直にマクロ使った方がいいと思う。
moduleが導入されれば、この辺の組み方も大幅に変わってくるかもしれないけど。
互換性のない複数プラットフォームに対応しようとするとき
ヘッダーファイルをincludeするかどうかを切り替えたいとき
ヘッダーファイルをincludeしたかどうかでプログラムの動作を切り替えたいとき
なんかは素直にマクロ使った方がいいと思う。
moduleが導入されれば、この辺の組み方も大幅に変わってくるかもしれないけど。
792デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 10:07:13.95ID:TPR8jqd00 コピコンを定義を求められるときは大概代入演算子も定義するから
コピコンの中身を代入演算子の方に移して
コピコンは代入演算子を呼べば良い
コピコンの中身を代入演算子の方に移して
コピコンは代入演算子を呼べば良い
793デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 10:56:21.38ID:TPR8jqd00 真の原因がバカにあるのだとすれば、可読性向上を唱えても空しい
794デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 11:59:42.51ID:K15oVfEY0795デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 12:24:56.92ID:N59vWAWf0 #include しゃあない
#pragma しゃあない
#line まあしゃあない
#if系 ある程度しゃあないけどテンプレートやconstexprへの置き換え考えようね
__VA_ARGS__ 可変長引数テンプレート使えと言いたいところだけど場合によるのかな
#error static_assert使え
定数#define const変数使え
関数#define ##や__VA_ARGS__使うためならしゃあない。そうでないなら死ね
#pragma しゃあない
#line まあしゃあない
#if系 ある程度しゃあないけどテンプレートやconstexprへの置き換え考えようね
__VA_ARGS__ 可変長引数テンプレート使えと言いたいところだけど場合によるのかな
#error static_assert使え
定数#define const変数使え
関数#define ##や__VA_ARGS__使うためならしゃあない。そうでないなら死ね
796デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 12:28:53.30ID:rtc9CxCA0 マクロって#defineだけだろ?
あと
> 定数#define const変数使え
constexpr auto 使え
あと
> 定数#define const変数使え
constexpr auto 使え
797デフォルトの名無しさん (スップ)
2019/07/13(土) 16:14:29.97ID:wshCTlzmd includeもC++20で死ねって言われるようになるの?
798デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 17:22:17.35ID:pw3rXvVP0 >>786
○○は悪、とかドヤ顔で言ったり書いたりしてるやつは例外なくアホだと思っていい
○○は悪、とかドヤ顔で言ったり書いたりしてるやつは例外なくアホだと思っていい
799デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 21:44:17.10ID:2KEsM2Co0 マクロの定数(リテラルの定数)とconst/constexprって等価じゃないよね?
実用上はさておき
実用上はさておき
800デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 21:56:45.42ID:HW6onBjN0 定数は大体constじゃね?
ほかのアトリビュートかなんか推論できるか?
ほかのアトリビュートかなんか推論できるか?
801デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 22:14:19.00ID:rtc9CxCA0 >>799
constexpr定数はマクロと同様にコンパイル時に置換されるから等価で、名前空間が使える分上位互換でしょ
constexpr定数はマクロと同様にコンパイル時に置換されるから等価で、名前空間が使える分上位互換でしょ
802デフォルトの名無しさん (スップ)
2019/07/13(土) 22:43:26.97ID:BM5YZSOgd constも定数としてだけ利用するなら多くの場合rom領域に置かれるはずなんだけど
constexprはコンパイル時置換が確定してるのとtemplateやconstexpr ifの恩恵受けられるのが大きいってイメージ
constexprはコンパイル時置換が確定してるのとtemplateやconstexpr ifの恩恵受けられるのが大きいってイメージ
803デフォルトの名無しさん (スップ)
2019/07/13(土) 22:48:27.70ID:BM5YZSOgd そういう話じゃねえなこれ
804デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 22:55:14.78ID:HY4jba3G0 lvalue-ravalue変換考慮に入れれば#defineの置換とほぼ同じになると思う
805デフォルトの名無しさん (ワッチョイ)
2019/07/13(土) 23:07:39.03ID:2KEsM2Co0 #define a 0
constexpr auto b = 0;
auto x = &a; //error
auto y = &b; //ok
等価ではないよね
だからdefine定数は必要と言いたいわけではないよ、念のため
constexpr auto b = 0;
auto x = &a; //error
auto y = &b; //ok
等価ではないよね
だからdefine定数は必要と言いたいわけではないよ、念のため
806デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 00:38:21.57ID:MfUTAS3e0 >>801
#ifdefのように定義されているかどうか調べられないのが唯一の欠点かな。
#ifdefのように定義されているかどうか調べられないのが唯一の欠点かな。
807デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 02:32:37.43ID:Hni5ei2L0 foo[1].bar->baz.some_method()というのが1万箇所あってこれを
stdObj.some_method()と書きたい場合
#defineマクロなら
#define stdObj (foo[1].bar->baz)
で済むがconst系のやり方だとfoo[1].bar->bazのアドレスを取らねばならず、
コンパイル時の解決が不可能なケースが生ず、
んまーfoo[1].bar->bazをテンプレート引数に渡せば近代的な書き方もできるんだと思うが
stdObj.some_method()と書きたい場合
#defineマクロなら
#define stdObj (foo[1].bar->baz)
で済むがconst系のやり方だとfoo[1].bar->bazのアドレスを取らねばならず、
コンパイル時の解決が不可能なケースが生ず、
んまーfoo[1].bar->bazをテンプレート引数に渡せば近代的な書き方もできるんだと思うが
808デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 02:43:00.83ID:Hni5ei2L0 あとVisual Studio 2010のC++限定の話かもしれんが
const struct Hoge someBigArray[50000] = { ... };
// 重複有り、規則性無しのsomeBigArray[]要素アドレスの引用
const foo_t* pA010001 = &(someBigArray[0].m_foo);
const foo_t* pA010002 = &(someBigArray[0].m_foo);
const foo_t* pA010003 = &(someBigArray[0].m_foo);
const foo_t* pA010004 = &(someBigArray[3].m_foo);
const foo_t* pA010005 = &(someBigArray[3].m_foo);
... (1万個ぐらい略) ...
const foo_t* pB019999 = &(someBigArray[9999].m_foo);
const foo_t foo_ptr_list[] = { pA010001, pa010002, ..., pB019999 };
というのをやったらDebugビルドだと20秒ぐらいでコンパイル&リンクが終わるのに
Releaseビルドだとリンクに10分もかかりやがるの;;;
しかし慌てず騒がずpA010001〜pB019999を全部#defineマクロにしたら20秒で終わるようになったわ、
const struct Hoge someBigArray[50000] = { ... };
// 重複有り、規則性無しのsomeBigArray[]要素アドレスの引用
const foo_t* pA010001 = &(someBigArray[0].m_foo);
const foo_t* pA010002 = &(someBigArray[0].m_foo);
const foo_t* pA010003 = &(someBigArray[0].m_foo);
const foo_t* pA010004 = &(someBigArray[3].m_foo);
const foo_t* pA010005 = &(someBigArray[3].m_foo);
... (1万個ぐらい略) ...
const foo_t* pB019999 = &(someBigArray[9999].m_foo);
const foo_t foo_ptr_list[] = { pA010001, pa010002, ..., pB019999 };
というのをやったらDebugビルドだと20秒ぐらいでコンパイル&リンクが終わるのに
Releaseビルドだとリンクに10分もかかりやがるの;;;
しかし慌てず騒がずpA010001〜pB019999を全部#defineマクロにしたら20秒で終わるようになったわ、
809デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 02:48:10.57ID:Hni5ei2L0 プチ訂正
誤:const foo_t* pA010001 =
正:const foo_t* const pA010001 =
(pA010001 以外も同様
誤:const foo_t* pA010001 =
正:const foo_t* const pA010001 =
(pA010001 以外も同様
810デフォルトの名無しさん (ブーイモ)
2019/07/14(日) 05:22:47.60ID:fukAtbQ2M 単に置換するのと文字列リテラルにして置換するのを両方できるのはマクロだけ
811デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 07:43:05.65ID:+8XuBzkV0 >constexprはコンパイル時置換が確定してるのとtemplateやconstexpr ifの恩恵受けられるのが大きいってイメージ
こういうことやるやつのコードは総じてクソまみれになるって事を考慮しないと。
こういうことやるやつのコードは総じてクソまみれになるって事を考慮しないと。
812デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 08:30:53.65ID:6widThLh0 メタテンプレ絶許マンか?
813デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 08:57:22.87ID:+8XuBzkV0 >>812
少なくともこういうバカ返信する奴のテンプレコードはクソ。100%クソ。
少なくともこういうバカ返信する奴のテンプレコードはクソ。100%クソ。
814デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 08:58:51.70ID:XaY0bL9/0 >>812
やーいばーか(´・ω・`)
やーいばーか(´・ω・`)
815デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 09:03:55.82ID:kbgTNG980 わからないなら使わなくてエエんやで
816デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 09:28:25.48ID:9+vdQwS20 どの言語もテンプレはクソってことか
817デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 09:30:59.65ID:6widThLh0818デフォルトの名無しさん (スップ)
2019/07/14(日) 09:50:06.90ID:N6Jg+9Qod >>813
自己紹介かな
自己紹介かな
819デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 09:52:08.37ID:OwDd/gkk0 こういう奴の生ポインタをガチャガチャ引っ掻き回すコードはクソ。100%脆弱性入り。
820デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 10:21:40.78ID:Hni5ei2L0 ポインタや参照を使う奴がクソ
一般のプログラマ─はimmutableなオブジェクトしか扱わないべき
一般のプログラマ─はimmutableなオブジェクトしか扱わないべき
821デフォルトの名無しさん (アウアウウー)
2019/07/14(日) 10:22:25.79ID:yqvJtNKTa 俺はクソだった!
822デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 10:46:18.68ID:6RRDIuRx0 クソでいいや
823デフォルトの名無しさん (スップ)
2019/07/14(日) 10:48:00.68ID:N6Jg+9Qod そもそもC++書いてる奴は総じてクソ
824デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 10:52:11.91ID:kbgTNG980 たまにマジでテンプレート否定する奴がいるけどどういうコード書いてるんだろうとは思う
ならもうC言語でいいやんと
ならもうC言語でいいやんと
825デフォルトの名無しさん (ラクッペ)
2019/07/14(日) 11:25:30.46ID:IlYB/IHkM 言語の機能否定するやつはもう消えろと思う
826デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 12:05:51.96ID:3jO2eFHc0 >>820
?
?
827デフォルトの名無しさん (ブーイモ)
2019/07/14(日) 12:17:26.84ID:bTXRhkvlM828デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 13:03:52.75ID:t8pNnhD80 Template なかったら事前にタイプ規定する言語使うの最早ただの苦行やん...
829デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 13:07:41.55ID:Hni5ei2L0 増えたといっても全部漏れの自演だがな
やっぱ最適化とかmutableなオブジェクトの使用みたいな危険行為は
プロファイルをとった上で
ポイントを絞ってやるべき伝家の砲塔だと思うんですよねー
やっぱ最適化とかmutableなオブジェクトの使用みたいな危険行為は
プロファイルをとった上で
ポイントを絞ってやるべき伝家の砲塔だと思うんですよねー
830デフォルトの名無しさん (ブーイモ)
2019/07/14(日) 14:22:08.64ID:bTXRhkvlM >>829
それテストドリブン原理主義と同じだよ
現実のC++のプロジェクトでワークしない
実際のとこお前だってそのポリシーでやりきったことないだろ
あるいはそもそも性能要件なんかないただの趣味プログラミングだろ
それテストドリブン原理主義と同じだよ
現実のC++のプロジェクトでワークしない
実際のとこお前だってそのポリシーでやりきったことないだろ
あるいはそもそも性能要件なんかないただの趣味プログラミングだろ
832デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 16:58:06.88ID:Hni5ei2L0 ていうか真に速度が求められる箇所ではオブジェクトの生成とかせずに
テーブルで済ますように極力するから極限までの高速化を求められるシチュエーションでは
immutable縛りはあんまパフォーマンスの制約要因にならないキモス
テーブルで済ますように極力するから極限までの高速化を求められるシチュエーションでは
immutable縛りはあんまパフォーマンスの制約要因にならないキモス
833デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 17:21:37.08ID:Hni5ei2L0 で実行速度が求められるあまりmutableな書き方しかできない最たるもの(と一般に考えられている
再起が関係するアルゴリズムとかでも再起の深さが有限なら原理上FSMで表せるし
そうしたときに問題になるテーブルサイズも問題によっては問題固有の特質に着目して削減ができるので
深さとcurrent stateの2つぐらいのmutable要素だけでやれる
スゲー手間がかかるのであんま一般的ではないが
再起が関係するアルゴリズムとかでも再起の深さが有限なら原理上FSMで表せるし
そうしたときに問題になるテーブルサイズも問題によっては問題固有の特質に着目して削減ができるので
深さとcurrent stateの2つぐらいのmutable要素だけでやれる
スゲー手間がかかるのであんま一般的ではないが
834デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 18:55:48.27ID:iENt936B0 なんかコンテストとか競技系の小規模な問題しかやったことない人間の匂いがする
835デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 20:58:42.72ID:VdcfVJxm0 画像処理用の画像クラスでimmutableとか最悪だろ。
836デフォルトの名無しさん (ワッチョイ)
2019/07/14(日) 21:04:10.52ID:kbgTNG980 宣言的プログラミング!
(実装詳細はライブラリにやってもらう)
(実装詳細はライブラリにやってもらう)
837デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 00:35:07.20ID:MjmXYKrZ0 今時の性能ならフル描画しなおしでも結構なんとかなるぞ
838デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 01:11:27.79ID:md6OUoiD0 画像の書き換えまたはフィルタリングを
In-placeで処理したからといってなんか高速化になりましたっけ…
In-placeの方がキャッシュの有効活用にはなるかもしれんが
In-placeで処理したからといってなんか高速化になりましたっけ…
In-placeの方がキャッシュの有効活用にはなるかもしれんが
839デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 01:15:15.20ID:md6OUoiD0 In-placeの方がキャッシュの有効活用にはなるかもしれんが、
画像う処理とかデータサイズ>2時キャッシュサイズなので
もともとキャッシュのrefill上等な前提な印象、
つまりはIn-placeにしたからといって誤差の範囲内
画像う処理とかデータサイズ>2時キャッシュサイズなので
もともとキャッシュのrefill上等な前提な印象、
つまりはIn-placeにしたからといって誤差の範囲内
840デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 04:45:28.21ID:timtx4iU0 ネーミングセンス糞すぎて俺のgithubアカウントに○○○Manegerとか○○○Analyzerみたいな名前のリポジトリが並んでるんだけどどうすればいい?
841デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 05:19:41.70ID:AcRJIuvS0 Manegerは恥ずかしい
842デフォルトの名無しさん (スフッ)
2019/07/15(月) 07:09:19.75ID:rgXkaLbtd analyserとかちょー卑猥な響きだよね(´・ω・`)
843デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 07:35:25.61ID:ex33LrHm0 >>840
ネーミングセンス云々の前に英語をちゃんと勉強するべきだな
ネーミングセンス云々の前に英語をちゃんと勉強するべきだな
844デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 09:49:59.26ID:md6OUoiD0 ○○○Manや○○○Analと短縮表記すれば良い
845デフォルトの名無しさん (アウアウウー)
2019/07/15(月) 09:59:50.02ID:9PTNja4Sa クラス名は長くして変数名を短くするのがいい
846デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 10:22:06.22ID:AcRJIuvS0 プロジェクト名の話だと思う
847デフォルトの名無しさん (アウアウウー)
2019/07/15(月) 10:38:39.02ID:9PTNja4Sa 本当だ...
848デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 10:50:02.87ID:r7SsHRFS0 初心者前提なのだから1ピクセルずつ操作することを考慮しろ
849デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:31:46.06ID:md6OUoiD0 英語力という点では「登録する」(動詞)を「regist」だと思い込んでいるケースが
メジャーなライブラリでも散見さるる、
メジャーなライブラリでも散見さるる、
850デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:37:01.83ID:fHVeR6bP0 あれ本当に恥ずかしいからやめて欲しい
恥ずかしいと思ってない日本人が多すぎるという事実自体が恥ずかしい
恥ずかしいと思ってない日本人が多すぎるという事実自体が恥ずかしい
851デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:37:18.11ID:Xch0qlQL0 それはconfigureをconfigって略すのと同じだろ
852デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:40:40.78ID:r69UXvdn0 恥ずかしい人がここに
853デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:40:47.47ID:AcRJIuvS0 registerが名詞だと思ってるのか
854デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:46:03.84ID:timtx4iU0 >>841
誤字だと分かりきっているものを茶化さないでおくれ
誤字だと分かりきっているものを茶化さないでおくれ
855デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:47:25.64ID:fHVeR6bP0 本当に省略形なら"registed"だの"registing"だの"registation"だのはどう説明付けてくれるんだろうね
856デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 12:53:03.24ID:+RJOjipn0 おっウォーニングの話か?
857デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 13:01:38.24ID:lxHurSyi0 エンカウントとか?
858デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 13:31:00.46ID:ex33LrHm0859デフォルトの名無しさん (ブーイモ)
2019/07/15(月) 14:00:46.85ID:P+OOoIdTM warningとかもなるべく正しい(近い)発音を心がけてるんだけど
nullだけはヌルだわ
2chリスペクトだと思ってるw
nullだけはヌルだわ
2chリスペクトだと思ってるw
>>849
resist と書かれちゃうよりはましだとおもいますぅ
resist と書かれちゃうよりはましだとおもいますぅ
>>859
ドイツ語ではヌルでいいんですよ、ドイツ語と言い張ればいいのではないでしょーか
ドイツ語ではヌルでいいんですよ、ドイツ語と言い張ればいいのではないでしょーか
862デフォルトの名無しさん (ブーイモ)
2019/07/15(月) 14:15:07.13ID:P+OOoIdTM なるほど
ヌルポはヌルポッセンドルフの略と思っておきます
ヌルポはヌルポッセンドルフの略と思っておきます
863デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 14:18:25.23ID:r7SsHRFS0 nullはむしろ英語読みが間違っている
外来語導入して読み方変えているのを間違いと言うなら
外来語導入して読み方変えているのを間違いと言うなら
864デフォルトの名無しさん (ラクッペ)
2019/07/15(月) 14:23:34.76ID:reKP8a27M 大規模開発やったことないんだけど、C++の仕事ってやらせてください
865デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 14:25:17.59ID:timtx4iU0 自分で仕事を作れば何でもできるよ
866デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 15:22:17.78ID:vaP/RuJr0 正直、メモリ管理もできないような言語の仕事なんか限定されすぎだろうよ。
ゲーム業界くらい?
俺は一応社内システムの仕事でやってるけど、 c++の機能フルで使えないからストレスだわ
c言語のソースそのままコピーしたであろう共通関数あったり、既存ソースはポインタ生で使ってたり、 コンパイラーがc++03だったり、boost使えなかったり、微妙
ゲーム業界くらい?
俺は一応社内システムの仕事でやってるけど、 c++の機能フルで使えないからストレスだわ
c言語のソースそのままコピーしたであろう共通関数あったり、既存ソースはポインタ生で使ってたり、 コンパイラーがc++03だったり、boost使えなかったり、微妙
867デフォルトの名無しさん (ササクッテロ)
2019/07/15(月) 15:55:13.08ID:J3bo3XLhp その程度でぶーたれてんのか
入って半年とかか?
入って半年とかか?
868デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 16:11:03.46ID:ioQvo5hA0 俺もナマポ暮らしになりたいわ
869デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 16:35:55.59ID:TrI7uaVY0 規模次第だけど社内システムなんて結構好き勝手できるから気に入らない部分はどんどん新技術に載せ替えて行けば?
870デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 16:55:43.24ID:timtx4iU0 デスクトップアプリもスマホアプリも当然C++
871デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 17:05:26.06ID:71Nm6o/V0 boostいらんわ
872デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 17:08:12.98ID:timtx4iU0 プロジェクトのひな形を生成したときにまずすることはboostのパスを入力すること
873デフォルトの名無しさん (ブーイモ)
2019/07/15(月) 17:26:52.36ID:qXQUtn8qM vcpkg install boost:windows-x64
874デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 17:49:20.12ID:timtx4iU0 x64-windowsダルォ?
875デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:05:18.40ID:vaP/RuJr0 >>869
しがないフリーランスだからその権限がないっす。
親方が気に入らなければ変えられません使えません。
俺「これーcharじゃなくてstd ::stringにした方がシンプルじゃないっすかねー・・・」
敵「既存がそうなってるからchar使ってね」
俺「はい」
しがないフリーランスだからその権限がないっす。
親方が気に入らなければ変えられません使えません。
俺「これーcharじゃなくてstd ::stringにした方がシンプルじゃないっすかねー・・・」
敵「既存がそうなってるからchar使ってね」
俺「はい」
876デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:39:11.23ID:1J86p0R40877デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:48:34.62ID:oc4A+BFp0 >>876
既存のやり方がそうであるのに、流石にそれは許されないでしょ
既存のやり方がそうであるのに、流石にそれは許されないでしょ
878デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:50:01.71ID:timtx4iU0 「正しい」形にすることは何よりも優先されることなんだが
879デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:55:19.89ID:TrI7uaVY0 >>875
そういう案件ならしゃーないんじゃない?
上が細かな技術的なとこまで意思決定権持っちゃってる残念な現場なんて腐るほどあるんだし
説得して環境を変えるのもありだけどフリーで入ってるなら頑張ったところで将来的に得するかは微妙だろうね
そういう案件ならしゃーないんじゃない?
上が細かな技術的なとこまで意思決定権持っちゃってる残念な現場なんて腐るほどあるんだし
説得して環境を変えるのもありだけどフリーで入ってるなら頑張ったところで将来的に得するかは微妙だろうね
880デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:55:25.91ID:ex33LrHm0 何が正しいかはケースバイケース
保守する社員がcharしか理解できないボンクラと言うことも考えられる
保守する社員がcharしか理解できないボンクラと言うことも考えられる
881デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 18:55:44.39ID:Voexy70f0 >>878
関係者がみな納得できる共通の「正しい」があるならそれでいいと思うよ
関係者がみな納得できる共通の「正しい」があるならそれでいいと思うよ
882デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 19:05:04.52ID:vaP/RuJr0883デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 19:29:53.08ID:uSWgDnpR0 >>882
説得先も大概だけどそんな理由で入れ替え勧めたってウンとは言わないでしょ…
説得先も大概だけどそんな理由で入れ替え勧めたってウンとは言わないでしょ…
884デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 19:30:09.25ID:uSWgDnpR0 ageてしまったごめんなさい
885デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 20:04:45.07ID:pjR6BG980 char*とstd::stringを比較するんじゃなくて、スタックとヒープの違いで安全性・安定性をアピールしたほうが良かったんじゃないかな。
886デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 20:13:41.55ID:MjmXYKrZ0 別にインターフェイス部分だけcharで内部ではstring使えばいい話だろ?
まあ多分インターフェイスなんて概念自体なさそうな現場には見えるが。
まあ多分インターフェイスなんて概念自体なさそうな現場には見えるが。
887デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 20:28:18.61ID:7B/nougm0 >>875
メリット説得して、さらにstringに馴染みがないやつへの説明
さらにその変更によって万一(どころではないと思うが)生じた不具合に対する責任を負う覚悟があり
それら全部タダ働きでいい、というのならOKしてくれるかもな
メリット説得して、さらにstringに馴染みがないやつへの説明
さらにその変更によって万一(どころではないと思うが)生じた不具合に対する責任を負う覚悟があり
それら全部タダ働きでいい、というのならOKしてくれるかもな
888デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 20:32:17.87ID:fPWDFa890 >>880
数年後に保守する奴が新人ってケースは普通にあるからねえ
数年後に保守する奴が新人ってケースは普通にあるからねえ
889デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 23:10:03.23ID:MjmXYKrZ0 てかこのレベルでグダグダならc++なんて一番使っちゃいけないものなんだけどね。
890デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 23:18:29.56ID:pvtIibLv0 >>886
でもさ、どのメモリに入ってるかも分かんない文字列ポインタなんか、使いたくねーってならないか?
でもさ、どのメモリに入ってるかも分かんない文字列ポインタなんか、使いたくねーってならないか?
891デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 23:30:06.80ID:oc4A+BFp0892デフォルトの名無しさん (ワッチョイ)
2019/07/15(月) 23:37:28.29ID:+RJOjipn0 むしろchar使ってる箇所stringでラップして新人さんにもメンテしやすくするべき
893デフォルトの名無しさん (スフッ)
2019/07/16(火) 01:26:16.84ID:0uDObdGpd クソなところならどうせそこ直しても所詮うんこの一角だしクソなだけ
いいところなのになんだかなー思うんなら訴えかけて良くしてやればいい
クソなところなんてどうせ金も払わんし出来る限り関わりを持たずにずらかるのが一番(´・ω・`)
いいところなのになんだかなー思うんなら訴えかけて良くしてやればいい
クソなところなんてどうせ金も払わんし出来る限り関わりを持たずにずらかるのが一番(´・ω・`)
894デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 06:17:44.96ID:osN3S5RL0895デフォルトの名無しさん (ラクッペ)
2019/07/16(火) 16:19:36.53ID:Df6fhjhOM C++で個人開発したいんだけど、やりたいものが思いつかない
個人的にはC++らしいものをやりたい
→openGL
やってはみたけど、webのレイマーチングにはまる
→レイトレーシング
今もやってる趣味ではある
→競プロ
人生で一番費やしてるプログラミングの趣味
個人的にはC++らしいものをやりたい
→openGL
やってはみたけど、webのレイマーチングにはまる
→レイトレーシング
今もやってる趣味ではある
→競プロ
人生で一番費やしてるプログラミングの趣味
896デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 20:27:49.59ID:Z97hyaL80 test1 = 0x0123¥ntest2 = 0x0111¥n......
みたいなstring文字列から、指定のtest番号の0x0123みたいな6文字を取り出す関数を作りたい
引数をstring型文字列、戻り値を16進数のstring文字列みたいな
test1 と = の間のスペースの数が1つなのか複数なのかがランダムだから、それを考慮してうまく抜き出す方法ないかな?
(test1って名称が本当は別の文字列だから、見映えよくするためにスペースで調整されている)
regexを使った正規表現しかないかな??
今は指定の文字列をfind検索して、指定の文字列+1の位置から、全部文字列切り取って、スペース= 0x0111¥n.....みたいな文字列を一度作ってからさらにfindでやってるのだけども
みたいなstring文字列から、指定のtest番号の0x0123みたいな6文字を取り出す関数を作りたい
引数をstring型文字列、戻り値を16進数のstring文字列みたいな
test1 と = の間のスペースの数が1つなのか複数なのかがランダムだから、それを考慮してうまく抜き出す方法ないかな?
(test1って名称が本当は別の文字列だから、見映えよくするためにスペースで調整されている)
regexを使った正規表現しかないかな??
今は指定の文字列をfind検索して、指定の文字列+1の位置から、全部文字列切り取って、スペース= 0x0111¥n.....みたいな文字列を一度作ってからさらにfindでやってるのだけども
897デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 20:50:39.00ID:nqFwpBh+0898デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 20:51:55.23ID:LY1lZd1g0 >>896
まずスペースを削除すれば
まずスペースを削除すれば
899デフォルトの名無しさん (アウアウウー)
2019/07/16(火) 21:01:39.66ID:IKrvu7vGa >>896
面倒なのでregexに1票
面倒なのでregexに1票
900デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:02:58.38ID:LGntUIQm0 C++標準が3年ごとにリリースされるのはなぜ? 2019/07/16 18:06 後藤大地
https://news.mynavi.jp/article/20190716-860461/
2012年以降、C++標準化委員会は3年ごとに新たなC++標準(C++14、C++17)をリリースして
いる。次のC++標準はC++20として作業が進められており、タイムスケジュールどおりの
リリースが予定されている。C++98とC++11のリリースにはそれぞれ9年ほどの時間が
かかったことを考えると、この7年間ですでに2つのC++標準が3年ごとにリリースされたのは
大きな変化だ。
ISO C++標準化委員会の議長でありMicrosoftでソフトウェアアーキテクトを務めるHerb
Sutter氏が2019年7月13日(米国時間)「Draft FAQ: Why does the C++ standard ship
every three years? - Sutter's Mill」においてその理由を説明した。(中略)
標準化委員会はC++11をリリースした後にこのモデルを見直し、タイムスケジュールベース
でリリースするモデルへ変更。Sutter氏は、機能ベースで進めるやり方とタイムスケジュー
ルベースで進めるやり方を比較しつつ、結果的には、タイムスケジュールベースのほうが
業界全体でよい効果を持つことがわかったと説明している。同氏は「機能ベースのリリース
モデルには戻りたくない」と明言しており、現在のモデルの方がうまく機能していることを
主張している。(後略)
https://news.mynavi.jp/article/20190716-860461/
2012年以降、C++標準化委員会は3年ごとに新たなC++標準(C++14、C++17)をリリースして
いる。次のC++標準はC++20として作業が進められており、タイムスケジュールどおりの
リリースが予定されている。C++98とC++11のリリースにはそれぞれ9年ほどの時間が
かかったことを考えると、この7年間ですでに2つのC++標準が3年ごとにリリースされたのは
大きな変化だ。
ISO C++標準化委員会の議長でありMicrosoftでソフトウェアアーキテクトを務めるHerb
Sutter氏が2019年7月13日(米国時間)「Draft FAQ: Why does the C++ standard ship
every three years? - Sutter's Mill」においてその理由を説明した。(中略)
標準化委員会はC++11をリリースした後にこのモデルを見直し、タイムスケジュールベース
でリリースするモデルへ変更。Sutter氏は、機能ベースで進めるやり方とタイムスケジュー
ルベースで進めるやり方を比較しつつ、結果的には、タイムスケジュールベースのほうが
業界全体でよい効果を持つことがわかったと説明している。同氏は「機能ベースのリリース
モデルには戻りたくない」と明言しており、現在のモデルの方がうまく機能していることを
主張している。(後略)
901デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:20:33.77ID:Z97hyaL80902デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:38:36.46ID:OG5/ucZ10 文字列の切った貼ったはセキュリティ的に怖いからね
有り物で書けるならその方がいい
有り物で書けるならその方がいい
903デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:39:17.81ID:I+f7TCiw0 std::getlineで\n区切りで回してから
後は知らん
後は知らん
904デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:45:38.70ID:LY1lZd1g0 splitあれば改行で区切ってlist化するだけなんだけどな
Qt環境ならそうする
Qt環境ならそうする
905デフォルトの名無しさん (ワントンキン)
2019/07/16(火) 21:48:21.34ID:9Yfd/4AAM trim関数的なものを作る
906デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 21:54:43.77ID:W8tOKWg20 =で分割した後
左右でfind_first_not_of,find_last_not_ofで空白以外まで切り詰めかな
左右でfind_first_not_of,find_last_not_ofで空白以外まで切り詰めかな
907デフォルトの名無しさん (アウアウウー)
2019/07/16(火) 22:00:47.16ID:QDcq5Heka ためしに書いてみたけど遅い。。。
https://wandbox.org/permlink/OjG24U6M9RMITpgM
https://wandbox.org/permlink/OjG24U6M9RMITpgM
908デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:01:38.63ID:yujEo6vK0 >>897
では私はどうすればいいですか?
では私はどうすればいいですか?
909デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:04:35.23ID:H30rEKCE0 Cですが。自力分割やregexよりは早い気がする
const char* s = "abc= 123";
sscanf(s, "%[^=]=%d", key, &value);
const char* s = "abc= 123";
sscanf(s, "%[^=]=%d", key, &value);
910デフォルトの名無しさん (アウアウウー)
2019/07/16(火) 22:05:19.31ID:QDcq5Heka 16進数を考慮してなかった
https://wandbox.org/permlink/Mkh7FDTFEydcFdFc
https://wandbox.org/permlink/Mkh7FDTFEydcFdFc
911デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:05:58.06ID:Qaka0H/h0 >>897
忘れたら他人
忘れたら他人
912デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:10:14.84ID:I+f7TCiw0 昔はドヤ顔でトリッキーコード書く奴いたが最近は見ない
理由は、
できる新入社員が入ってこない
年寄りは昔ドヤ顔で書いた自分のコードを十年ぶりくらいに保守して反省するから
理由は、
できる新入社員が入ってこない
年寄りは昔ドヤ顔で書いた自分のコードを十年ぶりくらいに保守して反省するから
913デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:24:54.49ID:Qaka0H/h0 真のトリッキーコードだったら地獄はむしろ最初も最初、
離陸前に訪れているはず
もうそんな悲劇は繰り返させないRustによって、
離陸前に訪れているはず
もうそんな悲劇は繰り返させないRustによって、
914デフォルトの名無しさん (ワッチョイ)
2019/07/16(火) 22:29:08.57ID:Qaka0H/h0 ていうか今日日スマホ系だとIDEに命ぜられるがままイベントハンドラを設けて、
インテリセンスに従って高水準APIを呼べばだいたいのところできてしまうるし…
バッドノウハウとか差別化のためのトリックがむしろ脚光
インテリセンスに従って高水準APIを呼べばだいたいのところできてしまうるし…
バッドノウハウとか差別化のためのトリックがむしろ脚光
915デフォルトの名無しさん (アウアウカー)
2019/07/17(水) 00:30:14.40ID:OvMw+j5/a 初心者です。苦戦してます。お知恵を貸してください。
仮想端末を含んだ GTK+3 アプリを C++ で作りたいです。
gtkmm だと vte が使えない(?)ので、gtk-3.0 を使って試してます。
サンプルを下のリンクに置きました。
make すると main 最後の return app->run(window); の所で、
[no member named 'run' in '_GtkApplication']とエラーになってしまいます。
この部分は gtkmm の例から持って来たもなので、変える必要があるのですが、
gtk+3 ではどう書くのが正解でしょうか?よろしくお願いします。
あるいは、gtkmm でも vte を使う簡単な方法がもしあれば、教えてください。
Makefile
http://codepad.org/wldK76KY
main_test_3.cc
http://codepad.org/NopgbNXP
sample_3.h
http://codepad.org/BiQt354F
sample_3.cc
http://codepad.org/I1B7AyJL
仮想端末を含んだ GTK+3 アプリを C++ で作りたいです。
gtkmm だと vte が使えない(?)ので、gtk-3.0 を使って試してます。
サンプルを下のリンクに置きました。
make すると main 最後の return app->run(window); の所で、
[no member named 'run' in '_GtkApplication']とエラーになってしまいます。
この部分は gtkmm の例から持って来たもなので、変える必要があるのですが、
gtk+3 ではどう書くのが正解でしょうか?よろしくお願いします。
あるいは、gtkmm でも vte を使う簡単な方法がもしあれば、教えてください。
Makefile
http://codepad.org/wldK76KY
main_test_3.cc
http://codepad.org/NopgbNXP
sample_3.h
http://codepad.org/BiQt354F
sample_3.cc
http://codepad.org/I1B7AyJL
916デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 01:22:30.12ID:fOq5lc1d0 >>915
個別のライブラリについては別スレでどうぞ
Gtkプログラミング on Windows!!!
https://mevius.5ch.net/test/read.cgi/tech/1147024203/
個別のライブラリについては別スレでどうぞ
Gtkプログラミング on Windows!!!
https://mevius.5ch.net/test/read.cgi/tech/1147024203/
917デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 07:35:01.26ID:MynlIz/m0 個人開発したいとやったら、やるなと言う職業プログラマー
そんなにC++の弁護士気取りたいのか?
そんなにC++の弁護士気取りたいのか?
918デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 07:53:00.12ID:LHl19Ofs0 >>917
日本語でok
日本語でok
919デフォルトの名無しさん (ラクッペ)
2019/07/17(水) 15:04:33.40ID:tb8FEgTSM920デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 15:51:34.93ID:QuDmOW+q0 競技プログラムでもすればいいじゃん
921デフォルトの名無しさん (スプッッ)
2019/07/17(水) 17:12:11.03ID:Y61X+4vPd プログラミング言語は道具だからな
鉄筋コンクリートらしい建物作りたいから教えてと聞いてるようなもの
鉄筋コンクリートらしい建物作りたいから教えてと聞いてるようなもの
922デフォルトの名無しさん (アウアウウー)
2019/07/17(水) 18:19:32.96ID:ZZPGa0zFa 自信のソースコードを文字列定数としてコンパイル時に埋め込む方法ってありますか?
923デフォルトの名無しさん (スフッ)
2019/07/17(水) 18:36:08.13ID:aFjepJXXd ファイル読み込みとかしないで、自身のソースコードを表示するプログラムなら作れるが
925デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 21:40:04.62ID:PwP8j0Dr0 >>896
Haskellで丁度ピッタリの処理を自作した(組み込み関数が既にある)のでアルゴリズム自体は参考になるかも?
import Data.Char
main = (print.mywords) "hello world\t\t hahaha\n\n hohoho\n"
mywords [] = []
mywords xs = a:mywords (dropWhile isSpace b)
where (a,b) = break isSpace xs
生の配列じゃ無くてvector,list辺り使えば難しく無いはず。
文字列から、スペース削除した文字列のリストを作る。
“Hello world” -> [“Hello”,”world”]
a = スペース文字が出る直前までの文字列(上で言うところの”Hello”)
b = 残った部分(必ずスペース文字始まり。上で言うところの” world”)
dropWhile isSpace b = Haskellだと空リストにtail(リストの先頭を削除)だとエラーになるのでdropWhile使ってるが、単純に先頭を削除してループ。
Haskellで丁度ピッタリの処理を自作した(組み込み関数が既にある)のでアルゴリズム自体は参考になるかも?
import Data.Char
main = (print.mywords) "hello world\t\t hahaha\n\n hohoho\n"
mywords [] = []
mywords xs = a:mywords (dropWhile isSpace b)
where (a,b) = break isSpace xs
生の配列じゃ無くてvector,list辺り使えば難しく無いはず。
文字列から、スペース削除した文字列のリストを作る。
“Hello world” -> [“Hello”,”world”]
a = スペース文字が出る直前までの文字列(上で言うところの”Hello”)
b = 残った部分(必ずスペース文字始まり。上で言うところの” world”)
dropWhile isSpace b = Haskellだと空リストにtail(リストの先頭を削除)だとエラーになるのでdropWhile使ってるが、単純に先頭を削除してループ。
926デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 21:52:31.47ID:3BN2/z2X0 なぜC++にsplitが無いのかに行き当たり議論は再燃し一晩で鎮火する
927デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 21:54:34.81ID:h56KGRci0 まあ、boost使えば解決するしな
928デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 22:12:32.03ID:PwP8j0Dr0 嘘教えてた。。。
dropWhileは先頭削除じゃなくて、先頭も含め、普通の文字が出るまで空白文字を(続く限り)削除。
その後またa,bに分解する処理に戻る。
文字列終端に来たら、削除処理やめてループ抜ければ良い。
dropWhileは先頭削除じゃなくて、先頭も含め、普通の文字が出るまで空白文字を(続く限り)削除。
その後またa,bに分解する処理に戻る。
文字列終端に来たら、削除処理やめてループ抜ければ良い。
929デフォルトの名無しさん (ワントンキン)
2019/07/17(水) 22:20:33.37ID:7sSMAEyGM 真面目に考えると
空白の定義は何か?
に始まり、様々な議論の末に
localeとかcodecvtとか糞が出来上がり
もうUTF8でええか
ってなる
空白の定義は何か?
に始まり、様々な議論の末に
localeとかcodecvtとか糞が出来上がり
もうUTF8でええか
ってなる
930デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 23:21:35.69ID:2rOrG0JC0 codecvt使おうとしてdeprecated に気づいてイラッとしたが、使い込んでからでなくて良かったとも言える
931デフォルトの名無しさん (ワッチョイ)
2019/07/17(水) 23:42:15.40ID:MynlIz/m0932デフォルトの名無しさん (アウアウウー)
2019/07/17(水) 23:51:34.05ID:tdObsQKBa グダグタやな・・・
933デフォルトの名無しさん (ワッチョイ)
2019/07/18(木) 00:41:55.63ID:z8m7YHch0 c++らしさがあるとするならば使う外部ライブラリや成果物にではなく設計に出るもんだし
934デフォルトの名無しさん (ワッチョイ)
2019/07/18(木) 22:22:24.52ID:tHz4DA4Z0 C++ではあなたが書いたプログラムで競技するが、
Rustではあなたが書く速度が競技される…!
Rustではあなたが書く速度が競技される…!
935デフォルトの名無しさん (ワッチョイ)
2019/07/18(木) 23:34:17.47ID:tHz4DA4Z0 std::unique_ptrを使い倒すなどして所有権について完璧に理解したら
Rustのコンパイルが通る確率が増すから
C++はきちんと勉強しといた方が良い
Rustのコンパイルが通る確率が増すから
C++はきちんと勉強しといた方が良い
936デフォルトの名無しさん (アウアウウー)
2019/07/18(木) 23:57:13.50ID:6wWDWcUja rustはジェネリクスが弱いのでまだまだC++の方が優位。
937デフォルトの名無しさん (ワッチョイ)
2019/07/19(金) 00:19:57.42ID:M7PKBqIe0 Rustは所有権に関する厳格なルールの強制という土台の上に、
ありえないぐらい強力な型推論と並列実行の安全性を実現しているから
トータルで見たらわからん
ていうかセルフホスティングはもちろんGUI付きのOSまで記述し切った数少ないシステム記述言語
ありえないぐらい強力な型推論と並列実行の安全性を実現しているから
トータルで見たらわからん
ていうかセルフホスティングはもちろんGUI付きのOSまで記述し切った数少ないシステム記述言語
938デフォルトの名無しさん (ワッチョイ)
2019/07/19(金) 07:27:38.24ID:NVGMoojf0939デフォルトの名無しさん (ササクッテロ)
2019/07/19(金) 14:57:42.13ID:Tl6B//bHp string型をunsigned short型へ
unsigned long型をunsigned short型へ
この二つの変換ってどうすれば良いのでしょうか
unsigned long型をunsigned short型へ
この二つの変換ってどうすれば良いのでしょうか
940デフォルトの名無しさん (ワッチョイ)
2019/07/19(金) 17:40:08.00ID:Ix7q1TdK0 上はstd::stoiしてからint->unsigned short変換
下は普通のキャストの何が不満なのか言ってくれないと答えようがない
下は普通のキャストの何が不満なのか言ってくれないと答えようがない
941デフォルトの名無しさん (オッペケ)
2019/07/19(金) 17:41:48.47ID:sXtRjlqhr なんで最近競技競技言ってる奴増えたのこのスレ
942デフォルトの名無しさん (オッペケ)
2019/07/19(金) 17:42:02.18ID:sXtRjlqhr いや俺もやるけども
943デフォルトの名無しさん (ワイモマー)
2019/07/19(金) 18:50:19.74ID:VjSSiyVUM 俺は遊びにc++なんか使わないな
仕事で嫌々触るだけ(ヽ´ω`)
仕事で嫌々触るだけ(ヽ´ω`)
944デフォルトの名無しさん (ワッチョイ)
2019/07/19(金) 20:41:48.13ID:mIvdqWR30 オッパイソンていう名前もいいよな。
945デフォルトの名無しさん (ワッチョイ)
2019/07/19(金) 23:17:35.58ID:Bc1kXVzL0 昔はトリッキーな事をしないと
まともな動作速度にならないことが有ったからなんじゃないか
今は小手先的な方法は余り必要ないから
明らかに遅くなる様な方法を避けるだけで済む
まともな動作速度にならないことが有ったからなんじゃないか
今は小手先的な方法は余り必要ないから
明らかに遅くなる様な方法を避けるだけで済む
946デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 01:43:36.62ID:FW5VH8uR0 3E AF とか
自己書き換えみたいなやつ、
自己書き換えみたいなやつ、
947デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 01:46:03.08ID:FW5VH8uR0 LDIRのsrcとdstを1バイトずらしてV-RAMを高速0クリア、
しかしさらに速いPUSH BCループとか、
しかしさらに速いPUSH BCループとか、
948デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 01:54:09.02ID:FW5VH8uR0949デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 10:57:00.09ID:Yrx50SvY0950デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 10:59:12.02ID:qxTzR7590 個人開発も出来ない言語ってどういう意味?
951デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 11:01:41.75ID:LSCvoBZA0 「俺ごときではC++を使ったら」個人開発も出来ないって意味じゃない?
952デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 11:12:37.70ID:FGTvlN9C0 コンパイラが見つけられないとかだろ
953デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 12:17:34.19ID:QHhW8HGw0 >>950
個人開発してるけど次何作ったらいい?みたいなことを質問をして変な回答をもらってた奴がいた気がする。バカにされて拗らしただけだろう。
開発したければこんなところで聞いてないで好きに作りゃいいのに。
個人開発してるけど次何作ったらいい?みたいなことを質問をして変な回答をもらってた奴がいた気がする。バカにされて拗らしただけだろう。
開発したければこんなところで聞いてないで好きに作りゃいいのに。
954デフォルトの名無しさん (ラクッペ)
2019/07/20(土) 13:06:25.21ID:haD4oX2dM955デフォルトの名無しさん (ブーイモ)
2019/07/20(土) 13:13:28.26ID:I7OxfMMiM なんか別言語のバックエンドとして個人開発で現実的に使えるじゃんねC++
956デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 20:34:13.05ID:gmQsKw1Z0957デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 21:34:27.84ID:HDilRWOR0 今更だな
958デフォルトの名無しさん (ワントンキン)
2019/07/20(土) 22:48:15.23ID:wwp1044bM C++はキチガイを惹き付ける謎の魅力?があるからな
わからないからとっとと他の言語やってろと
わからないからとっとと他の言語やってろと
959デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 22:50:38.95ID:Yrx50SvY0960デフォルトの名無しさん (ワントンキン)
2019/07/20(土) 22:57:45.67ID:wwp1044bM961デフォルトの名無しさん (アウアウウー)
2019/07/20(土) 23:10:31.33ID:TZzwsQSsa java嫌い
962デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 23:12:08.92ID:Yrx50SvY0963デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 23:16:42.66ID:/hJYDa9Z0 Javaよりpowershellの方が好きだわ
964デフォルトの名無しさん (スップ)
2019/07/20(土) 23:29:19.66ID:mPgH+OwDd 俺もjava好きになれんは便利な奴とは思うが何か気が合わないpythongはくそだけど未だそっちの方がいいと思うくらい(´・ω・`)
965デフォルトの名無しさん (ワッチョイ)
2019/07/20(土) 23:53:49.57ID:yiU6YB/J0 今のJavaはどこを目指してるのかさっぱりわからない
966デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 00:48:50.75ID:iF1O4o5j0 この前びっくりしたJavaの記法
class Foo {
void someMethod1() { Log.e("Hello"); }
String someMethod2() { return ("World!"); }
};
Foo foo = new Foo() {
void someMethod1() { Log.e("This is"); }
String someMethod2() { return "a pen."; }
};
これはC#でももっと穏当な書き方を要求されるぞ
Goとか意識しすぎなんじゃ…
class Foo {
void someMethod1() { Log.e("Hello"); }
String someMethod2() { return ("World!"); }
};
Foo foo = new Foo() {
void someMethod1() { Log.e("This is"); }
String someMethod2() { return "a pen."; }
};
これはC#でももっと穏当な書き方を要求されるぞ
Goとか意識しすぎなんじゃ…
967デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 00:59:05.24ID:iF1O4o5j0968デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 01:10:26.92ID:b5BpKmtG0 Javaよく知らんけどnewしたときにメソッド書き換えてるのか?
969デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 01:15:33.89ID:g8U8cyIO0 >>966
無名クラスとはまた違うの?
無名クラスとはまた違うの?
970デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 01:25:26.85ID:iF1O4o5j0 >>968
じつは継承かつ親クラスのメンバ変数の参照キャプチャ。
もっとも、>>966のはちょっと手が滑っっており後者が表現されていなかったので、
Fooがclass Barの中で定義されたinnerクラスであり、親クラスBarの
メンバ変数Bar::m_Xを、FooやFooのサブクラスのsomeMethod1()やsomeMethod2()の中で
使っていると思ってだちゃい(汗;
C#だと親クラスのメンバの参照キャプチャということはできず、
当然親クラスポインタを(コンストラクタとかで)渡して使うinnnerクラスとして
Fooとは別の名前で明確にクラス定義せねばならない。そう、このように↓↓↓
ttps://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/nested-types
じつは継承かつ親クラスのメンバ変数の参照キャプチャ。
もっとも、>>966のはちょっと手が滑っっており後者が表現されていなかったので、
Fooがclass Barの中で定義されたinnerクラスであり、親クラスBarの
メンバ変数Bar::m_Xを、FooやFooのサブクラスのsomeMethod1()やsomeMethod2()の中で
使っていると思ってだちゃい(汗;
C#だと親クラスのメンバの参照キャプチャということはできず、
当然親クラスポインタを(コンストラクタとかで)渡して使うinnnerクラスとして
Fooとは別の名前で明確にクラス定義せねばならない。そう、このように↓↓↓
ttps://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/nested-types
971デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 06:42:56.05ID:/atv33Bt0972デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 09:49:29.73ID:p/MmW4OD0 JavaはOOを前面に打ち出したのが失敗だったんじゃないだろか。
973デフォルトの名無しさん (アウアウウー)
2019/07/21(日) 09:50:36.01ID:MuQkzP8ma974デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 11:53:27.31ID:uQgnyJHu0 最近触ってないけどJavaの例外指定って今どうなってるの
C++は扱いきれずにぶん投げてnoexceptに移行したけど
C++は扱いきれずにぶん投げてnoexceptに移行したけど
975デフォルトの名無しさん (ドコグロ)
2019/07/21(日) 12:11:15.35ID:5G+N+TdNM Javaのチェック例外はラムダ式と相性が悪すぎて崩壊したよ
もうほとんど使われてない
もうほとんど使われてない
976デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 12:28:36.06ID:/NqdtLiW0977デフォルトの名無しさん (ワントンキン)
2019/07/21(日) 12:32:30.53ID:lSbr1E+JM 中身のないやり取りなので気にする必要は一ミリもないぞ
978デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 12:35:00.37ID:nevBE1rB0 Javaでチェック例外を使わないという選択肢などないと思うが。
あるとすればJavaのラムダを使わないかJava自体を使わないか。
あるとすればJavaのラムダを使わないかJava自体を使わないか。
979デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 13:10:45.64ID:iF1O4o5j0980デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 17:32:26.73ID:IcUxNQlv0 「なぜ登るか?」
「そこに山があるからだ。」
「なるほど、じゃあおもくそ山高くしたろ」
なんかこんな感じだよなc++って。
「そこに山があるからだ。」
「なるほど、じゃあおもくそ山高くしたろ」
なんかこんな感じだよなc++って。
981デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 17:41:13.82ID:5KK3hTpc0 設計の問題。
在る機能全部使おうとすると破綻する。
在る機能全部使おうとすると破綻する。
982デフォルトの名無しさん (スフッ)
2019/07/21(日) 18:09:44.09ID:CyuPNeASd 無意味に難解なのはSFINAE回りくらいじゃね
それもコンセプトで解消される
後はあると便利なものがキチンとあるだけだろ
それもコンセプトで解消される
後はあると便利なものがキチンとあるだけだろ
983デフォルトの名無しさん (ワントンキン)
2019/07/21(日) 18:13:39.49ID:lSbr1E+JM せっかくchrono作ったのにカレンダ無いとか… 追加されるけど
アプリレイヤーとしては欲しいものいっぱいあるぞ
アプリレイヤーとしては欲しいものいっぱいあるぞ
984デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 18:32:56.02ID:/NqdtLiW0985デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 18:38:11.33ID:g8U8cyIO0986デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 18:52:48.31ID:/atv33Bt0987デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 18:56:39.20ID:g8U8cyIO0988デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 18:59:22.81ID:/atv33Bt0989デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 19:06:29.57ID:g8U8cyIO0 実際必要だと判断されたから、20で追加されるんだが
cの標準でも用意されていた機能なんだぜ
しかもそれ使うと危険という
cの標準でも用意されていた機能なんだぜ
しかもそれ使うと危険という
990デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 19:42:05.39ID:0SSdRhOe0 最初のchronoは時間表現というより時間計測が主だったんだろうなあ
カレンダーが欲しくなるのは当然の流れだが
カレンダーが欲しくなるのは当然の流れだが
991デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 20:21:15.19ID:8zHzQ0Ul0 >>986
言語仕様ではなかろう
言語仕様ではなかろう
992デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 20:52:41.65ID:tT+txzfE0993デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 21:10:55.64ID:/NqdtLiW0994デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 21:15:07.27ID:/atv33Bt0995デフォルトの名無しさん (ワントンキン)
2019/07/21(日) 21:24:30.67ID:lSbr1E+JM おっレベル高い話か?
ADLの悪口とか言えばいいのか?
ADLの悪口とか言えばいいのか?
996デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 21:25:36.53ID:g8U8cyIO0 標準ライブラリって言語仕様の一部じゃね?
997デフォルトの名無しさん (アウアウウー)
2019/07/21(日) 21:41:15.45ID:SB58lq3ha そろそろ次スレ。わっちょい
998デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 22:13:05.40ID:8zHzQ0Ul0999デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 22:34:04.04ID:/atv33Bt01000デフォルトの名無しさん (ワッチョイ)
2019/07/21(日) 22:35:38.39ID:/atv33Bt010011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 36日 8時間 43分 45秒
新しいスレッドを立ててください。
life time: 36日 8時間 43分 45秒
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を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 生活保護廃止、公務員の給与に最低賃金を適用⇦これをやるだけで国民の9割の不満が解消されるのにやらない理由 [218488394]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
- 台湾政党が高市首相「存立危機事態」発言に感謝の書簡「我々の心を強く奮い立たせるものでした」 [834922174]
