◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part143 YouTube動画>1本


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1560574313/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ)2019/06/15(土) 13:51:53.57ID:DKQ0QQLH0
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part142
http://2chb.net/r/tech/1554124625/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://2chb.net/r/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

2デフォルトの名無しさん (ワッチョイ)2019/06/15(土) 16:03:43.75ID:yU4M2XeV0
すっぱい葡萄
http://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
http://qiita.com/hirokidaichi/items/adccebb41f77eaa6132f
>Paul曰く:
>人は、その人のアイデンティティの一部となっている事について、実りある議論はできない。
>これすなわち、自分のホームに近い話題ほど論理よりも感情が優先されてしまうということ。
>Kathy曰く:
>他の人が夢中になるほど、そのプロダクトやブランドへの憎しみは強くなる
>これはつまり、彼らはクールエイドを飲んでしまってるということだ。

4デフォルトの名無しさん (ワッチョイ)2019/06/16(日) 16:55:32.05ID:NJ2skO190
質問です。

https://dotup.org/uploda/dotup.org1873815.zip
ここまで作ってデバッグしようとしたらシェアードポインタが継承扱ってくれない感じになった。
2017ではできていた気がしたけど、なぜですか?

5デフォルトの名無しさん (ワッチョイ)2019/06/16(日) 17:32:43.45ID:/ZY8dphZ0
thinkFirst
ThinkFirst

オーバーライドするときはoverrideつけたら?

6デフォルトの名無しさん (ワッチョイ)2019/06/16(日) 17:36:44.99ID:NJ2skO190
>>5
サンクス。こんなことか・・・。
そういえばそういう習慣持ってないなぁ。余裕があったらやってみる。

コンパイル通ったので再開。

助かりましたありがとう。

7 ◆QZaw55cn4c (ワッチョイ)2019/06/16(日) 19:27:55.97ID:gDHKfsB60
test

8デフォルトの名無しさん (ワッチョイ)2019/06/17(月) 00:12:48.76ID:oaY4OAXG0
>>1

前スレ>>1000の人は関数型プログラミング的プログラミングを自らに課している人なのであろう
つまり全てのオブジェクトは属性がコンストラクタで設定され、immutable、、、

9デフォルトの名無しさん (ワッチョイ)2019/06/17(月) 00:55:04.38ID:qMa7jD650
getterは読み取り専用のメンバを作りたいときに必要
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つぐらいの感じ。

13デフォルトの名無しさん (スップ)2019/06/17(月) 14:59:51.76ID:otIzoLhyd
セマンティクス上で重要なメンバ関数の区別は、オブジェクトの内部状態を変更するものか(非constメンバ関数)と、変更せずに内容を見るためのものか(constメンバ関数)の違いであって
その具体的な処理内容が特定のprivateデータメンバのgetterかsetterかなんて観点は大して重要じゃないし、そんなものに固執して設計を考えるのは馬鹿馬鹿しいし危険だと思う

14デフォルトの名無しさん (ブーイモ)2019/06/17(月) 15:13:59.52ID:NDzOpmZcM
>>13
「状態を変更」の方はまあいいけど「内容を見る」という表現は狭すぎないか。

15デフォルトの名無しさん (スップ)2019/06/17(月) 15:20:09.82ID:otIzoLhyd
そうね引数を加工するとか他のオブジェクトへのプロキシになるとか色々あるね
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;

19デフォルトの名無しさん (アウアウウー)2019/06/17(月) 17:11:32.29ID:xa2u5Y3Ua
Paramsは複数の型のメンバ変数を持ちますがpointerにtypeidを合わせて持たせることで使用時の問題は解決できます

20デフォルトの名無しさん (ワッチョイ)2019/06/17(月) 17:11:48.82ID:cgazGIue0
>>18
日本語でok

21デフォルトの名無しさん (アウアウウー)2019/06/17(月) 17:15:04.87ID:xa2u5Y3Ua
以下のように一つずつ割り当てるのではなく、構造体に含まれるメンバの名前とポインタをイテレートして割り当てたいのです
pointer["param1"] = &params.param1;
pointer["param2"] = &params.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++使わないのが正解

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++だと同時にデータが処分されるタイミングを考えなきゃならなくて逆にむずい。

34デフォルトの名無しさん (ワッチョイ)2019/06/17(月) 23:49:52.62ID:x+yzwFNm0
大抵の言語でループ変数をキャプチャするlambdaを配列に入れるとかするとはまるよね

c++の場合コピーキャプチャ使えばすむけど、キャプチャ方式指定できない言語だと結構面倒なことになる

35デフォルトの名無しさん (ブーイモ)2019/06/17(月) 23:56:31.71ID:kTiNst+JM
>>26
そういえばそうでした…そうします
>>27
ですよね
初歩的な質問ですいませんでした

36デフォルトの名無しさん (ワッチョイ)2019/06/18(火) 03:06:02.01ID:0f68xvDd0
>>22
リフレクションっていうんですね
このサイトのリフレクションの実装を超簡易的に真似してみました
結局一つずつ追加することになりますが扱いやすさは悪くないはず…
http://motchy-usk.blogspot.com/2010/07/blog-post.html
https://ideone.com/zc6oHM

37デフォルトの名無しさん (ワッチョイ)2019/06/18(火) 06:13:56.61ID:3nOE2mBA0
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
http://2chb.net/r/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:DSQg2zLR0

41デフォルトの名無しさん (ワッチョイ)2019/06/19(水) 02:12:33.91ID:/zwjJHhK0
そこでマクロですよ。

42デフォルトの名無しさん (ワッチョイ)2019/06/19(水) 02:37:43.11ID:0yjsH3hg0
>>39
cpprefjp

43デフォルトの名無しさん (ワッチョイ)2019/06/19(水) 02:46:18.73ID:8qBvJS/J0
https://postd.cc/embedded-cpp/
>最近のC++のアップデートにより、コンパイラ開発にかかる時間が大いに短縮されました。

これって具体的には何ですか?

44デフォルトの名無しさん (ワッチョイ)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のバージョンアップでカスタマイズしやすくなった、とかじゃないの?

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++のアップデートに伴ってコンパイラ開発のペースは増しており、〜」ぐらいかな。

48デフォルトの名無しさん (アウアウカー)2019/06/19(水) 12:07:30.39ID:52Ph4xCha
>>39
ポケットリファレンス
ただ次の現場がレガシーC++ならあまり参考にならないだろうけど

49デフォルトの名無しさん (ワッチョイ)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はもう使いたくない

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++」には必要なことは書いてある、と思う。

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は実用にならない欠陥品。
破壊的変更になっても次の規格で修正すべき』
って声が(一部で)あったんよ(※表現は誇張しております)

66デフォルトの名無しさん (ワッチョイ)2019/06/20(木) 15:21:36.40ID:M/WWMkF90
std::async使ってみましたがstd::launch::async指定すると自動でjoinしますね
デストラクタで待ってるんですかね
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もその後入ることに期待です。
関数チェインしたいんです!

と、唐突に宣伝を始めるなど。

71デフォルトの名無しさん (ワッチョイ)2019/06/20(木) 19:15:02.26ID:EITLfG5y0
>>56
不思議なことに、読めるようになると、聞き取れるようにもなるんだよね。
どうしてだろね。
不思議不思議。

72デフォルトの名無しさん (ワッチョイ)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を出せ
ってやつが全然できないので教えてください。

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;
}

79デフォルトの名無しさん (ドコグロ)2019/06/21(金) 20:41:29.94ID:9XN8XoXIM
>>75
> 再帰を用いずに、
その意図は?
単にスタック使いたくないだけなら最近のコンパイラにまかせりゃ末尾呼出最適化ぐらいはするから気にすんな

80デフォルトの名無しさん (ワッチョイ)2019/06/21(金) 21:07:41.81ID:G412ZpUw0
なんかの課題だろ

81デフォルトの名無しさん (アウアウエー)2019/06/21(金) 21:12:24.28ID:o/bRPi0pa
平均値も出せないMath.hはクソだと思う理由

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コンパイラでコンパイルするのと

どっちが性能良いんだろう?
トランスパイラの優秀さにもよりそうだが

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で表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。
トランスパイルの方が効率が上がる理由はないと思うよ。

90◆QZaw55cn4c (ワッチョイ)2019/06/22(土) 16:38:05.67ID:ICCmixle0
現時点で利用可能な 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に勝ってる項目があるんだけど信じがたい

93デフォルトの名無しさん (ワッチョイ)2019/06/22(土) 17:16:00.48ID:ecTKxvDL0
https://gist.github.com/simonhf/de808e0f8240ef27dac655505c8bf30f#file-result-summary-txt

こっちだと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より速くなる。
しかしいちいちそんな事やってられるか?

95デフォルトの名無しさん (ワッチョイ)2019/06/22(土) 17:20:50.35ID:VTgUFffK0
>>89
c++のままでないとできない最適化って何がある?

96◆QZaw55cn4c (ワッチョイ)2019/06/22(土) 17:40:41.59ID:ICCmixle0
>>91
LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?

97◆QZaw55cn4c (ワッチョイ)2019/06/22(土) 17:41:56.82ID:ICCmixle0
>>92
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ってまさにそのための仕組みなんだけど

100デフォルトの名無しさん (アウアウウー)2019/06/22(土) 18:48:22.39ID:MmmgKpwaa
>>95
具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、
(最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。

101デフォルトの名無しさん (ワッチョイ)2019/06/22(土) 18:58:11.17ID:3PgdpjOh0
>>96
そちらこそllvmをまるで理解していないみたいですね

102デフォルトの名無しさん (ブーイモ)2019/06/22(土) 19:04:53.83ID:cW7wMvLUM
>>100
具体的なのが聞きたい
gccもllvmも中間言語でやる最適化が中心でしょ
そういうc++の特別なフェーズがあるなら興味ある
けど知らずに言ってるなら聞いても無駄だね

103◆QZaw55cn4c (ワッチョイ)2019/06/22(土) 19:27:19.94ID:ICCmixle0
>>101
llvm が変換した IR を C コードに戻すことができるのですか?

104デフォルトの名無しさん (ワッチョイ)2019/06/22(土) 20:26:09.97ID:/7bwQJ5j0
(1) コンストラクタの呼び出し回数削減最適化
(2) クラスが絡むmemory ariasing

(1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ
(2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると
クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ

な印象
想像なので詳しくは知らん

105デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 01:02:56.59ID:PTFzQo+G0
初歩的な質問で申し訳ないんですけどcinってどういうもんなんでしょうか
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+Pcki0
マニュアルみれ
https://cpprefjp.github.io/reference/iostream/cin.html

std::istream
character input

108デフォルトの名無しさん (ワッチョイ)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
ぐぐったらマジでそうだった
高水準言語から直接コンパイルした方が速いんだな

110デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 06:35:12.06ID:6LMXkq2m0
C++でクロスプラットフォームなコードを書くのはどれくらい難しい?
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++はレベルの低い奴が使うものだから」

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%)が続いた。

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両方学べるね。

118デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 11:20:59.77ID:JKCTeXCU0
超堅牢に作らないといけないから、
見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか
ヘッダーに実装書き散らしてるのよくないね
OSはバイナリ境界意識しないといけないし
まあどのみち標準ライブラリは使えないけど

119デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 11:28:01.94ID:6GXr3JQp0
最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
http://2chb.net/r/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はどうやって作れますか?

121デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 11:39:50.16ID:Xq17DW5L0
>>115
各ベンダーがサポートするにはC言語がちょうどいい規模だから

122◆QZaw55cn4c (ワッチョイ)2019/06/23(日) 12:03:58.80ID:DC/NnmXU0
>>112
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++で良い

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:7M38Ae5l0
>>127
コンパイラオプションでRTTIを無効化するとデータ量が減るのでパフォーマンスが上がる
→つまり一部でも使ってると低下する

まぁ今時は気にする必要無いと思うけど
速度は実測が基本

130デフォルトの名無しさん (ワッチョイ)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の失敗はもみ消せ
どうせ回復などできない

133デフォルトの名無しさん (アウアウウー)2019/06/23(日) 21:01:47.41ID:EoSayXaXa
>>129
やはりそうですか、ありがとうございます
速度は今試せないのでまたこんどやってみます

134デフォルトの名無しさん (ワッチョイ)2019/06/23(日) 21:13:15.69ID:PTFzQo+G0
>>107
えーっとcinってのはistream型のオブジェクトってことでいいんですかね
externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね

135デフォルトの名無しさん (ワッチョイ)2019/06/24(月) 07:55:10.22ID:6Zff8TGS0
1.思考停止してそのまま使う
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++のプロになれる気がせんわ

142デフォルトの名無しさん (ワッチョイ)2019/06/24(月) 22:08:08.69ID:tWJeInAS0
そのへんはさらっと何が書いてあるか見ておいて、実際書くときに関係ある部分を参照する本では?

143デフォルトの名無しさん (ワッチョイ)2019/06/24(月) 23:54:52.99ID:4vQIe5sT0
>>141
それは思うわ
結局その辺の不満を改善したのがJava以降のオブジェクト指向言語だから
今C++を勉強すると面倒すぎると感じるはず

144デフォルトの名無しさん (ワッチョイ)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
中野英雄

146デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 07:42:37.27ID:p22LimGY0
>>132
回復できないエラーでもユーザーに通知する余地はあるでしょう。最悪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はメタプログラミングに片足突っ込んでるからだいぶ後回しでいいと思う
考えること無限にある、は同意だけど優先順位低いものは忘れた方がいいんじゃないかね(特に、ループ回しもしない箇所の速度効率とか

149デフォルトの名無しさん (スフッ)2019/06/25(火) 17:37:46.05ID:kxXa+TrUd
むしろjavaの方がいろいろ面倒くさくね

150デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 17:56:57.79ID:Cc6pu6kp0
使用する概念としてはJavaとCを足してさらに多重継承とか演算子オーバーロードとかを足した
のがC++という印象だった。

151デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 18:01:11.39ID:Cc6pu6kp0
プログラミング言語 収入 ランキング
とかでぐぐると
難しい上に重要なはずの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倍稼げる

159デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 19:43:08.34ID:0zPp4OkO0
というか自分のビジネス思いつくタイプでもないプログラマーが稼ごうと思ったらなるべくニッチな言語を探していくべきなんだと思う
C/C++なんてメジャーどころは一番だめなんじゃないか。まだまだ人が少ないか、書ける人がどんどん減っていきそうなところを

160デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 19:50:04.75ID:U1S86Wri0
COBOLは意外と稼げるらしい

161デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 20:09:29.07ID:U+wxsv9j0
>>159
違うぞ稼げる商売やってる人に乗っかるのが正解
現在儲かってしょうがない会社に入るか今後そうなる会社に入っておくしかない
専門分野は関係ないが一発当てようがない業界というのはあるからそういうところは目指さない方がいい

162◆QZaw55cn4c (ワッチョイ)2019/06/25(火) 21:00:35.29ID:eaNcyZwN0
言語は表現手段にすぎないので、言語で分野が決まってしまう現状には疑問を持ちます
少なくともライブラリーは統一されるべきだと昔から夢想してきています

163デフォルトの名無しさん (ワンミングク)2019/06/25(火) 21:02:24.65ID:i1Zv6l/dM
現実にあったんじゃよCOMというものがな

164デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:03:41.95ID:zDe7yE4Q0
ライブラリはCインターフェースさえあれば全てのまともな言語から呼べるから問題ない

165◆QZaw55cn4c (ワッチョイ)2019/06/25(火) 21:07:14.96ID:eaNcyZwN0
>>163
OLE は重過ぎるんじゃないでしょうか?単に名前と仕様が「ある程度」統一できればいいかと考えています
でも OLE はもう一度調べなおしてみます、キーワード提供ありがとうございます

166◆QZaw55cn4c (ワッチョイ)2019/06/25(火) 21:07:47.47ID:eaNcyZwN0
>>164
OO であるべきでは?

167デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:10:43.33ID:6yREXBxQ0
素朴な疑問なんだけど
オブジェクトをshared_ptrで管理するとき
そのオブジェクトから他のオブジェクトにポインタを渡したいときってどうするの?
コンストラクタ以外のメソッドからならenable_shared_from_thisで
生なthisポインタからshared_ptrを生成して渡せばよいけど
コンストラクタだとそれも無理だよね(shared_ptrが作られるのはnewの後だから)
どうするの?

168デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:11:27.40ID:paQRKRTX0
ポインタ指向プログラミングとオブジェクト指向プログラミングは根本的に相性が悪い
これがC++高難易度化の一要因

169蟻人間 ◆T6xkBnTXz7B0 (スフッ)2019/06/25(火) 21:13:45.53ID:ayyd1Kg3d
>>167
make_sharedじゃね?

170デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:15:54.14ID:6yREXBxQ0
てかさ
自分自身のスマポを
外部から渡してもらわないと、自分では知れないってのは
設計ミスなんじゃね?
当たり前、JavaやC#だとそんな制約ないからなぁ

171デフォルトの名無しさん (アウアウカー)2019/06/25(火) 21:18:19.51ID:p4xx1Je/a
代入がメンバのコピーという仕様が全ての複雑さの元凶
互換性のために仕方なかったとはいえ
おかげで完全に動くクラスをつくるのが凄まじくしんどい
それを改善しようとしたJavaは全てポインタのコピーというふうに割り切ったが
Optinalを導入しなかったせいかヌルポの山を築いた
それを改善しようと
Rustは全てがムーブという世界を作ったがまだ受け入れられるには早かった

172デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:24:24.92ID:6yREXBxQ0
>>171
これまた不思議なもんで
Cからして配列は参照渡しなのに構造体は値渡しだからねぇ
Cの構造体が配列みたいにアクセスするとポインタに成り下がる仕様だったのなら
C++もまた違ってただろうねぇ
どちらがいいかは分からないが

173デフォルトの名無しさん (ワンミングク)2019/06/25(火) 21:26:08.00ID:i1Zv6l/dM
えっ
普通は呼吸をするように
const T& var
て書く様に訓練されてるだろ?

174デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:29:04.07ID:U+wxsv9j0
任意にコピーとポインタとムーブを使い分けることになんの苦労も無いと思うけど

175◆QZaw55cn4c (ワッチョイ)2019/06/25(火) 21:29:56.71ID:eaNcyZwN0
>>172
私は逆を考えていました、すなわち、配列ですら値渡しであるべきかと
参照渡しにしたいのなら、そのすべてに * をつけて明示するべき

176デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:32:48.81ID:6yREXBxQ0
そうではなくて
構造体において何も考えずに代入した場合
実体のコピーになるって話では
その点、配列では実体のコピーにならないので
JavaやC#のオブジェクトに近い仕様で
なかなか先鋭的

177デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:44:51.24ID:6yREXBxQ0
そんなことより
コンストラクタで自分自身のshared_ptrが欲しい時
どうするの?
欲しい理由としては、どっかシステム的なところにattachしたり
自分のコンポジションした子供たち?に渡したり
そういうことをコンストラクタですっかりしたい場合どうすんの
enable_shared_from_thisを継承して二段階初期化ってのもかっこ悪いし
(↑生成する側がshared_ptrを使ってくれなかった場合
 クラッシュするってのは置いておいてさ)

そもそも実行時型情報なんて反則が許されるなら
仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている
って仕様でもよかっただろ?
スマポ側が参照カウンタを持っているってのは一見賢そうだけど…
上手くいかないパターンもあるよね

178デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:48:45.68ID:6yREXBxQ0
>仮想関数付きのオブジェクトは実行時型情報のどこかに参照カウンタを隠し持っている

↑これはちょっと不正確だな
vtableと一緒に参照カウンタ〜
が正解かな

179デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:52:05.85ID:zDe7yE4Q0
ファクトリでやれ

180デフォルトの名無しさん (ワッチョイ)2019/06/25(火) 21:54:23.16ID:jeBecXDk0
>>177
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は異なるアーキ
テクチャに対して利用できるプログラミングモデルを構築することで、さまざまなコン
ピューティングアーキテクチャに対して同じコードベースで開発を進められる仕組みを
実現することを目指していると見られる。

185デフォルトの名無しさん (ワッチョイ)2019/06/26(水) 04:17:13.86ID:0Jy9MjGr0
結論
使えない

186デフォルトの名無しさん (ワッチョイ)2019/06/26(水) 06:38:56.80ID:LU29nklf0
>>177
相互参照自体がクソ汚い設計なんだからツールがいくら綺麗になってもダメ。
諦めてthis渡せや。

187デフォルトの名無しさん (ワッチョイ)2019/06/26(水) 07:32:00.47ID:ICIJHbsn0
>>184
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を実行する段階でも
似たことが行われる。

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++でいいだろとは思うんだけど
プログラミング構築を実際にどう進めていくのがいいのかってところが全然分からない

195デフォルトの名無しさん (ワッチョイ)2019/06/27(木) 23:06:50.63ID:v/LZDm7Y0
他人の設計をパクる

196デフォルトの名無しさん (ワッチョイ)2019/06/27(木) 23:34:52.50ID:ozPSmFlM0
>>194
同じ著者の再考C++とか?
ただクソ古い時代のC++
あとストラウストラップのC++によるプログラミングの原則と実践
これはモダンだが鈍器なので読むのは覚悟がいる

197デフォルトの名無しさん (オッペケ)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:RICIf1Tpr
>>199
質問に対する回答にま〜〜〜〜ったくなってない
お前死ぬほどアタマ悪いだろ

203デフォルトの名無しさん (ワッチョイ)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++に限らないなら他のスレで聞けばよくね?

207デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 16:02:48.30ID:U9hxi1vj0
各C++コンパイラのシェアってどのくらいなんだろう
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の内訳は分からない。

211デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 18:34:46.13ID:mY/mlIwO0
C++で、マルチプラットフォームで、コンパイラとライブラリを同じ組織が
作っているものは多分、他にない。Qtはライブラリと簡易IDE程度だし。
やはり同じ組織が全てを管理しているのは信頼性において優位。
なお、MSだと、Windowsシェアを根本的に減らす開発環境は存在し得ない。

212デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 18:58:18.67ID:mY/mlIwO0
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 にしたい処理を書く〜
}

214デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 19:31:18.51ID:eXqq+/Cl0
>auto tmp;

215デフォルトの名無しさん (ワンミングク)2019/06/28(金) 19:33:04.89ID:iRyUn2/nM
doubleか何かにしとけば
あるいはvariant

216デフォルトの名無しさん (JP)2019/06/28(金) 19:35:02.98ID:j8DkSia+H
>>214
vector<auto> って意味ですか?
>>215さんの案とどっちが良いんでしょうか。
思想による?

217デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 19:54:16.23ID:3z/U2tJH0
>>216
auto tmp;なんてありえねーってことだろ
型推論でけへんやん

218デフォルトの名無しさん (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文のすごい連なりを作る
単純でしょ

220デフォルトの名無しさん (ワッチョイ)2019/06/28(金) 20:12:43.82ID:ZUKGdUen0
9.7/2.01
ピリオドと/を含むこの文字列を分数と見做して小数にしてしまうかどうかも勝手に決めて言い

2.54/-0.07
これは非常に怪しいけど、負の小数に直してもいい、と決めていい

.565
これはどこからどう見ても小数の0.565に見えるから小数である、としてもいい

00.3
ゼロが重なってるけどだいたい小数だろ、ということにしてもいい

221デフォルトの名無しさん (JP)2019/06/28(金) 20:30:23.52ID:j8DkSia+H
>>219
トライ木みたいなものを作るべきということですか?
それとも、トライ木など言わずにもっとシンプルに実装できるのでしょうか

222デフォルトの名無しさん (アウアウウー)2019/06/28(金) 20:38:09.73ID:OXCJu0Q4a
読み込みの時点で処理をするときの型に変換するだけでは?

223デフォルトの名無しさん (JP)2019/06/28(金) 20:41:38.84ID:j8DkSia+H
>>222
>>213のコードで言うと、fin >> tmp の部分が「読み込みの時点」ですよね?
どう変えたら良いですか。

ちなみに、
〜 v にしたい処理を書く〜
というところには int なら int、float なら float 向けの工程が書かれるというつもりです

224デフォルトの名無しさん (ワッチョイ)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つをセットで用いてるんですが、なんか不格好というか・・・
もしかして変なことしてますかね自分?

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を決定せよ、
みたいな

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

243デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 08:35:15.39ID:z4L1A7GC0
>>239
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()みたいな関数を用意すればよいのか

246デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 09:35:17.38ID:TGC7pT1Z0
>>244
値を保持するだけならdouble(使えるならlong double)の一種類で十分

247デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 09:36:35.93ID:TGC7pT1Z0
>>245
『プログラミング言語C』のmalloc()の実装例を嫁

ていうかそれすら読んでいないのカヨ、というレヴェル

248デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 09:56:05.74ID:XuKJ1prL0
>>245
alignasが目的に合うように見えるが使ったことがないから適切かどうか分からん

249デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 09:59:59.32ID:YSWfxQRJ0
>>245
アライメント指定してるのに、
newがアライメントわからないって意味不明
アライメント指定どこいったんだよ

250デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 10:02:29.39ID:xxikbG460
アライメント指定して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()でも呼ぶようにすれば良い

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));
    }
};

こういうことではなく?

254デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 10:37:05.53ID:1DstyLuX0
>>246
でもそれだと、intとdoubleで別々の処理を書かないといけなくなる。
vector<int>とvector<double>を両方作ってtemplate関数で呼び分ければ処理の記述自体は1つにできるでしょ。

255デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 10:45:25.08ID:cHNlfV280
>>246
整数値のビット数が長いとdoubleじゃダメ

256デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 10:55:17.59ID:TGC7pT1Z0
>>255
12 bitぐらいまけてくれYO、
ていうか10バイトのdoubleを使ったらおk

257デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 10:59:12.33ID:TGC7pT1Z0
>>254
どっちかというと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

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:xxikbG460
>>252-253
そういうことですハイ
まあひねくれて変なnew使わなければそれで良さそうっすね

>>259
ありがとうございます

265デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 15:10:49.18ID:TGC7pT1Z0
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:N8jtlPKB0
>>268
ない
0返すだけ
std::stoi
とか使った方がいい

271デフォルトの名無しさん (ワッチョイ)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:TGC7pT1Z0
>>271
いろいろやれるからな
テンプレートみたいな難しい仕組みも標準規格としてきちんと仕様化できる連中が
言語仕様の策定を仕切っているというのが大きい

275デフォルトの名無しさん (ワッチョイ)2019/06/29(土) 22:45:38.89ID:zjX1HUko0
>>238
bimapに比較関数の指定をすればよいだろ
https://wandbox.org/permlink/1Zi4FrORsgQ28P9r

276デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 00:04:22.02ID:ft0B/0dK0
>>274
委員会が入ってきてからは汚くなってる気がする。
むしろ、ずっと昔に入った仕様が使いやすい。

277デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 00:15:31.74ID:DqQWlJNh0
C言語が一番使いやすいからな

278デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 00:34:51.63ID:UuQw9kvG0
C++はSTLの既存クラスに、新たなメンバ関数を追加できますか? 継承の新クラス作るのはではなく。
javascriptとかは追加できたとおもいます。

279デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 00:43:41.85ID:DqQWlJNh0
無理だからフリー関数作りましょう

280デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 01:56:53.48ID:exYwiLt20
>>277
テンプレートの代替物がプリプロセッサのマクロになってしまうというのが最悪すぐる、
しかしまあそれ以外は同意
ただしスタックに構造体を詰めないK&Rの頃の奴のは除外それは論外

281デフォルトの名無しさん (ワッチョイ)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

まぁ自分で分かってやるなら好きにすればいい感じですかね

282デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 07:01:13.58ID:V2b2ALnu0
昔C++にお世話になってたんだけどその頃はゲームでよく使われる言語だったんだよね
今でもゲーム開発によく使われてるの?

283デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 07:14:28.67ID:CneIN5yy0
>>282
使われていると思う。アメリカのQuoraによれば、本格的な3Dゲームでは、
C#が使われたことは無く、全てC/C++製らしい。

284デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 08:26:27.75ID:VKcFh0qo0
ゲームエンジン自体はC++だけど、購入したエンジンを使って作る場合にはエンジンによって使う言語は変わる

285デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 08:41:33.25ID:V2b2ALnu0
>>283
>>284
3Dゲームとゲームエンジンで使われてるのね
やはり速度とモダンな機能ではまだC++の代替になる言語は無い感じだよね
そういう意味ではRustが最近がんばってるみたいだが

286デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 10:05:11.67ID:ft0B/0dK0
>>285
Rustは、mozillaが開発したから有名なだけ。
実際には広く使われることは無いらしい。

既存の言語から逸脱しすぎた言語は、よっぽど便利でない限りは普及しないらしいよ。

287デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 10:59:26.27ID:xpepSpla0
新言語上げでよくやられてるC++叩きって、書いてる方の知識が98/03で止まってて
「そんなん最近の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なのがたいへん痺れる、

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以降に挫折した人のための言語

294デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 13:14:05.13ID:HRz15QoR0
RustでC++ → Rustトランスレータを書いたら勉強になると思うわ

295デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 13:31:27.33ID:BKgyqS0e0
>>294
間にLLVM挟むと公共の福祉になりえます。

296デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 13:54:46.76ID:HRz15QoR0
>>295
ソースコードのコメントやインデントが保持されないのでは…
あと自分自身が使っていない範囲も含めたC++の全機能のトランスレートに対応しようとしたら日が暮れてしまう

297デフォルトの名無しさん (ブーイモ)2019/06/30(日) 14:03:37.82ID:aHps5PsQM
>>270
遅レスだけどthx。
面倒そうだけど何とかなりそうね

298デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 14:31:31.86ID:BKgyqS0e0
>>296
貴様、パイソニアンだな。

ずしゃんずしゃん。

299デフォルトの名無しさん (ブーイモ)2019/06/30(日) 15:34:49.82ID:TD3JD5CyM
みんなC++がここまで残ることになるとは予想してた?
このままだとC++30とか40とか普通に来そう

300デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 16:01:24.12ID:y+UHg1Q80
OSを除けば基礎的なソフトはだいたいC++でしょ
ふつーに重要言語の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だが?

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混ぜたような言語だし

306デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 16:42:10.94ID:9MaqxN1M0
c++が使われるとこってのはゲーム、ブラウザ、windows, MSoffice
とか、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で書かれたせいで性能が悪いって言ってる記事を読んだ事がある

309デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 18:34:08.60ID:y+UHg1Q80

310デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 18:40:59.64ID:y+UHg1Q80
要するにC++は「ソースコードが大規模かつ性能がシビアに要求される」場面で使われる。
開発効率はJavaより悪い事が実証されてたはず。
なんかの研究論文もあったし多くの開発者の経験談もある。
だから開発効率を多少悪化させてでも性能を求める場合に使われる。

311デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 18:45:18.35ID:/mKHwNLn0
使える人揃えるの大変なんだよ
Rustの導入談とか見ると、
性能に問題があって他言語導入を検討したがC++は使える人がいないのでRustにしましたとか書いてあるし

312デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 19:27:38.00ID:y5K6zYFc0
マジで?

313デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 19:34:56.51ID:CneIN5yy0
そもそもポインタが理解できる人が、アメリカの大学の理系の学生でもほとんどいないという話がある。
だから、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++は向いてない。

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++は数学や!という思いをそのときさらに強くしたわ

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++はいろいろ破綻している罠だらけの言語やとそのとき確信したわ;

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) { ... }
じゃなくて?

328デフォルトの名無しさん (ワンミングク)2019/06/30(日) 21:47:07.25ID:FO3LFjkXM
皮肉もわからんか

オーバーロードの解決順を制御するTipsがあった気が
この辺はマジで分かりにくいわ
コンパイルオプションで名前解決の過程が可視化できるとありがたいんだけど

329デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 21:50:50.85ID:DqQWlJNh0
constexpr ifで解決

330デフォルトの名無しさん (ワッチョイ)2019/06/30(日) 22:04:25.11ID:HRz15QoR0
>>327
うおホンマやできた!
mjk、、、

331デフォルトの名無しさん (アウアウウー)2019/06/30(日) 22:15:40.66ID:quJHbj16a
さらに言えば<Foo,Foo>と<Bar,Bar>の所消しても動かん?

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種類のうちのどれを特殊化すべきなのかわからないかららしい

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()というシグネチャで他と統一的に扱おうとした結果スゲー薄氷を踏むようなプログラミングになっていた、
ことがわかった、、

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)式のシグネチャへの統一)を果たせてシンプル&スマートに解決する。

336デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 09:30:45.05ID:9r8RZXK30
>>317
アメリカのコンピュータ科学系の学生の7割がポインタが理解できないらしい。

337デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 10:02:33.15ID:PRpBlBSs0

338デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 11:10:00.06ID:O1pDJEnN0
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やったんだけど
最初スクリプト言語みたいなライトウェイトなやつやるべきだってのは正しいのかもね

341デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 12:02:11.46ID:9r8RZXK30
実は、プログラミングに興味がある人は多くても、適性が余り無い人の方が多い。
だから、誰でも出来る言語の人気が高まる。それがスクリプト言語であり、
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言語は人間の認識的に誤りやすい書き方になっているのが問題
そういうのをシマンテッスク問題とか言うらしい

345デフォルトの名無しさん (アウアウカー)2019/07/01(月) 13:42:23.56ID:8FaRxtrBa
アセンブリ言語を先に勉強すべきだんだよな
それだとメモリとそのアドレスを当たり前のように使うし
それこそがコンピュータなのだとわかる
そのあとで変数や参照はどう受け渡しされるのかを理解すればスムーズ

346デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 15:06:31.19ID:AV54Usro0
問題はアセンブリを始めるには手頃なアセンブラが無いというところか?
手頃さで言ったら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] の意味を理解できない人が多い。

348デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 15:21:46.37ID:9r8RZXK30
>>344

多分それは、>>347 みたいな話で、優先順位を「ほどいて」理解できない人
が多いんだと思うが、実は、見た目と離れて、優先順位どおりに、
配列やポインタの記号を「直線化」するとそんなに難しい話ではないんだが、
数学の計算と同じようなことで、それが難しい人がいる。

349デフォルトの名無しさん (ワッチョイ)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++に後から追加されてきた部分で、特に
最近に付け加えられてきた部分が誰かの言ったように「ハウルの動く城」的
になっている。

ところが、逆のことを言ってしまう人がいて、その人はポインタが理解できる
才能が無い人だと思う。

353デフォルトの名無しさん (ブーイモ)2019/07/01(月) 17:17:50.53ID:P3ZjOgE1M
>>351
そりゃ他の言語はC++のクラスを手本にクラスの仕様を決めてるからな

354デフォルトの名無しさん (スフッ)2019/07/01(月) 17:40:46.64ID:LBwvGCQOd
>>352
いや単にポインターまでの概念しか理解できない人だと思うよ
参照、右辺値参照辺りが理解できないで批判する人多い

355デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 17:43:47.18ID:9r8RZXK30
>>354
右辺値参照が理解できないのは分かるけど、単なる TYPE &aaa みたいな参照型
は、ポインタが理解しにくい人用に用意されたとも言われてる機能で、
ポインタが理解できたのにそれが理解できないとは考えにくい。

356デフォルトの名無しさん (ブーイモ)2019/07/01(月) 18:19:11.58ID:P3ZjOgE1M
右辺値と左辺値で参照レベルが変わるのがややこしい原因だと思うけどね。
変数名aを左辺で使うとaという入れ物、右辺で使うとaの中身。
*bを左辺で使うとbの中身のアドレスが指し示す場所、
右辺で使うとbの中身が指してるアドレスの中に入ってる値。

参照レベルを変える演算子のない言語なら意識しないところだが。

357デフォルトの名無しさん (ワントンキン)2019/07/01(月) 19:34:03.65ID:/QTcp5brM
glvalue
rvalue
lvalue
xvalue
prvalue
入門者の皆さんはまず上記の違いを把握することから始めましょう!

358デフォルトの名無しさん (ワッチョイ)2019/07/01(月) 21:19:13.74ID:CBwS2tFI0
そういうのしょうもないと思わないってのはほんとセンスないわ。

359デフォルトの名無しさん (ブーイモ)2019/07/01(月) 21:23:38.44ID:EBI1AAR2M
皮肉だろ
否定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などは
すぐには分からなくてもいいと思う。

364デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 08:29:28.55ID:vQT+qXro0
便利そうに見えても、CやC++の基礎をすっ飛ばしてboostやSTLを学ぶのは
C++の本質が学べないので良くない。それらにも配列やリストなどがあって、
C#などの高級言語風に使えるので初心者は勘違いしてしまいがちだが、
それらは「動的」なものが多く、本来のC++の速度が出ない事がある。
もともとのC++は、静的な配列が基本なので、速度を上げたいなら、
静的な方で済む場合にはなるべく静的なものを使うべき。その基本を知らずに
STLだけを何の配慮も無く使っていたら、昔からのC++のような高速なアプリ
を作るのは困難。

365デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 09:16:37.23ID:4nney+pq0
>>364
そんな考えだときりがない。
実測して時間かかってるところだけを改良したほうがいい
速度にほとんど影響しないところでも拘る、時間かかるはめになる。

366デフォルトの名無しさん (オイコラミネオ)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。

370デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 13:52:51.90ID:vQT+qXro0
Cにおいては、「標準ライブラリ」と呼ばれたライブラリは効率が良かったので
特殊な環境や黎明期以外では、それ以外を使う必要性は特になく、ほとんどの
場合それを使えば良いと考えられた。

ところが、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 を使うのも避けるべきである。

373デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 15:38:38.79ID:vQT+qXro0
>>371
さらに、全ての場所でスマートポインター系を使おうとする人も出てきてしまうのも
問題点。

374デフォルトの名無しさん (ワンミングク)2019/07/02(火) 16:10:20.92ID:0IWRI8p9M
計算量と配列使うかvector使うかは別の問題なんだけど…
あとarrayの要件分かってる?

375デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 16:14:23.02ID:vQT+qXro0
>>374
あなたは分かってない。
だからこういう風になる一例。

376デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 16:44:50.17ID:6JNNUWgV0
組み込みなんかだとvector始めSTL全部使えないとかあった
環境によっては標準ライブラリも全部使えないとかあったし
スタックサイズまで気にしなきゃいけないような組み込み系の話

377デフォルトの名無しさん (オイコラミネオ)2019/07/02(火) 16:50:12.65ID:OxvoR50aM
>>375
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+qXro0
>>380
雑魚の癖にえらそうにすんな。
お前は生ポインタ怖くて使えないだけだろ。

382デフォルトの名無しさん (ブーイモ)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を空で呼べばぁ?

387デフォルトの名無しさん (ブーイモ)2019/07/02(火) 18:14:56.47ID:B2rauTX7M
ところで生ポ怖いとかそんなヌルい理由でSTL使うやつおるの?w
ポインタ覚えたてのボクちゃんがイキってはるように見えますね。

388デフォルトの名無しさん (スフッ)2019/07/02(火) 18:17:41.70ID:++9dcTkMd
てか使わん理由がない
unique_ptrならオーバーヘッド0だろ

389デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 18:18:10.18ID:z0GlqJ7U0
>>386
それでもmoveが発生するでしょ。美しくないw

390デフォルトの名無しさん (スフッ)2019/07/02(火) 18:19:02.38ID:++9dcTkMd
>>389
moveは発生しないだろ?

391デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 18:19:50.61ID:gnGzqTIu0
ナマポは怖いよ
あれの不適切な取扱いのせいで数限りないバグとセキュリティホールが生まれて莫大な損害を生み出してる歴史に学ぶべきだ
そうなれば適切な取扱いを強制する仕組みをなるべく取り入れるのは至極当然のことだ

392デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 18:23:26.11ID:z0GlqJ7U0
>>390
MSVCとclangで試した範囲では、基本的にはスタック上に構築されたインスタンスをメモリコピーするアセンブリが生成される。
もちろん最適化で消えることもあるけど、全てというわけではない。
内部で確保されたメモリに対してplacement newで直接コンストラクタを呼び出すのと比べると若干のオーバーヘッドになる。

393デフォルトの名無しさん (スフッ)2019/07/02(火) 18:26:53.67ID:++9dcTkMd
それコンパイラかオプション腐ってね?
moveが無駄ってのがemplaceの存在意義だろ?

394デフォルトの名無しさん (ワッチョイ)2019/07/02(火) 18:30:07.12ID:z0GlqJ7U0
>>393
emplaceはmoveコンストラクタを呼び出すための関数でしょ。
push_backだとcopyコンストラクタが呼ばれる。

395デフォルトの名無しさん (ブーイモ)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

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するのかもしれんが何故だろう
アロケータ絡み?

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()を超えた時ごっそり移すから

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言語と互換性があるから頭の悪いナマポおじさんが初心者に間違った知識を広げていくという

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必要になる。

419デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 08:58:50.87ID:Odxsa8jS0
メモリ使用量という観点では、vectorよりもlistの方が優れる。
vectorは、メモリを2倍使用することで末尾追加の時間をO(1)に抑えているだけ。
固定長で済む場合はCの生配列を使うべき。
サイズを徐々に大きくしていくようなばあいは、vectorよりもlistの方が良い場合が
多い。ただし、listはランダムアクセスには向いてないが。

420デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 09:09:22.14ID:Odxsa8jS0
なお、TYPE のサイズが大きい場合に vectorを使うと、Core i7 でも Celeron 並み
にCPUキャッシュメモリが減ったかのようになり、せっかくのハイエンドなパソコンが
エントリーモデルのパソコン並みの速度になってしまうかも知れない。

421デフォルトの名無しさん (ブーイモ)2019/07/03(水) 09:13:08.57ID:+l3ADsTnM
生配列かvectorかlistかって論点古すぎ
今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:Odxsa8jS0
>>421 >>422
雑魚は黙っててくれ。レベルの低い人は自分がレベルが低いことに気が付かない。
このままだと日本のITは壊滅的なままだから。

425デフォルトの名無しさん (ブーイモ)2019/07/03(水) 09:52:43.97ID:+l3ADsTnM
>>424
はいはい雑魚雑魚
boostのstatic_vectorって調べてみな
生配列とvectorのいいとこどりのコンテナだ
eastlにも似たようなのあったはず
おれも大概おっさんでc++にネガティブな思いはある
だけどお前みたいな老害にはなりたくないな

426デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 10:01:00.52ID:Odxsa8jS0
>>425
static_vector みたいなアホみたいなものを持ち出して。
黙ってろよ馬鹿は。
想像力が足りない人が既にあるものをいくら勉強だけしても駄目なんだよ。

427デフォルトの名無しさん (オイコラミネオ)2019/07/03(水) 10:02:15.82ID:giz72OluM
約2倍使うのって追加するときに内部のサイズが足らん場合だけだろ
後別に遅くないがな

428デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 10:15:25.67ID:4T2xKCYX0
基礎をすっとばすのが良くないというのは同意だわ
C++はスクリプト言語の代わりにはなれない

429デフォルトの名無しさん (スフッ)2019/07/03(水) 10:41:14.59ID:N/cOPmK/d
>>418
その*2はどこから出てきたんだ?
生で10MBでサイズ既知なら、vectorでも10MB+固定サイズ制御情報にしかならんだろ

430デフォルトの名無しさん (ブーイモ)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 してから全てコピーする動作」
をしなくて済むようになる。そのために、必要メモリが生配列の二倍必要になっているらしい。

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倍。

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:Odxsa8jS0
>>435
CPUの内部キャッシュは、ハイエンド機種でも8MB程度しかないので、
むやみにメモリを使った場合の速度低下は著しい。

438デフォルトの名無しさん (ブーイモ)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倍やら確保するコンパイラがあるなんて怖いからさ
お前の妄想や思い込みじゃないなら当然答えられるよね?そんな長文書くほど自信満々なら知らないわけないよね?
教えてよ

440デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:08:29.19ID:Odxsa8jS0
>>439
仮に要素数と内部テーブルのサイズが原則同じなのであれば、>>431
で書いたように末尾追加がかなり遅くなる。その場合、std::vector
とstd::list では末尾追加の速度が劇的に違うことになる。

441デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:10:06.32ID:oDCSMM9SM
末尾追加したいのかCのように固定長で使いたいのかはっきりせぇや
どう転んでも文句言いやがってw

442デフォルトの名無しさん (スフッ)2019/07/03(水) 12:10:28.85ID:N/cOPmK/d
生配列と比較するならサイズ既知なのだから、サイズ指定して初期化、もしくはreserveするのは当然だろ

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

445デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:13:13.85ID:uVFkIemlM
「トレードオフを理解はするが、許せない」
こういうことか?

446デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:13:21.22ID:mX2Zy9Do0
>>440
あっはい追加時の話はどうでもいいです
追加量が読めてるならreserveなり最初に大きめに構築するなりするだけだし、読めてないならそれ必要なコストですよね?
私が聞きたいのはreserveや要素追加も伴わずに勝手に常に2倍で確保するというコンパイラorライブラリの具体的な情報です
質問に答えてください

447デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:14:08.32ID:oDCSMM9SM
>>443
固定長でとったら伸ばせないと文句いい
伸ばせるようにしてたらメモリ無駄と言い
文句言いたいだけやろwww

448デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:14:30.07ID:Odxsa8jS0
>>441
そういうことじゃなくて、新しく追加された機能を何も考えずにそのまま使って
C#との速度比較に用いてC++がC#に負けたと主張するQiitaの記事が「C# 速度」と
いうGoogle検索で上位に来るから困るんだよ。

449デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:15:34.63ID:Odxsa8jS0
ここはアホが多すぎ。

450デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:16:03.22ID:oDCSMM9SM
>>448
なんでそういう低次元な前提で機能自体を否定しにかかってんだよwwww
そもそも無駄だから生ポ使えと主張してたくせに曲げてくんなよwww

451デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:16:29.07ID:oDCSMM9SM
>>449
敗北宣言なら素直になれよwww

452デフォルトの名無しさん (スフッ)2019/07/03(水) 12:17:18.98ID:N/cOPmK/d
この展開だと、知識もスキルも足りていない奴が、誤解でvector使えないといっているだけにしか見えないな

453デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:18:06.65ID:mX2Zy9Do0
>>448
C#??Qiita??C++98からあるvectorが「新しい機能」?????
キチガイのフリしてるんじゃないなら逃げずに>>439>>446に答えろ。知らんなら知らんと正直に言え
答えないならフリじゃないとみなす

454デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:18:33.35ID:Odxsa8jS0
日本のITが駄目な理由がここに全て現れている。
その上、自分達がレベルが高いと思っているのがまた痛い。
日本はもう二度と浮上しないな。

455デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:20:42.38ID:mX2Zy9Do0
>>454
OK、知らないってことね。もしくはキチガイごっこ続けるわけね
>>431みたいなことドヤ顔でほざいて、根拠求められれば逃げ回って結局示せなくて
お前とコードレビューしてる同僚はさぞ仕事が辛いだろうな
同情するわ

456デフォルトの名無しさん (スフッ)2019/07/03(水) 12:21:17.25ID:N/cOPmK/d
自ら体現してくれているんかな

457デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:22:21.83ID:oDCSMM9SM
>>454
逃げる前にお願い
効率悪いとかそういう話ではなく
一番最初に主張していた
スマポとコンテナの方が生ポより危険
をちゃんと言ってからにしてよ。
危険性の話から効率の話になってc#とか言い出して
ひたすらトーンダウンなんだけどwww

458デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:24:17.58ID:mX2Zy9Do0
やめたれよ
vector2倍コンパイラの名前をずばり答える能力すらない人間にその抽象的な質問は難しすぎる

459デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:26:05.69ID:+Us18YV60
駄目なところは用途によって変えるべきなのに包括的に物事を判断することしかしないから
vectorが確保するcapacity程度でも気にすべき環境なら当然気にするし、そうじゃないなら気にしなきゃいい
気にしなくて良いケースでもとにかく重箱の隅をつついて難癖つけるような輩が居る
サービス利用者からみて大差無けりゃどうでもいいのに変なところにこだわり持つからサービスが生まれない

460デフォルトの名無しさん (ササクッテロル)2019/07/03(水) 12:44:03.73ID:gUarAEEJp
なんや今日はいろんなスレでキチガイ多いなと思ってID見たら
VS2019スレで妄言垂れてたのと同じキチガイじゃねえかw

461デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:45:35.43ID:mX2Zy9Do0
このボケ老人よそでも暴れてたのか
くわばらくわばら

462デフォルトの名無しさん (ブーイモ)2019/07/03(水) 12:51:50.17ID:oDCSMM9SM
そもそもmallocでも管理領域あるしな。
さもなくばfreeするときサイズわからんようなるからwww

463デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 12:56:09.64ID:XRQdtmsk0
2018年度の流行語大賞をとった彼じゃないの

C言語なら俺に聞け 148
http://2chb.net/r/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:4T2xKCYX0
vectorに対する難癖が叩かれる割に
>>464みたいな井の中の蛙が叩かれないのは理解できんけどな
まぁこんなこと言ったらまたファビョる奴が出てくるんだろうけど

466デフォルトの名無しさん (ワッチョイ)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> にしようとも思わないけどな

468デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 15:40:50.78ID:mX2Zy9Do0
なるべくスマポとarrayに変えていくべきだというのも、置き換えきれない所があるのも両方とも正しい
どっちかの極端に走るとさっきの老害みたいになる

469デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 16:44:21.55ID:Odxsa8jS0
>>468
あなたの脳内では、
「C言語は危険なので成るべくBASIC言語に置き換えていくべき」
なんだよね。

470デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 16:59:26.35ID:mX2Zy9Do0
>>469
キチガイさんこんばんは
さっさと>>446に答えるか死ぬかどっちか選んでね

471デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 17:05:49.68ID:Odxsa8jS0
無能の意見 ---> 「自転車は危険なので全員三輪車に乗るべき」

472デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 17:10:10.75ID:mX2Zy9Do0
>>471
有能なアナタなはもちろん自分で披露した知見の裏付けくらい当然に示せますよね?
>>446に答えるか無能を認めるかさっさと選べよ

473デフォルトの名無しさん (ワッチョイ)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:mX2Zy9Do0
>>473
その長文書く暇で>>446答えられたでしょ
早く答えろよ

476デフォルトの名無しさん (ブーイモ)2019/07/03(水) 17:31:39.19ID:oDCSMM9SM
>>473
話が変わってるぞ
スマポとコンテナが生ポより危険だと言っだろ
それを示せと

477デフォルトの名無しさん (スプッッ)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:mX2Zy9Do0
>>478
それがどうやらvectorは生配列の2倍の容量を食うから効率悪いんだってさ(>>431)
GCCclangVCiccでは違うけど、そんなコンパイラが本当にあったら大変だからどんな環境だとそうなるのか気になるよね
というわけで>>446に今すぐ答えてねID:Odxsa8jS0さん
さっさとしろよグズ

480デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 17:54:58.55ID:Odxsa8jS0
この板のような匿名性の過疎スレはレベルの低い連中の意見が多数派になりやすい。
つまり少数精鋭の完全な逆。

481デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 17:55:47.12ID:mX2Zy9Do0
>>480
レベルの高い>>446への回答をよろしくお願いします
いつまでも逃げ回ってんじゃねえぞ卑怯者

482デフォルトの名無しさん (スプッッ)2019/07/03(水) 17:55:50.16ID:Kb9ohuF+d
お願いだからレベルの高さを見せてくれよ

483デフォルトの名無しさん (オイコラミネオ)2019/07/03(水) 17:57:20.12ID:giz72OluM
アホだから要素追加時のとごっちゃになってんだろう
要素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:mX2Zy9Do0
>>485
凡人なのでvector2倍コンパイラの正体がわからないと不安でたまりません
天才の閃きで>>446に答えてください
もしくは自分を天才だと思い込んでる狂人だと認めてください

490デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:03:42.55ID:mX2Zy9Do0
>>489
自分で行ったことへの責任すら取れないアンタが客観的に見てこのスレで一番の雑魚だよ
雑魚扱いが嫌なら>>446に答えろ
答えないなら言いっぱなしの無責任で卑怯なクソ雑魚として永遠に軽蔑する

491デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:04:02.74ID:mX2Zy9Do0
>>490>>488へのレスな

492デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:04:04.67ID:lDDJeJVH0
>>483
一般的には、capacity()サイズを倍々にしていく実装が多いんじゃないかな?

493デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:04:18.16ID:Odxsa8jS0
>>489
通常は2倍と聞いている。恐らく、上に上がっている例だと、何らかの
事情で2倍になっていない特殊な結果が出たのだと思われる。

494デフォルトの名無しさん (ワッチョイ)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:Odxsa8jS0
>>495
関係ない。数学とはそういうものだ。テストなんか無くても結果が分かる。
絶対に正しいということが分かるんだ。それが凡才と天才の違いだ。
ここには秀才レベルもいない。

497デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:11:41.02ID:uMmlAeoj0
適当に書いたことに予想外に食いつかれて、
答えられなくなったからネタに走ってごまかそうとしてるだけだろ

498蟻人間 ◆T6xkBnTXz7B0 (スフッ)2019/07/03(水) 18:13:16.43ID:qqPAz+Nsd
「便所の落書きに天才現る (2)」
(c) 蟻人間 2019年7月発行.
無断転載を禁ず.

499デフォルトの名無しさん (オイコラミネオ)2019/07/03(水) 18:13:49.02ID:giz72OluM
>>492
倍々なのか
変な人が勘違いしてたのはそのへんか

500デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:15:19.28ID:mX2Zy9Do0
>>496
うん、天才様はそれでいいんだろうけど、凡人の世界では書いたコードは必ずテストして報告書を納品するものなんですよ
天才様は我々凡人のやり方とは合わないでしょうから、どうぞお一人で自分のためだけのコーディングを楽しんでください
未テストのクソコードを凡人世界に持ち込まないでくださいお願いします

501デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:16:15.13ID:Odxsa8jS0
プログラミングでテストが必要なのは、たとえば、過去に書いた何万行ものコード
を全部は思い出せないので、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

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:Odxsa8jS0
>>500
数学とプログラミングのテストは異なるといってるんだ。
今回のは数学。プログラミングにテストが必要なのは>>501に書いたような
理由による。天才でも記憶力は有限なのでソースが大きくなると勘違いが
生じることが有ったり、ケアレスミスがあるのでテストは必須となる。
ところが、今回のような例ではテストも何もいらず、結論が見えてる。

507デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:22:29.45ID:mX2Zy9Do0
つまんね
自分を天才だと思いこむ狂人を演じる雑魚ってどんだけ殻被らないと自分を守れないの?
もうオモチャにする価値もないわ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とかになるときがあるという話ですね

510デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:29:57.28ID:Odxsa8jS0
>>509
最初に確保したまま、絶対に後から追加しないなら、固定長配列で十分だから、
2倍などになっていることの方が通常。ただし、2倍、2倍で増えていく場合でも、
平均のテーブルサイズは、要素数の1.5倍+(固定サイズの制御情報)となる。

511デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:30:24.41ID:mX2Zy9Do0
>>509
そうだね
キチガイが間違ってるのは末尾追加に備えて常に2*Nを確保するという主張

512デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:31:44.49ID:NC+hYvon0
>>510
指定の2倍とかになる開発環境あげてよ

513デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:33:16.53ID:mX2Zy9Do0
>>512
少なくともGCCとclangとVCとiccは違うよ

514デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:33:29.09ID:Odxsa8jS0
>>511
アホはだまっとれ。誰も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:Odxsa8jS0
>>516
数学というのはテストしなくても結果が分かるので、馬鹿馬鹿しいので探す
気になれない。天才の中での数学的確信というのはそれくらい強いものなんだ。

518デフォルトの名無しさん (ブーイモ)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:Odxsa8jS0
>>518
お前みたいに何が危険なのか分からない人が出てくるのが、危険な理由の1つでも
あるんだよ。

521デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:42:33.07ID:NC+hYvon0
>>517
テストしなくても分かるなら探すまでもなく名前挙げれるでしょ

522デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:46:22.64ID:Odxsa8jS0
>>521
違う。絶対そういう仕組みで無ければ成らないことが分かるだけだ。
どの実装とかそんなものは関係ない。Mr.スポックでもグレイでも
ほぼそれしかできない。

523蟻人間 ◆T6xkBnTXz7B0 (スフッ)2019/07/03(水) 18:46:23.12ID:qqPAz+Nsd
天才さーん!

524デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:48:44.79ID:Odxsa8jS0
>>522
まあ、この件に関しては、宇宙人レベルまで言うのは言い過ぎだったかもしれない。
ただ、現在人類がしている知識ではその程度のやり方しかない。

525デフォルトの名無しさん (ワッチョイ)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倍が埋まったら結局再配置はしないといけないわけだからね。キチガイ式の実装は再確保のタイミングをずらして、メモリを無駄にしつつ当初の目的も達成できないという
大変悪い見本です。真似しないようにしましょう

以上、長文失礼しました

526デフォルトの名無しさん (ブーイモ)2019/07/03(水) 18:55:40.74ID:oDCSMM9SM
>>520
おれは>>412を書いたものだが。
あんたは何も具体例書いてない。

527デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 18:56:24.16ID:Odxsa8jS0
>>525
アホ。お前が考えているようなことは最初から分かった上で言ってる。
変な言葉をひけらかしても関係ない。天才には知識が無くてもイマジネーション
だけで全てが分かる。

528デフォルトの名無しさん (ブーイモ)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:Odxsa8jS0
>>528
いくらでも有るから言わない。馬鹿馬鹿しいから。
少しは自分の頭で考えてみろ。

532デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:03:10.68ID:Odxsa8jS0
>>530
1つの要素 TYPE のサイズが十分大きいばあいは間違いじゃない。

533デフォルトの名無しさん (ブーイモ)2019/07/03(水) 19:06:30.93ID:oDCSMM9SM
>>531
だから書いてるじゃん
お前はいくらでもある例を一つも出してない。
そのくせメモリがーキャッシュがーとか最初の危険という趣旨のことばかり並べ立てる

馬鹿だろ

534デフォルトの名無しさん (ブーイモ)2019/07/03(水) 19:08:18.94ID:oDCSMM9SM
listはシーケンシャルアクセスでも異常に遅いけどな。
中間挿入の頻度がシーケンシャルアクセスよりも低い場合はdeque使ったほうが遥かにマシ。

535蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)2019/07/03(水) 19:10:00.22ID:JWWmhuhv0
>>532
やっぱりお前さんは阿呆か?
std::listは1要素に対して要素のデータとポインタ2個消費する。std::vectorはヘッダーとcapacity個の要素のデータだけだ。要素が多ければlistの方が不利。

536デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:10:08.72ID:Odxsa8jS0
>>533
それはコンテナの具体的実装によって危険な場合の書き方が変わってくるから、
数学的な才能だけがあってもSTLの個別具体的な勉強はしてない俺には語れないから
言わないだけだ。

537デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:10:43.15ID:Odxsa8jS0
>>535
小学生の算数からやり直して来い。

538デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:10:47.63ID:mX2Zy9Do0
std::listはメモリ局所性が低いので現代的なコンピュータだと遅いってのはよく言われてる
サイズが小さいと中間挿入でvectorに負けることさえある

539デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:12:59.20ID:Odxsa8jS0
>>538
局所性については考えて無かったよ。
でも>>535の主張は間違ってる。

540デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:13:32.58ID:mX2Zy9Do0
天才様のクソ実装だとvectorは要素数の2倍のcapacityを抱えてなければならないからlistよりでかくなるんだよ
天才様のクソ実装がいかにダメ実装なのかを示す実例なわけだ

541デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:16:07.25ID:uMmlAeoj0
今のコンピュータなんて100MB単位でメモリ食ったって構わんのだしメモリ効率なんてそこまで気にすることか?
気にしなきゃならん組み込みの開発では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世紀に決着がついてるんです。

547蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)2019/07/03(水) 19:29:21.30ID:JWWmhuhv0
天才は明快な直感に導かれ、才能を実証する。秀才は歴史や書物に学び、凡人は愚鈍な考えや経験に頼る。

548デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 19:59:26.10ID:924EnmCA0
>>536
早く教えて何が危険か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).
となる。

550蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)2019/07/03(水) 20:11:03.35ID:JWWmhuhv0
>>549 訂正。(誤)サイズ → (正)メモリー消費量

551蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ)2019/07/03(水) 20:17:55.39ID:JWWmhuhv0
>>549 この不等式は、トートロジーではない。
よって
>>419
>メモリ使用量という観点では、vectorよりもlistの方が優れる
というのは、常に正しいとは限らない。その点は、>>532 で軌道修正された。

>>532
>1つの要素 TYPE のサイズが十分大きいばあいは間違いじゃない

552蟻人間 ◆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/uFNI10
>>552
その間違いは致命的だろ
おかげで台無しになったんだぞ

555蟻人間 ◆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の方がメモリー消費量が少ない。

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の方が消費量が小さいということになる。

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/aBv8fE0
>>372
リスト・配列の特性、真ん中あたりの要素の削除の計算量などは、情報処理資格の内容にある

C++ は最高難易度の複雑さだから、さすがに資格を持っていない香具師は、門前払い!

562デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 22:07:27.64ID:Mf/6Ojwj0
>>559
まあよくあることだわ。
扱いには困るが。

563デフォルトの名無しさん (ワッチョイ)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)

565デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 22:29:53.07ID:JvcEtzLy0
>>564
お前は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秒と、再編成があるたび、ドンドン増えていく

569デフォルトの名無しさん (ブーイモ)2019/07/03(水) 22:47:35.04ID:+l3ADsTnM
>>563
std::arrayはサイズで型変わるから
そこが面倒なこともある

570デフォルトの名無しさん (ワッチョイ)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になっていただけ。

571デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 23:08:20.45ID:MMRf6v9s0
bが1ですむ可能性があるとかw

572デフォルトの名無しさん (ブーイモ)2019/07/03(水) 23:18:47.11ID:+l3ADsTnM
vectorとかlistとか初心者向けの話題いつまでやんの?
まさにパーキンソンの凡俗法則だな
天才様が主導してるわけだがw

573デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 23:22:56.33ID:MMRf6v9s0
使用メモリって観点だと、realloc時は要素数の1+a倍だから、最悪値もそれになる
まあ、要素数の見積もりが全くできない状況でも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)が速いだろうけど

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 が大きい時には影響はなくなっていくから。

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 のサイズが大きい」
ことが言える。

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:Odxsa8jS0
>>576
誤:これらの関数は、どちらも n に対する1次関数で、
正:これらの関数は、どちらも x に対する1次関数で、

581デフォルトの名無しさん (ワッチョイ)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使わない方がましな場合が殆んど

584デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 23:54:04.68ID:Odxsa8jS0
>>582
数学や科学の世界は、簡潔に説明なんか出来ないんだよ。
だから、簡潔を望む人は科学や数学には向いてない。

585デフォルトの名無しさん (ワッチョイ)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じゃなく生配列使うべき有意な優位性を説明しろと

588デフォルトの名無しさん (ワッチョイ)2019/07/03(水) 23:59:40.90ID:Odxsa8jS0
>>583
要素数と要素のサイズが大きいとき reserve()するのに時間がかかる。
昔から知られているが、リンクリストだとその手の作業が必要ないので、
速度とメモリの両方の効率がバランスが良い。

589デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:04:14.98ID:+bvr5vAX0
そもそも、最大限使えるメモリ容量から計算してreserveしておけば、listよりより多くの要素数格納できるんだな。

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 なので、パイプライン類の乱れが生じ
だいぶ遅くなることが有る。

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クロック程度の時間がかかってしまうことだ。

594デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:08:37.45ID:+bvr5vAX0
容量既知なら配列との差は管理領域とヒープが別になるオーバヘッドだけ

ヒープが別になるってのを責めて来るならまあ分かるが、容量既知なのに全くその情報使わない最悪値で比較とかセンス無さすぎ

595デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:10:31.88ID:OupeWpkE0
>>592
このスレの99%の人が分かってない。

596デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:11:56.58ID:+bvr5vAX0
size 0でのreserveは別に時間かからんだろ
それこそlistで要素追加でnewされるの1回分と大差ない

597デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:15:07.03ID:pXTZ8sNQ0
MATLABで演算するときforループを使って一つずつ計算するよりもsumやmeanなどの関数を行列に対して行う方が圧倒的に速いのですが
C++にもMATLABのように一括で高速に行う方法がありますか?

598デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:17:08.19ID:OupeWpkE0
>>593
なお、要素が、サイズが小さくて、かつコンストラクタを持たないような
単純なデータだと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:OupeWpkE0
>>596
>>598」にも書いたが、要素のサイズが大きい場合や、要素のコンストラクタの
重い場合には、reserve()はとても遅くなる。要素のコンストラクタの中で
メンバの確保やコピーのためにnewが1つでも行われる場合には、listよりもほぼ必ず
遅くなる。コンストラクタ内のnewがN個だとlistのN倍遅くなる。

602デフォルトの名無しさん (ブーイモ)2019/07/04(木) 00:21:13.94ID:Evy1L2/hM
ハイパフォーマンス必要なとこでlistなんか使わないからど素人さん

603デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:25:40.63ID:OupeWpkE0
>>601
それに、reserve()のためには、一般的には、要素は、コピー・コンストラクタを
持つ必要がある。一方、listの場合には、コピ・コンを省略できる。
C++を使っていると分かるが、デフォルト・コンストラクタを作ることはほぼ必須
だが、コピ・コンはめんどくさいので書きたくないことが多い。その場合に、
listの方が楽。

604デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:26:45.21ID:OupeWpkE0
>>602
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が呼ばれる。

607デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:31:14.53ID:z3/vg39Q0
>>604
お前の頭中、vectorかlistしかないのなw
もとの生ポ押しはどうしたの?w

608デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:36:08.58ID:+bvr5vAX0
vector相当にcapaciry()+xなreserve相当をするCArrayってのがあってだな
MS自身がどうしてもこれじゃなきゃ駄目な場合以外使うなと言うくらいの糞

609デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:36:47.68ID:OupeWpkE0
>>606
要素数既知なら、最速が TYPE aaa[N] で次が new TYPE[N]。
逢えて vector を使う意味がない。

empty状態の reserve() とかしてまで vector にこだわる意味が分からない。

610デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:38:37.52ID:OupeWpkE0
>>607
むしろ逆で、生配列使えばいい場面で、何故か vector に固執する人がいるんだよ。

611デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:39:15.33ID:aorw8zR90
どこにそんな人居たの?
レス番あげてよ

612デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:48:01.35ID:+bvr5vAX0
サイズ完全固定ならstd::array
最大サイズが既知なら少し無駄だが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];

615デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 00:56:53.06ID:knl8K+q10
まだやってるのかw

616デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 01:00:33.98ID:+bvr5vAX0
>>614
それ最悪
例外安全性放棄ほぼ確定

617デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 01:02:18.21ID:jo/K3cJX0
自称天才すげーな
自分が何かいてるのか分かってないんだろうな
規格も読んでなさそう

618デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 01:05:54.39ID:+bvr5vAX0
>>614
てか今時こんなコード書く奴いたら、できうる限り関り合いにならないようにするね。

こんなのが先輩面して新人に教育してたらもう最悪

619デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 01:21:19.34ID:OupeWpkE0
>>618
あなたは、C++とC#の速度が変わらないと思ってる系統の人だよね。

620デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 01:21:50.22ID:vGw4d28b0
>>597
ベクトル演算とか、並列処理とか

OpenCL, CUDA とか

621デフォルトの名無しさん (ワッチョイ)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:OupeWpkE0
>>622
std::array を使うと例外安全が確保されて、
TYPE *pArr = new TYPE[N];
だと確保されないと思うのはなぜ?

絶対に確保できないと言い切れる根拠でもあるの?

624デフォルトの名無しさん (ワッチョイ)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:OupeWpkE0
>>624
「ヒープを回収する」
とはどういう意味か分からない。

メモリ確保の失敗は大体回復不可能なはずなんだけど、どうするつもりなの。

627デフォルトの名無しさん (ワッチョイ)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

631デフォルトの名無しさん (オイコラミネオ)2019/07/04(木) 07:22:01.27ID:Ic4+qAXvM
>>629
そんなテクニックはここに書かない

632デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 08:41:24.64ID:boKHx0+g0
>>626
newの例外の話なんてしてしてません。
本当にレベル低いやっちゃな

633デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 08:52:16.87ID:yrHYMywV0
TYPE *pArr = new TYPE[N];
と同じスコープ内(のdelete pArrの前)で例外が発生した場合に
>>624
>誰がヒープ回収するねん...
という話ですな

634デフォルトの名無しさん (スッップ)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代おっさん低収入だろうけど、自分を天才と呼び、
数学ががどうのこうの言うわり、単なる足し算掛け算をどや顔でさらすし、
本当読んでて可哀想になってくる

636デフォルトの名無しさん (ブーイモ)2019/07/04(木) 10:15:53.90ID:mwmcFkvyM
要素数固定ってコンパイル時に固定の意味と実行時にある値に決まるって意味があると思うけど
前者では T Arr[N]
後者では std::unique_ptr<T[ ],>
を使ってしまう。
それ自体をreturnしないときは std::array を使うのがかったるく感じてしまう

637デフォルトの名無しさん (ブーイモ)2019/07/04(木) 10:35:11.99ID:VBCrH1IpM
>>636
arrayはもうひと頑張りしないとだめだな。
宣言時に値を初期化するとき、値の数をテンプレートパラメータに手打ちとか
要素数省略できるCスタイル配列に負けてる

638デフォルトの名無しさん (アウアウウー)2019/07/04(木) 11:36:25.81ID:Bk1vOaTSa
>>637
c++17から推論補助が出たので要素数指定不要です。
c++14以前はmake_arrayとか作ればいける

639デフォルトの名無しさん (ブーイモ)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:tdjije7mM
>>638
おお、ほんまや。
かゆいところに手が届いて行くのぅ

642デフォルトの名無しさん (スフッ)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:mwmcFkvyM
>>642
その場合にはそうだね
でも関数に渡すとき大抵 begin end だからなあ

645デフォルトの名無しさん (ササクッテロ)2019/07/04(木) 12:49:15.77ID:bmYDtW5Wp
>>642の言ってるのは配列の参照にキャストされないからだと思うんだけど(自分もそれが不便だと思う)
そのキャストを実装しない理由あるんかね?
中身ただの配列なんやろ?

646デフォルトの名無しさん (ブーイモ)2019/07/04(木) 12:50:55.35ID:zoOerLpiM
>>643
変なところで改行するなよ

647デフォルトの名無しさん (ブーイモ)2019/07/04(木) 15:52:29.03ID:mwmcFkvyM
>>646
なるほどすまん
100人中98人位が誤解する改行だた

648デフォルトの名無しさん (アウアウウー)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が使えるようになれば楽になるな。
それでも完全転送は通らないけど

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

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の不備のひとつではないかな、ってだけ

657デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 20:53:10.33ID:SRe/Pasd0
暗黙変換定義すれば出来るんだろうけど、出来ない方が自然な気がする

658デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 20:54:01.06ID:GHUD7qNB0
>>636
以下コードがちゃんと動くの今知った。サンクス。
std::unique_ptr<Test[]> test(new Test[5]);

659デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 21:48:13.92ID:WSU/R6xT0
確かに内部配列の参照を取得する手段はあってもいい気がする
先頭のポインタはdata()で取れるけど、配列型そのものへと読み替える手段って標準の範囲にはないんだな
ちょっと意外

660デフォルトの名無しさん (ワントンキン)2019/07/04(木) 22:18:07.85ID:MlPmA9V9M
えっじゃあdataはどこをさしてんのよ

661デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 22:36:36.22ID:j4C7DC1D0
>>659の言う「配列型」が要素数まで含んだ型のことなら無くて当たり前。
要素数を含まないのなら先頭要素へのポインタと同等。
なにを意外に思ったのかわからん。

662デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 22:41:46.89ID:C9xm0dvc0
>>660
いや、わかりにくかったかもしれんけど
配列の参照にキャスト出来れば配列または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++のままバイナリ肥大対策した方が楽だし効果も変わらない

669デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 23:34:32.32ID:kZ6AZY+J0
なんだ真性のバカか。

670デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 23:35:07.30ID:gNJuQcZk0
std::vector::resize(size_t n)ならn要素きっかりになるお
および(>>439もご存知のはずの)std::vector::reserve()で10とか20に指定することもできるお
(その通りのメモリ確保が行われるかどうかは最適化に依存し得るが

>>439
そのサンプルコードでは不適切で、最適化が利いている可能性があるお
だってコンパイラが見渡せる範囲で要素のpush_back()をしていないし…
(していたとしても定数回数のループならやっぱ最少サイズになり得る

671デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 23:36:33.90ID:gNJuQcZk0
訂正;
誤:だってコンパイラが見渡せる範囲で要素の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++の方が上
オーバーロード使えるだけでもありがたい

674デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 23:44:44.77ID:gNJuQcZk0
しかしポインタは悪という考えには賛成する
全てのオブジェクトはimmutableであるべきだが現実にはそうではない
(オブジェクト指向プログラミングはmutableなオブジェクトを作る仕事だと一般に理解されている
するとポインタや参照の使用はオブジェクトの参照透明性を失わせる究極の悪となる

675デフォルトの名無しさん (ワッチョイ)2019/07/04(木) 23:45:53.18ID:+bvr5vAX0
バイナリ肥大は余り気にしなくていい
ROM容量はRAMとは桁違いに余裕あるし
速度稼ぐためにテーブル作って持っておくとかでもc++だとやり易いw

676デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 00:42:05.40ID:iD2vPqXr0
ポインタは悪いは草
プログラムの性質そのものだろw
良いも悪いもない

677デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 00:50:35.24ID:sXJnPGx/0
>>675
おいおい
今時組み込みでrom実行する環境ほとんどないだろ
だいたい普通肥大化したかどうか比較できん
2つ作ることなんてまずないし
もし容量が足りなくなったら実行コードより他のでかいデータがやり玉になるので目立たない

678デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 01:08:22.53ID:V2Gzd6Sr0
参照子を長い時間や広い空間で保持する行為が危険なのはどんな言語でも同じ。

679デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 01:20:04.09ID:RI4o57M10
>>678
全部値コピー(deep copy)ならそうはなんね

>>67
ポップアップトースター…

680デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 01:20:13.88ID:pqoXwmD60
ファームウェアのバージョンアップとかなら容量との戦い出てくるんでないの

681デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 01:20:46.48ID:Gz4SaY1k0
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:RI4o57M10
>音声データ
なおROMに置ける固定データはコードに含めるものとする
>>675も事実上そう言っているのだから後出しではナイ

>>686
それは「出力は動作だけ」に含まれる
転倒したときプログラムがやることは、姿勢判定用センサと温度とタイマーの入力を受けて状態変数を何個か弄りつつヒーターを切るだけなんじゃ…
データの生成というプロセスは無い

688デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 02:11:34.20ID:84H5xbwY0
転倒時の停止なんかに電子制御はいらん
床面に接触するとオンになり、離れたら回路が切断される、というような単純なスイッチだけで十分

689デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 02:12:54.60ID:RI4o57M10
もっとも、状態変数みたいなmutableで邪悪なものを使わずに
全てimmutablueなオブジェクトでスマートに済ませるなら、オブジェクトの生成がデータの生成に該当し、多少RAM容量を消費するが
な、

690デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 02:20:38.54ID:iD2vPqXr0
>>688
なるほど

691デフォルトの名無しさん (ブーイモ)2019/07/05(金) 07:41:44.43ID:RDJzDNDNM
Rom実行でC++のテンプレートばりばり使ってバイナリ肥大しても問題ない環境ってどんなの?
プロセッサ、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:RDJzDNDNM
>>692
そのレベルの組み込みならわかる
C++全面的に使ったりしないよね

謎なのが
>>673
その環境でどうやってC++使い倒してんの?
例外ありなんだよね?

695デフォルトの名無しさん (ワンミングク)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++機能は色々使い手が多い

697デフォルトの名無しさん (ドコグロ)2019/07/05(金) 13:02:54.74ID:yhA0U74XM
いわゆるBetter Cだろ
俺もそう言うのよくやる

698デフォルトの名無しさん (ブーイモ)2019/07/05(金) 13:20:11.14ID:RDJzDNDNM
>>696
バイナリ肥大気にしないって言った人?
言うこと変わってんじゃんw

699デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 13:31:43.83ID:h+45fasi0

元々バイナリ肥大全く気にしないとかではないだろ
template使うとバイナリが必ず肥大するってのが大嘘なのよ
うまく使えばCよりユーザー側の負担を減らしたまま、バイナリサイズ減る方向に誘導出来る
ifdefのスイッチを型で分岐して自動指定するようなことが出来るからね

700デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 13:36:49.89ID:h+45fasi0
まあ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:cg54bwGhM
>>698
どう変わってるの?
ちょっと説明してみ

704デフォルトの名無しさん (ワッチョイ)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:RI4o57M10
>>704は、>>675の2行目を認識すべき

例:RX600シリーヅとか、ROMが2GBもあるのにRAMが128KBしかないのがあるし、

707デフォルトの名無しさん (ワッチョイ)2019/07/05(金) 23:35:12.09ID:RI4o57M10
よく見たら2 MBやったorz
まあRAMは多いほうが良い
コードもRAMに置いた方が速いしimmutableなプログラミングもしやすいし、、

708デフォルトの名無しさん (ワッチョイ)2019/07/06(土) 00:24:21.88ID:Cx3pk18b0
ramよりromの方がだいたい安価
電源が不安定でも一定の動作の保証がほしい
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年切ってるんだ

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

・ スフィ姉は未調査

いじょ

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との間の変換は極めて重い処理となる

719デフォルトの名無しさん (アウアウウー)2019/07/07(日) 09:11:52.62ID:SNWX9Bjla
>>718
Foo->Bar
Bar->Foo
Foo->Foo
Bar->Bar
この四つの操作は共通?

720デフォルトの名無しさん (ワッチョイ)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者は「表記上は」共通操作に見えるコードだったが
今週からはその共通性も無くなり申した、

721デフォルトの名無しさん (アウウィフ)2019/07/07(日) 12:29:05.93ID:L+nDH+YyF

722デフォルトの名無しさん (アウアウウー)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にはまだ入らなそうだけど

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

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() ){}
って書いたらコンパイラに怒られた

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;
}

737デフォルトの名無しさん (ワッチョイ)2019/07/09(火) 21:54:10.28ID:5DOcmAvj0
おお、しかしそれ
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) {
}

739デフォルトの名無しさん (ワッチョイ)2019/07/09(火) 22:12:00.87ID:pkZ4t/JR0
short circuitが使えないのが痛い
結局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を上手く元の形に戻すコツみたいなものか
それを解説しているサイトとか有ったら教えてくだされ

743デフォルトの名無しさん (アウアウウー)2019/07/09(火) 22:52:20.35ID:qZOKZ1zLa
>>742
何が知りたい?

744デフォルトの名無しさん (ワッチョイ)2019/07/09(火) 23:08:48.39ID:kBXtWzHg0
>>739
そもそも短絡評価使えたら
if(auto a = f() || auto b = g()){
って書くとf()がtrueならbがない状態でブロックに入ることになるし…

745デフォルトの名無しさん (ワッチョイ)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 がない状態で来る
// まあ変数は作っておいて不定にしちゃうと言うのもありかもしれないけど…
}

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ループを何と言うか普通に戻すには
どういう風に考えていけば良いのだろうか?
その考え方や手順が解ればいいなと
そんな疑問を持って書かせて貰った次第です
かなり漠然とした疑問
という程度です

756デフォルトの名無しさん (アウアウウー)2019/07/10(水) 17:10:50.06ID:dvhbJ9iGa

757デフォルトの名無しさん (ワッチョイ)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についての処理
}

760デフォルトの名無しさん (ワッチョイ)2019/07/10(水) 20:25:53.09ID:hIMxNPLy0
>>753
文字列やら数値やら与えて文字列にする関数を作った。
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)のみ定義されてるんだけど

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

766デフォルトの名無しさん (ワッチョイ)2019/07/10(水) 23:26:51.16ID:dtMqcxnO0
>>754
ありがとう
やってみる
>>760 
ありがとう
難しそうだけどやってみます

767デフォルトの名無しさん (ワッチョイ)2019/07/10(水) 23:33:46.92ID:ddYZk9I40
std::string to_string(const std::string_view& In) {
return In.data();
}

こういう関数ほしいほしいほしい。ばいきんまん。とってきて

768デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 00:08:50.79ID:1bNokJon0
テンプレートのエラーってめちゃくちゃでわけわからんです
あれで嫌いになるC++初心者多いのでは?
AIみたいなのが優しく教えてくれればいいのに

769デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 00:09:04.21ID:+eNm2iJo0
https://ideone.com/bFsq3d
適当にいじってみたところ、動かなくもない感じ。@C++17

770デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 00:10:14.28ID:+eNm2iJo0
>>768
コンセプトが入ったら、いろいろ解決するとは言われている。
VCの場合は、一番上のヤツを察して修正していくといつか終わる。
途中のエラーを察するより楽。

771デフォルトの名無しさん (ワッチョイ)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++は型がある分ちょっとマシ

776デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 08:50:22.94ID:PMWvbDa10
ありがとうございました
早さが必要なのに、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){
//デフォルトのコピーコンストラクタを使って静的にメンバをコピーしたい
//その後にポインタの参照先を修正したい
}

779デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 19:26:34.40ID:ryNigZ+S0
データメンバー分離すればいいんじゃない

class C
{
 struct Data { /*...*/ } data;

 C(const C& c)
 : data(c.data) // C::Dataのデフォルトコピコン
 {
  // やりたい処理
 }
};

780デフォルトの名無しさん (ワッチョイ)2019/07/11(木) 21:59:39.17ID:t9WNsdfx0
>>778
自分で定義した時点でコピーコンストラクタはそれしか存在しないから無理
>>779みたいな方法なり全部自分でコピー書くなりするしかない

781デフォルトの名無しさん (ワッチョイ)2019/07/12(金) 19:18:07.56ID:l82xLe+v0
ムーブコンストラクタとコピーコンストラクタ両方作って保守するのも
完全転送とsfinae用意するのもどちらも面倒臭いんですがc++erの皆様はどのように対象しているのでしょうか

782デフォルトの名無しさん (ワッチョイ)2019/07/12(金) 20:04:43.42ID:rLvHx2BM0
基本的に全部unique_ptrとdefaultのムーブコピーに任せてる
大抵はそれで困らないし困ったらその時考える

783デフォルトの名無しさん (アウアウウー)2019/07/12(金) 21:54:46.19ID:hdEhfFLPa
>>779-780
ありがとうございます
とりあえずデータメンバを構造体にまとめることでなんとかなりそうです

784デフォルトの名無しさん (ワッチョイ)2019/07/12(金) 22:51:40.54ID:Bn8x2zNm0
暗黙のコンストラクタに任せるとか一番の事故パターンじゃん

785デフォルトの名無しさん (ワッチョイ)2019/07/12(金) 23:06:47.15ID:I2Ktnv+c0

786デフォルトの名無しさん (ワッチョイ)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

790デフォルトの名無しさん (ワッチョイ)2019/07/13(土) 07:14:17.28ID:4+1a5dQe0
>>786
バカが書いたテンプレートよりもlinuxにあるマクロを使った方がマシ。
てか可読性落としてまで型安全とかにこだわる必要なし。

791デフォルトの名無しさん (ワッチョイ)2019/07/13(土) 09:10:55.61ID:2OenGlWi0
>>786
互換性のない複数プラットフォームに対応しようとするとき
ヘッダーファイルを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:K15oVfEY0
>>791
#ifdef とかの話?
それをマクロと言うかどうかは微妙な気がするけど

795デフォルトの名無しさん (ワッチョイ)2019/07/13(土) 12:24:56.92ID:N59vWAWf0
#include しゃあない
#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 使え

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定数はマクロと同様にコンパイル時に置換されるから等価で、名前空間が使える分上位互換でしょ

802デフォルトの名無しさん (スップ)2019/07/13(土) 22:43:26.97ID:BM5YZSOgd
constも定数としてだけ利用するなら多くの場合rom領域に置かれるはずなんだけど
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定数は必要と言いたいわけではないよ、念のため

806デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 00:38:21.57ID:MfUTAS3e0
>>801
#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をテンプレート引数に渡せば近代的な書き方もできるんだと思うが

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秒で終わるようになったわ、

809デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 02:48:10.57ID:Hni5ei2L0
プチ訂正
誤: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%クソ。

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:6widThLh0
>>813
何を思い込んでいるかは知らないけれど
俺はテンプレコードなんて殆ど書かないので問題ないですね

818デフォルトの名無しさん (スップ)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なオブジェクトしか扱わないべき

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言語でいいやんと

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:bTXRhkvlM
>>82
最近関数型言語かぶれ増えたよな
一時期のOO厨と同じ
というか実行効率重視しないのにC++使ってるまぬけでしかない

828デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 13:03:52.75ID:t8pNnhD80
Template なかったら事前にタイプ規定する言語使うの最早ただの苦行やん...

829デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 13:07:41.55ID:Hni5ei2L0
増えたといっても全部漏れの自演だがな

やっぱ最適化とかmutableなオブジェクトの使用みたいな危険行為は
プロファイルをとった上で
ポイントを絞ってやるべき伝家の砲塔だと思うんですよねー

830デフォルトの名無しさん (ブーイモ)2019/07/14(日) 14:22:08.64ID:bTXRhkvlM
>>829
それテストドリブン原理主義と同じだよ
現実のC++のプロジェクトでワークしない

実際のとこお前だってそのポリシーでやりきったことないだろ
あるいはそもそも性能要件なんかないただの趣味プログラミングだろ

831◆QZaw55cn4c (ワッチョイ)2019/07/14(日) 16:39:34.94ID:QM43l4Yx0
>>829
>伝家の砲塔
×
◎伝家の宝刀

832デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 16:58:06.88ID:Hni5ei2L0
ていうか真に速度が求められる箇所ではオブジェクトの生成とかせずに
テーブルで済ますように極力するから極限までの高速化を求められるシチュエーションでは
immutable縛りはあんまパフォーマンスの制約要因にならないキモス

833デフォルトの名無しさん (ワッチョイ)2019/07/14(日) 17:21:37.08ID:Hni5ei2L0
で実行速度が求められるあまり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の方がキャッシュの有効活用にはなるかもしれんが

839デフォルトの名無しさん (ワッチョイ)2019/07/15(月) 01:15:15.20ID:md6OUoiD0
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:ex33LrHm0
>>853
registerは名詞でもあるだろ
ただ意味が限定される(帳簿とかこの業界だとCPUのレジスタとかになる)ので登録という意味ならregistrationの方がいい

859デフォルトの名無しさん (ブーイモ)2019/07/15(月) 14:00:46.85ID:P+OOoIdTM
warningとかもなるべく正しい(近い)発音を心がけてるんだけど
nullだけはヌルだわ
2chリスペクトだと思ってるw

860◆QZaw55cn4c (ワッチョイ)2019/07/15(月) 14:06:27.37ID:Nn+acajv0
>>849
resist と書かれちゃうよりはましだとおもいますぅ

861◆QZaw55cn4c (ワッチョイ)2019/07/15(月) 14:07:48.53ID:Nn+acajv0
>>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使えなかったり、微妙

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使ってね」
俺「はい」

876デフォルトの名無しさん (ワッチョイ)2019/07/15(月) 18:39:11.23ID:1J86p0R40
>>875
ちゃんと相手にわかるメリットを示せよ。実装にかかる時間とか安全性とか信頼性とか、あるだろ。
無いなら既存に合わせるのが正解だろうよ。

877デフォルトの名無しさん (ワッチョイ)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しか理解できないボンクラと言うことも考えられる

881デフォルトの名無しさん (ワッチョイ)2019/07/15(月) 18:55:44.39ID:Voexy70f0
>>878
関係者がみな納得できる共通の「正しい」があるならそれでいいと思うよ

882デフォルトの名無しさん (ワッチョイ)2019/07/15(月) 19:05:04.52ID:vaP/RuJr0
>>879
まさにそうなんだよねぇ。
「\0飛んだだけで暴走するcharなんか捨ててしまえ」って熱弁して血反吐吐いて納得させても将来得するの俺じゃねぇし・・・って言う

883デフォルトの名無しさん (ワッチョイ)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してくれるかもな

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+BFp0
>>889
C++使っちゃいけないとか、C++使ってるやつは自意識過剰のクズばっかだな
Linusも言ってたし

892デフォルトの名無しさん (ワッチョイ)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:osN3S5RL0
>>892
>>887

895デフォルトの名無しさん (ラクッペ)2019/07/16(火) 16:19:36.53ID:Df6fhjhOM
C++で個人開発したいんだけど、やりたいものが思いつかない
個人的には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でやってるのだけども

897デフォルトの名無しさん (ワッチョイ)2019/07/16(火) 20:50:39.00ID:nqFwpBh+0
>>891
通常の開発は一人でやるもんじゃないんだよ。
自分はできるからですませてるうちはプロジェクトではゴミだから。

898デフォルトの名無しさん (ワッチョイ)2019/07/16(火) 20:51:55.23ID:LY1lZd1g0
>>896
まずスペースを削除すれば

899デフォルトの名無しさん (アウアウウー)2019/07/16(火) 21:01:39.66ID:IKrvu7vGa
>>896
面倒なので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氏は、機能ベースで進めるやり方とタイムスケジュー
ルベースで進めるやり方を比較しつつ、結果的には、タイムスケジュールベースのほうが
業界全体でよい効果を持つことがわかったと説明している。同氏は「機能ベースのリリース
モデルには戻りたくない」と明言しており、現在のモデルの方がうまく機能していることを
主張している。(後略)

901デフォルトの名無しさん (ワッチョイ)2019/07/16(火) 21:20:33.77ID:Z97hyaL80
>>898
!!!!!!
天才か!!!!!!!

>>899
regexのが安定なんかなぁ

902デフォルトの名無しさん (ワッチョイ)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環境ならそうする

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で空白以外まで切り詰めかな

907デフォルトの名無しさん (アウアウウー)2019/07/16(火) 22:00:47.16ID:QDcq5Heka
ためしに書いてみたけど遅い。。。
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);

910デフォルトの名無しさん (アウアウウー)2019/07/16(火) 22:05:19.31ID:QDcq5Heka
16進数を考慮してなかった
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によって、

914デフォルトの名無しさん (ワッチョイ)2019/07/16(火) 22:29:08.57ID:Qaka0H/h0
ていうか今日日スマホ系だとIDEに命ぜられるがままイベントハンドラを設けて、
インテリセンスに従って高水準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

916デフォルトの名無しさん (ワッチョイ)2019/07/17(水) 01:22:30.12ID:fOq5lc1d0
>>915
個別のライブラリについては別スレでどうぞ

Gtkプログラミング on Windows!!!
http://2chb.net/r/tech/1147024203/

917デフォルトの名無しさん (ワッチョイ)2019/07/17(水) 07:35:01.26ID:MynlIz/m0
個人開発したいとやったら、やるなと言う職業プログラマー
そんなにC++の弁護士気取りたいのか?

918デフォルトの名無しさん (ワッチョイ)2019/07/17(水) 07:53:00.12ID:LHl19Ofs0
>>917
日本語でok

919デフォルトの名無しさん (ラクッペ)2019/07/17(水) 15:04:33.40ID:tb8FEgTSM
>>918
一言で言えば、C++らしいものを作りたい
なんかおすすめ教えてです

920デフォルトの名無しさん (ワッチョイ)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
ファイル読み込みとかしないで、自身のソースコードを表示するプログラムなら作れるが

924蟻人間 ◆T6xkBnTXz7B0 (スフッ)2019/07/17(水) 19:52:17.36ID:0C/3xhixd
>>922
リソースデータなら可能

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使ってるが、単純に先頭を削除してループ。

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に分解する処理に戻る。
文字列終端に来たら、削除処理やめてループ抜ければ良い。

929デフォルトの名無しさん (ワントンキン)2019/07/17(水) 22:20:33.37ID:7sSMAEyGM
真面目に考えると
空白の定義は何か?
に始まり、様々な議論の末に
localeとかcodecvtとか糞が出来上がり
もうUTF8でええか
ってなる

930デフォルトの名無しさん (ワッチョイ)2019/07/17(水) 23:21:35.69ID:2rOrG0JC0
codecvt使おうとしてdeprecated に気づいてイラッとしたが、使い込んでからでなくて良かったとも言える

931デフォルトの名無しさん (ワッチョイ)2019/07/17(水) 23:42:15.40ID:MynlIz/m0
>>920
競技プログラミング一生やるわ!
C++は糞!
こんな言語二度と使わねえ
競技プログラミングの時は使うけど

932デフォルトの名無しさん (アウアウウー)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ではあなたが書く速度が競技される…!

935デフォルトの名無しさん (ワッチョイ)2019/07/18(木) 23:34:17.47ID:tHz4DA4Z0
std::unique_ptrを使い倒すなどして所有権について完璧に理解したら
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まで記述し切った数少ないシステム記述言語

938デフォルトの名無しさん (ワッチョイ)2019/07/19(金) 07:27:38.24ID:NVGMoojf0
>>935
一ヶ月でC++理解できるならするけど
個人開発すら許されない

939デフォルトの名無しさん (ササクッテロ)2019/07/19(金) 14:57:42.13ID:Tl6B//bHp
string型を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ループとか、

948デフォルトの名無しさん (ワッチョイ)2019/07/20(土) 01:54:09.02ID:FW5VH8uR0
>>938
プログラミング言語Cなら一日かけて通読したら次の日からばりばりCが書けるようになるから
3日目からはプログラミング言語C++を2週間かけて通読したら良い

949デフォルトの名無しさん (ワッチョイ)2019/07/20(土) 10:57:00.09ID:Yrx50SvY0
>>948
うるせえカス!
個人開発も出来ない言語を誰が触るか
>>941
うるせえカス!
俺は五年前からやってるわ

950デフォルトの名無しさん (ワッチョイ)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:haD4oX2dM
>>950
イライラすんだよ
C++って意味だよ俺は一生C++許さねえ

955デフォルトの名無しさん (ブーイモ)2019/07/20(土) 13:13:28.26ID:I7OxfMMiM
なんか別言語のバックエンドとして個人開発で現実的に使えるじゃんねC++

956デフォルトの名無しさん (ワッチョイ)2019/07/20(土) 20:34:13.05ID:gmQsKw1Z0
>>953
こないだのコンテナ否定野郎といい
匿名掲示板なんだからシレっと消えたらいいのに
しつこく今日のバカは自分だと名乗りを上げるやつ多いな。
ここやばくない?

957デフォルトの名無しさん (ワッチョイ)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:Yrx50SvY0
>>956
うるせえんだよ
馬鹿なのはお前なんじゃねえの?
しつこく自分をバカと名乗る?鏡見てから物言え
>>958
糞が
C++完全に理解した()勢ですか?

960デフォルトの名無しさん (ワントンキン)2019/07/20(土) 22:57:45.67ID:wwp1044bM
>>958
うるせぇんだよ無能
お前みたいなのがいるせいでC++が誤解されんだよJavaでもやってろ糞が

961デフォルトの名無しさん (アウアウウー)2019/07/20(土) 23:10:31.33ID:TZzwsQSsa
java嫌い

962デフォルトの名無しさん (ワッチョイ)2019/07/20(土) 23:12:08.92ID:Yrx50SvY0
>>960
しねよ!
お前みたいな奴が居てこそ、C++の偏見が出来上がったんだぞ 
ジャバなんてやりたくありませんね!一生!

963デフォルトの名無しさん (ワッチョイ)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とか意識しすぎなんじゃ…

967デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 00:59:05.24ID:iF1O4o5j0
>>966のはまだclassという括りが生きているが、
GoやRustはclassという括りを解体に向かっていって、
いかにも戦訓の積み重ねを経た近代言語という感じがする

968デフォルトの名無しさん (ワッチョイ)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とは別の名前で明確にクラス定義せねばならない。そう、このように↓↓↓
http://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/nested-types

971デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 06:42:56.05ID:/atv33Bt0
>>963
PowerShellも便利なんだけど配列周りとか癖があるからちょっとハマりやすい
switch文に配列渡したら自動的に要素毎のループになるとかいるか?

972デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 09:49:29.73ID:p/MmW4OD0
JavaはOOを前面に打ち出したのが失敗だったんじゃないだろか。

973デフォルトの名無しさん (アウアウウー)2019/07/21(日) 09:50:36.01ID:MuQkzP8ma
>>971
むしろ c++に欲しいわw

結構powershellのオプジェクト的に処理できる配列ループ関係は理想なんだよな

974デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 11:53:27.31ID:uQgnyJHu0
最近触ってないけどJavaの例外指定って今どうなってるの
C++は扱いきれずにぶん投げてnoexceptに移行したけど

975デフォルトの名無しさん (ドコグロ)2019/07/21(日) 12:11:15.35ID:5G+N+TdNM
Javaのチェック例外はラムダ式と相性が悪すぎて崩壊したよ
もうほとんど使われてない

976デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 12:28:36.06ID:/NqdtLiW0
>>960 >>962
まさかとは思うがC++のオブジェクト指向は汚い、とかJavaの方が理想的、とか
そういう偏見の話じゃないよな?

977デフォルトの名無しさん (ワントンキン)2019/07/21(日) 12:32:30.53ID:lSbr1E+JM
中身のないやり取りなので気にする必要は一ミリもないぞ

978デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 12:35:00.37ID:nevBE1rB0
Javaでチェック例外を使わないという選択肢などないと思うが。
あるとすればJavaのラムダを使わないかJava自体を使わないか。

979デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 13:10:45.64ID:iF1O4o5j0
>>978
>Javaでチェック例外を使わないという選択肢
Javaは1日触っただけなのでようわからんがthrows Exceptionで事実上可能なのでは…

980デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 17:32:26.73ID:IcUxNQlv0
「なぜ登るか?」
「そこに山があるからだ。」
「なるほど、じゃあおもくそ山高くしたろ」
なんかこんな感じだよな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:/NqdtLiW0
>>982
それは語弊ありまくりだろ
SFINAEはあくまで俗称で、そういうテンプレート候補の解決は
あるテンプレートが要件を満たすかどうかを調べるために作られたものじゃない
あくまでトリックだぞ

985デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 18:38:11.33ID:g8U8cyIO0
>>984
まあSFINAEは言語仕様上で想定していた使われ方ではないのは知っているけど

当たり前の様に使われているから、黒魔術呼ばわりされる最大の原因であるのも確かだろ

986デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 18:52:48.31ID:/atv33Bt0
>>983
> アプリレイヤーとしては欲しいものいっぱいあるぞ
それを言語仕様に求めるなよ…

987デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 18:56:39.20ID:g8U8cyIO0
>>986
いや、無いとc由来の危険なlocaltime使ったり、独自実装してxx年問題的なバグ仕込むからあった方がいい
chrono自体の過剰な機能充実っぷりと比較すると特にね

988デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 18:59:22.81ID:/atv33Bt0
>>987
> いや、無いとc由来の危険なlocaltime使ったり、独自実装してxx年問題的なバグ仕込むからあった方がいい
お前みたいな低能に合わせる必要はないだろw

989デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 19:06:29.57ID:g8U8cyIO0
実際必要だと判断されたから、20で追加されるんだが
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+txzfE0
>>976
いや、僕はC++が大好きなのに、職種C++プログラマーに馬鹿にされて頭に来た
Javaなんてどうでもいいカス

993デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 21:10:55.64ID:/NqdtLiW0
>>988みたいな驕り高ぶった初心者が増えたのは問題だと思うわ
>>992
そうかすまん、いつまでも過去にこだわってJavaの悪口言うのもどうかと思って
ちなみに「フリーソフトでも作ったらどうよ」と言おうと思ったがそういうのは自分で考えて自分で決めるべきだと思ってやめた(でないと絶対続かないと思ったので)
ちな職業プログラマです

994デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 21:15:07.27ID:/atv33Bt0
>>991
うん、俺も違うと思うよ
要するに>>982までは言語の話ししてたのにいきなりカレンダーとか言い出す>>983が出てきてレベルがだだ下がったってことなw

995デフォルトの名無しさん (ワントンキン)2019/07/21(日) 21:24:30.67ID:lSbr1E+JM
おっレベル高い話か?
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:8zHzQ0Ul0
>>996
さあどうだろうね
俺は違うと思っているが異論は認める

999デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 22:34:04.04ID:/atv33Bt0
>>996
文脈にもよると思うけど>>982辺りの話は標準ライブラリとかの話じゃないでしょ

1000デフォルトの名無しさん (ワッチョイ)2019/07/21(日) 22:35:38.39ID:/atv33Bt0
>>993
> >>988みたいな驕り高ぶった初心者が増えたのは問題だと思うわ
勝手に問題と思ってなよw
中身のない批判しかできない自称職業プログラマなんてどうでもいいし

-curl
lud20200109212039ca
このスレへの固定リンク: http://5chb.net/r/tech/1560574313/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part143 YouTube動画>1本 」を見た人も見ています:
C++相談室 part126
C++相談室 part124
C++相談室 part153
C++相談室 part154
C++相談室 part150
C++相談室 part152
C++相談室 part149
C++相談室 part155
C++相談室 part148
C++相談室 part151
C++相談室 part159
C++相談室 part163
C++相談室 part160
C++相談室 part157
C++相談室 part161
C++相談室 part147
C++相談室 part137
C++相談室 part134
C++相談室 part135
C++相談室 part138
C++相談室 part142
C++相談室 part117
C++相談室 part137
C++相談室 part141
C++相談室 part132
C++相談室 part144
C++相談室 part146
C++相談室 part140
C++相談室 part130
C++相談室 part145
C++相談室 part139
C++相談室 part133
C++相談室 part136
C++相談室 part131
C++Builder相談室 Part21
0からの、超初心者C++相談室
Cygwin + MinGW + GCC 相談室 Part 8
Cygwin + MinGW + GCC 相談室 Part 3
C♯相談室 Part20
C言語相談室(上級者専用)
MFC相談室 mfc22d.dll
Mac G5 中古買入相談室
MFC相談室 mfc23d.dll
自営業 悩みごと相談室 40
C#, C♯, C#相談室 Part79
C#, C♯, C#相談室 Part75
C#, C♯, C#相談室 Part90
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part93
C#, C♯, C#相談室 Part94
0からの、超初心者C#相談室
自営業 悩みごと相談室 46
自営業 悩みごと相談室 47
C#, C♯, C#相談室 Part96
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part97
C#, C♯, C#相談室 Part94
自営業 悩みごと相談室 48
18:39:11 up 18 days, 5:03, 1 user, load average: 8.92, 9.21, 8.93

in 0.026950120925903 sec @0.026950120925903@0b7 on 123008