[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 19:31 / Filesize : 258 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part153



1 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:18:20.00 ID:i4F+i14Y.net]
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/

テンプレおしまい

2 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:17:54.48 ID:yrSMEX+0.net]
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

3 名前:デフォルトの名無しさん [2020/10/11(日) 07:46:00.50 ID:2CDQ3L3B.net]
>>1
乙。

4 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 07:49:37.39 ID:eYoRN2yM.net]
>>1
このほとんど投げやりな感じのテンプレがじつにいい
いかにもC++っていう感じがして好き

5 名前:デフォルトの名無しさん [2020/10/11(日) 07:52:39.24 ID:2CDQ3L3B.net]
などと自画自賛。

6 名前:デフォルトの名無しさん [2020/10/11(日) 09:59:16.21 ID:kZXFoyze.net]
stdafx.h include したら負け

7 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 13:02:31.31 ID:sfgrEAk/.net]
>>1

最近はpch.h

8 名前: mailto:sage [2020/10/11(日) 16:35:47.97 ID:sJNU+9dX.net]
>>https://mevius.5ch.net/test/read.cgi/tech/1594528940/914
>普段から、馬鹿な応答が多かったし、

認めましょう

>「自分でコンテナクラス(リストなど)を作れるから天才」
>だとか、男だったら基本中の基本の出来て当たり前の事が出来るだけで天才と言っている

そんな発言はしていませんよ、確かにコンテナを自作する、というのはやったことはありますが、「自分でつくるとイマイチだよね」というのが私の実感です
https://mevius.5ch.net/test/read.cgi/tech/1434079972/33

>如何に周りのレベルが低いかが分かったから。

周り?
私はアマチュアだから、周りにプログラミングをする人はゼロですよ……

9 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 17:01:01.82 ID:pM0zGshh.net]
C++の規格以外の話はスレチ…

10 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 22:05:10.68 ID:wjXte93n.net]
規格の話限定だったの?ここ



11 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 23:00:26.64 ID:pSezOgnt.net]
>>8
わざわざ馬鹿な引きニート相手に真面目な返答しなくても

12 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 02:50:13.21 ID:+FLMYxu9.net]
QZ数ヶ月前俺にスルースキルが無いとか偉そうに言ってなかったっけ
C++に関わる話なら個人的には荒れててもいいと思うが、お前のプロフィールなんか誰も興味ないぞ

13 名前:デフォルトの名無しさん [2020/10/12(月) 09:52:20.31 ID:941JO02h.net]
>>12
ttps://mevius.5ch.net/test/read.cgi/tech/1601271690/125

14 名前:デフォルトの名無しさん [2020/10/12(月) 09:57:09.05 ID:O4GtI7oq.net]
>>13
それは仕方ないんじゃないかな。
人間だもの。

15 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 10:00:39.31 ID:rzm6EDrC.net]
批判されたら自演する修正なんてC++関係ない

16 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 12:54:31.37 ID:GHsqP2MR.net]
今とあるOSSのライブラリの動きがあやしいのでデバッグしているんだけど
やっぱりいわゆるモダンなc++はデバッグがつらいわ
デバッガで見てもwrapの嵐でデータの中身になかなかたどり着けない
ステップ実行しててもRAIIをはじめ表面上見えない実装がノイズになってわけわかんなくなる
あとデバッグビルドは恐ろしくパフォーマンス落ちる(Cとかと比べてね)

17 名前:デフォルトの名無しさん [2020/10/12(月) 14:12:21.06 ID:941JO02h.net]
C++ より C が良いね

18 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 15:18:22.15 ID:Z3Kcjb2S.net]
STLの unique_ptr, shared_ptr, vector, list, forward, move
といった非常に基本的なものもソースを解読するのはとても難しく
strcmpが3行くらいしかなかったのが懐かしい。
それにC++11以降の機能は非常に好みが分かれ、好きな人は好きだが
嫌いな人は反吐が出るほど嫌い。

19 名前:デフォルトの名無しさん [2020/10/12(月) 15:23:21.42 ID:N0jxybIn.net]
Ubuntu20.04でGtkmmでアプリを作っています…ディレクトリとファイル一覧が欲しくて…。
C++17の

20 名前:std::filesystemを使ったほうがスマートだと思うけど…使えません…。
そんな古い環境ではないと思うんだけど…direntやstatをやればできると思うけど…古いよね?
これカーネルだし…std::filesystemがスマートだと思うんだけど…このUbuntuではまだなの?
-std=c++17のオプションをつけてコンパイルしても駄目だった…。
[]
[ここ壊れてます]



21 名前:デフォルトの名無しさん [2020/10/12(月) 15:27:01.65 ID:O4GtI7oq.net]
Ubuntuはgcc9使えたんじゃなかったかな。
gcc8はファイルシステム使うとき、ライブラリをリンクしないといけなかったと思う。

-lstdc++fs

gcc9から必要なかったと思うので、gcc9を使う方をお勧めします。

22 名前:デフォルトの名無しさん [2020/10/12(月) 16:15:10.34 ID:N0jxybIn.net]
できました!できました!できましたが…EclipseCDT上で…名称が解決できてない感じ…。
とりあえず…動きました…もう少し調査します…。

23 名前:デフォルトの名無しさん [2020/10/12(月) 16:27:02.58 ID:N0jxybIn.net]
名称も解決できました…使うよ!

24 名前:デフォルトの名無しさん [2020/10/12(月) 16:56:02.38 ID:941JO02h.net]
>>18
速度も落ちてそう

25 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 19:26:54.38 ID:Z3Kcjb2S.net]
>>23
メタプログラミングの部分が複雑なだけで生成されるコードは最短に近い
のではないかと思う。

26 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 20:04:28.37 ID:Zjr2Hxnk.net]
設計者ももっと簡潔に書ける技能を身に付けるべきだと思うけどねん

27 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 20:14:11.80 ID:9Fo4KCKO.net]
>>19
-std=c++1zとかstd=gnu++1zじゃなかったっけ

28 名前:デフォルトの名無しさん [2020/10/12(月) 20:50:41.81 ID:O4GtI7oq.net]
文芸的プログラミングですね。

29 名前:デフォルトの名無しさん [2020/10/13(火) 02:00:34.30 ID:y5TdNrxl.net]
>>25
STLの性能を維持しつつ簡潔に書ける人間
にしか許されない発言

30 名前:はちみつ餃子 mailto:sage [2020/10/13(火) 03:46:05.57 ID:jBq+pHZV.net]
汎用的な部品は広い範囲をカバーするわけだから想定すべき状況が多くなるし、
その分だけ相応に複雑になるのは当たり前の話なんだよな。

逆に strcmp が簡潔だったとか言ってもそりゃあ char から成る文字列の比較に
特化していいなら簡潔に出来て当たり前ですよねってだけのことで、
機能が違うものの複雑さを比べようとするのは馬鹿馬鹿しいよ。



31 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 07:14:55.86 ID:AAkThgLB.net]
・同名の一時変数を使いまわす
・メモリの節約のために早めにデストラクタを呼ぶ
・スコープを小分けにして可読性を上げる

みたいな目的のために中括弧を多用するのってアリですか?
それともスコープじゃなくて関数を分けろってなりますか?

32 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 09:00:40.68 ID:KjGL8AJy.net]
>>29
STLは理屈自体は非常に簡潔だとハゲも言っとる
的外れ

>>30
アリだのナシだの・・・

33 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 09:19:57.42 ID:2ekPMyol.net]
STLガーSTLガー言ってるやつ
そもそも++でないCでもポインタ引数2個で始点終点渡すのがロクに書けなさそうだね

34 名前:デフォルトの名無しさん [2020/10/13(火) 09:53:49.84 ID:f6jDEgc3.net]
STLの凄さがわからない人もいるという。

35 名前:デフォルトの名無しさん [2020/10/13(火) 10:50:05.42 ID:y5TdNrxl.net]
知ってることの精一杯がポインタのそれなんだな
クスクス

36 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 12:20:09.76 ID:2ekPMyol.net]
void fill(int first[], int last[], int val)
{
while (first < last) //えー、配列の大小比較って変じゃん
{
first[0] = val; //常にゼロの添え字って気持ち悪いよー
++first; //やだよー、配列を++なんて
}
} //これだから変態どもは・・・まったく

void fill(int first[], int n, int val) //素直にこう書きやがれ
{
for (int i = 0; i < n; i++) //変数が増えることを気にしないのが富豪だ
{
first[i] = val; //配列要素へのアクセスには[]があるべきなんだよ
}
} //知ってることの精一杯がポインタのそれなんだなksks


もうさ、こいつ無理にC++使わなくてよくね?

37 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 12:30:12.68 ID:y5TdNrxl.net]
雑魚おつ

38 名前:31 mailto:sage [2020/10/13(火) 12:48:18.65 ID:alJhtdGu.net]
いや、あの・・・
STL自体は非常に良く出来てると思うが、俺普段C++(あるいはC++11以降)マンセーSTLマンセーしてる連中は馬鹿にしてるからね・・・w
お前が作ったんちゃうやろと

39 名前:デフォルトの名無しさん [2020/10/13(火) 12:50:17.06 ID:FpFGKRx+.net]
void fill(int *first, int *last, int val)
{
while(first < last) *first++ = val;
}

40 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 12:52:08.93 ID:jGpIs/AO.net]
理解は出来ないわけじゃなくSTL流に書くのが汚くて馬鹿みたいに感じるだけだ。



41 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 12:54:03.28 ID:jGpIs/AO.net]
配列は処理対象を個数で表現するほうが分かり易いし完結なのに、終端要素で
表そうとするのは単にSTLのとった設計思想の都合でしかないので
馬鹿っぽく感じる。

42 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 12:56:47.00 ID:2ekPMyol.net]
>>37
C++11の何が気に入らんの?
C++98でストレス溜まってたところを楽にしてくれてるやん
型指定子autoは同じことを二度も書かされる屈辱から解放してくれるし
range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
俺的にはテンポラリにconstが必須でなくなって痒いところに手が届いた

43 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:17:38.74 ID:y5TdNrxl.net]
@
void fill(int first[], int n, int val) //素直にこう書きやがれ
{
for (int i = 0; i < n; i++) //変数が増えることを気にしないのが富豪だ
{
first[i] = val; //配列要素へのアクセスには[]があるべきなんだよ
}
} //知ってることの精一杯がポインタのそれなんだなksks



A
void fill(int *first, int *last, int val)
{
while(first < last) *first++ = val;
}

明らかに配列添字明示してる@のほうが無駄が多くて馬鹿っぽいけど

44 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:19:51.21 ID:2ekPMyol.net]
>>42
うん、そう言いたかった
35の最終行で言ったつもりだった

45 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:32:32.38 ID:alJhtdGu.net]
>>41
別に気に入らんとか言うとらんよvariadic templates無しの時代はキツかったし(逆に言えばテンプレート以外ではそんなに困らん)
新しいもの使ってる=上級者、だと思ってるような、権威を傘に着てる連中を馬鹿にしてると言ったの
マンセーとかの辺りで察してくれ

46 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:43:16.33 ID:jGpIs/AO.net]
伝統的にはこうで、速度も速い。
void fill(int *ptr, int n, int val)
{
 for (int i = 0; i < n; i++) {
  *ptr++ = val;
 }
}

さらに、以下のように書くほうが速い。
void fill(int *top, int n, int val)
{
 int *ptr = top;
 for (int i = n; i > 0; --i) {
  *ptr++ = val;
 }
}

47 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:47:15.59 ID:jGpIs/AO.net]
>>42 >>43
fill()関数自体はどれでも分かりにくさは感じない。
問題はfill()関数を使う側の分かりにくさ。
btmで終わりを示す方式だと多くの場合、個数numに対して
fill(first, first + num, val);
のようにしか書けないことが多い。

48 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:49:44.76 ID:2ekPMyol.net]
>>44
新しいものって現行規格に従っただけで馬鹿呼ばわりか? ブーメランだろ
何を基準に新しいとか古いとか言ってるの?
俺に言わせりゃK&R1で憶えた立場からはC89でさえ新しいんだが

49 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:52:16.91 ID:jGpIs/AO.net]
>>46
Ruby, Perl, Python, JS, BASIC のどれでも、配列の処理範囲を示すのに
個数のパラメータを持っている。C言語でも、memcpyやmemcmpは、
memcpy(ptr1, ptr2, num)
memcmp(ptr1, ptr2, num)
であった。
numは、ptr1, ptr2 に共通の要素数なので1,2に対称性があり、とても分かり易いが
STLの流儀に倣って書き直すなら
memcpy(fisrt1, btm1, fisrt2, num)
memcmp(fisrt1, btm1, fisrt2, num)
となってしまうだろう。
この場合、btm1は「1」の終端であるが、「2」とは関連が分かりにくく、
「対称性」が失われている。
だから汚く見える。

50 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:54:08.20 ID:2ekPMyol.net]
>>45
C++使いの生理反射が消失してるな
不等号気持ち悪くないの?



51 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:55:47.45 ID:2ekPMyol.net]
>>48
copy(first1, last1, first2) な

52 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 13:56:07.20 ID:jGpIs/AO.net]
>>45
速度効率をさらに高めたいなら、
void fill(int *top, int n, int val)
{
 int *ptr = top;
 int *btm = top + num;
 while(ptr < btm) *ptr++ = val;
}
と書いても良い。
なので、fill()の内部的な処理効率自体はいくらでも速くできる。
問題は、fill()を使う側の利便性や分かり易さや対称性(=美しさ)。

53 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 14:11:21.12 ID:alJhtdGu.net]
>>47
文盲?

54 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 14:14:12.35 ID:2ekPMyol.net]
>>51
void fill(int* first, int* last, int val)
{
while (first != last) *first++ = val; //nがなきゃtop+nなんて計算そもそもいらん
}
呼び出し側でfill(first, last - first, val)なんてやられた日にゃ引いてから足し直すことになるだろ

55 名前:デフォルトの名無しさん [2020/10/13(火) 14:19:38.29 ID:FpFGKRx+.net]
これはダメなんか遅いんか
void fill(int *first, int *last, int val)
{
while(first != last) *first++ = val;
}

56 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 14:44:57.22 ID:jGpIs/AO.net]
>>53
>呼び出し側でfill(first, last - first, val)なんてやられた日にゃ引いてから足し直すことになるだろ

それは屁理屈と言うか、もしあなたが頭のいい人なのに本気でそう思っているなら
机上の空論というか、実際のアプリ作製の経験が足りないと思われる。
ほとんどの場合、配列の処理範囲はlastではなく個数のnumの方が便利。
lastは割り出すのにワンクッション手間が増えてしまう。

57 名前:デフォルトの名無しさん [2020/10/13(火) 15:08:27.75 ID:f6jDEgc3.net]
初心者がSTLを批判してもダメだろ。

58 名前:デフォルトの名無しさん [2020/10/13(火) 15:19:48.82 ID:f6jDEgc3.net]
キミたちが言いたいのは、事前に個数がわからないのに関数を呼び出せるのはオカシイって事だろ?

STLは事前に個数がわからないにもかかわらず、関数を呼び出せてしまう。
これはストリームの機能ではないか?
オカシイ!と。

それは、呼び出せる方が汎用性があるんだよ。
全然オカシクない。

59 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:12:52.22 ID:jGpIs/AO.net]
>>56
当然だ。
初心者じゃないエキスパートだから批判している。

60 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:14:05.11 ID:jGpIs/AO.net]
>>57
そういう問題じゃない。
利便性が損なわれているから批判しているだけ。
論理的に正しいかどうかではなく、便利かどうかの観点。



61 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:14:51.63 ID:2fTKv7IK.net]
イテレータぐらいはイディオムとして慣れろや

62 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:21:31.28 ID:jGpIs/AO.net]
>>60
なんでこんな汚いライブラリに慣れなきゃならないの。
C++委員会がプログラマの思想を強制する権利は無い。

63 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:45:48.79 ID:2fTKv7IK.net]
>>61
じゃあお前ならどんなAPI設計にするの?

64 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:48:01.34 ID:2ekPMyol.net]
>>55
標準のcopy関数もロクに知らないくせに・・・いや、これは置いとく

では、おまえさんは配列の終点をどのように渡すんだ?
int main()
{
int dim[100];
fill(dim, /*ここ*/, 0);
}

65 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:49:01.87 ID:zWj2VWPf.net]
同値比較はコストがかかるケースもあるんじゃないですか?
要素数を指定するほうが処理コストが抑えられるような気がします
素人意見ですみません;_;

66 名前:デフォルトの名無しさん [2020/10/13(火) 17:13:32.12 ID:FpFGKRx+.net]
配列だから話がややこしくなるんで
リストだったらどうみても始点終点やろ
インターフェースを合わせるために
配列も始点終点にしただけやろ

67 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:16:38.67 ID:jGpIs/AO.net]
>>65
リストでも繰り返しなら個数でもいける。

>>63
終点ではなく、個数で渡す:
fill(dim, 100, 0);  // めちゃくちゃ分かり易い。

fill(dim, dim + 100, 0);  // めちゃくちゃ不便。何このタイピング量。

68 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:19:05.56 ID:jGpIs/AO.net]
しかも問題なのは、vectorの中ほどで追加や削除をしても、終点が自動修正されないこと。
それでは始点と終点で管理している意味が無い。
listならいけることはいけるが。
しかし、結局、vetorとlistの違いを意識しなければバグることになる。

69 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:25:01.13 ID:2fTKv7IK.net]
>>67
建設的な議論しようや
お前ならどう設計するか書いてみ?

70 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:27:25.69 ID:jGpIs/AO.net]
>>68
アイデアを盗作、剽窃しようとするなよ。



71 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:34:02.61 ID:2fTKv7IK.net]
はい雑魚

72 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:44:12.19 ID:jGpIs/AO.net]
>>70
なんのこっちゃ。

73 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 18:08:23.24 ID:2ekPMyol.net]
>>66
ズコー(aary

↓こんなコード書いたらバカにしまくってやろうと思ってたのに
#define N 100
int dim[N];
fill(dim, N, 0);

その下をいきやがったw
マジックナンバーって言葉知ってる?

74 名前:デフォルトの名無しさん [2020/10/13(火) 18:42:42.89 ID:f6jDEgc3.net]
レベルが低すぎて議論するだけ無駄なので、この話題はこれでお終いにしてはどうだろか。

75 名前: mailto:sage [2020/10/13(火) 20:06:42.81 ID:455DutI7.net]
>>41
>C++11の何が気に入らんの?

右辺値 && が……
よくわかりません

RVO 前提コードで私は妥協しているのですが

76 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 21:22:13.35 ID:2ekPMyol.net]
お気の毒に

77 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 22:22:30.85 ID:vraeBdjb.net]
よくそのレベルでSTLにケチつけられるなw

78 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 22:53:46.89 ID:mhza1+DZ.net]
>>35
×: void fill(int first[], int n, int val) //素直にこう書きやがれ
○: void fill(int first[], const int n, const int val) //素直にこう書きやがれ

79 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:00:47.08 ID:1+uImEGd.net]
個数不定や個数を数えるのがハイコストでも走査できたり、実在しないアドレスや好きな値でも番兵値として指定できたりするのがlast指定のifのメリットなんじゃね?

マップから取得した項目から走査したいとか、項目ごとにサイズが異なる連続データをメモリから読み出すとか、はたまたインタラクティブにユーザが終了指示するまで繰り返すとか。

個数指定のifもあれば便利だけど、どちらかを選択しないといけないなら、last指定のifだけ存在するほうがダメージが少ない


気がする

80 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:07:21.55 ID:jGpIs/AO.net]
>>78
もちろんそうなんだが、STLは馬鹿なので、そういう役目はほぼ果たしてない。
証拠として、途中の要素を削除してしまうとlastが全く意味を成さなくなるから。



81 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:26:38.01 ID:8ZZNtI2L.net]
何がどう証拠として、なのかわけが分からん。詳しく説明してくれ

82 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:27:15.76 ID:SS1TQwr/.net]
流れ全部読んでないけど上のほうで言ってる人がいるように
> void fill(int *first, int *last, int val)
を見た時点でCやってる人間からしたら関数内部が
> while(first < last) *first++ = val;
こう簡潔になってるだろうと想像しやすくてスッキリしてない?
別に想像する必要は無いんだけど想像してしまうというか

あと開始がポインタで終わりもポインタってのは対称的で良いと思う
> fill(dim, dim + 100, 0); 
これも上記の理由により気にならない
このわずかなタイピング量すら気になるんなら
そのソースコードには多分他の問題がある

83 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:50:29.75 ID:jGpIs/AO.net]
>>81
>あと開始がポインタで終わりもポインタってのは対称的で良いと思う
良くないよ。
その対称性は不要。
むしろ copyするときに dstとsrcの対称性がなくなることの方がずっと問題。
なぜなら間違い易いから。
それに
 fill(dim, dim + 100, 0); 
と書くときも dimの部分にケアレスミスが生じ易く、たとえば、
 fill(dim1, dim2 + 100, 0); 
と書いてもコンパイルエラーにはならないが結果は重大である。

84 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:51:31.80 ID:jGpIs/AO.net]
>>82
誤: と書くときも dimの部分にケアレスミスが生じ易く、たとえば、
正: と書くときも dim + 100 の部分にケアレスミスが生じ易く、たとえば、

85 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:56:23.05 ID:SS1TQwr/.net]
>  fill(dim1, dim2 + 100, 0); 

そう間違えちゃう人は
fill(dim1, dim1 + 200, 0);
fill(dim1, dim1 + 100, 2);
fill(dim2, dim1 + 100, 0);
とも間違っちゃうから大変だね
そういう人は何より
fill(dim2, 100, 0);
の表記を使いたいんやろね
何か分かったわ

86 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 23:58:38.02 ID:BWJh5EXt.net]
全然別のコンテナのイテレータを混ぜて指定できてしまうのは確かに欠点なんだよね
だからRangeが必要だったんですね

87 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:11:56.45 ID:lJFXTbVx.net]
>>84
あなたの脳内にはプログラミングのセンスの様なものがまだ育ってない。
そういう人ばかりがC++委員会にいるので
「机上の空論的な設計」
と言われるようになっている。

88 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:20:29.03 ID:lJFXTbVx.net]
>>86
それに、先頭アドレスと長さを組にするというのは、プログラミングにおける
伝統になっていてPascal文字列やWin32のバッファの指定などもそれを
踏襲している。
topとbtmを指定する方法は番兵方式ともまた違う、STL独特の方式。
番兵方式はミスが入りにくいが、btmアドレスを指定する方式はbtmに
間違った値をしていた時にとんでも無い結果を生み、バッファオーバーラン
より酷い。
btmにtopとは全く関係の無いとんでもない値を指定できてしまうから。
配列は、0〜N-1までの分かり易い値で位置を指定できることが特徴の一つなのに
STLはそれも破壊してしまっており、範囲チェックも分かりにくくなる。
高級言語なのに、アセンブラより複雑。
アセンブラでは少しでも高速化するためにtop,btm方式が使われたこともあったが、
この高級言語の時代にはそぐわない。
分かりにくい。

89 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:24:28.14 ID:lJFXTbVx.net]
もっといえば、MSがグラフィックで矩形を描くときに、
左上の点と右下の点を指定する方法もセンスが無いといわれている。
これも沢山グラフィックのプログラムをしてくると
左上の点と「サイズ」を指定するのが合理的であることが分かってくるが
経験が足りて無い人には「好みの差」程度にしか認識できない。
それともとても似ている。

90 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:34:35.60 ID:eS9CcskG.net]
ID:lJFXTbVxが参加するレビューは荒れる…
…!



91 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:36:44.29 ID:eS9CcskG.net]
つか(sx, sy, width, height)式の矩形表現は
クリッピングとかしだすと結局内部で
(sx, sy, ex, ey)表現に

92 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:40:01.03 ID:eS9CcskG.net]
効率的な番兵法は常にアルゴリズムとともにあるから
  ↓こんなやつ
  while (buf[i] < buf[i]) { std::swap(buf[i], buf[i]); i--; } // buf[0]はINT_MAX

範囲の一般的表現のうちに含めるのは頭おかしい

93 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:44:56.12 ID:W3antmDc.net]
fill(p, p + n, 0);は
fill(p + m, p + n, 0);という表現にもスムーズに拡張できる
個数の場合は
fill(p + m, n - m, 0);って書くことになるね

94 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 00:47:49.37 ID:g6nWODwp.net]
ここまで fill_n 無し

95 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 01:12:33.89 ID:qrfIlgcS.net]
>>88
なんで?中心の点とサイズなら分かるけど
ついでに言うと左上右下で矩形表現するのは重なりや画面外は見出しの判定が楽だからそっちの方が便利な場合もある
事情に応じた使い分けを考慮できないあたりが経験足りないっすねあなた

96 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 02:21:44.28 ID:dCmiKU7l.net]
>>41
>range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
これに対して
>>55
>机上の空論というか、実際のアプリ作製の経験が足りないと思われる。
>ほとんどの場合、配列の処理範囲はlastではなく個数のnumの方が便利。
ここには同意する

実際問題、STLあるいはそれに倣ったコード以外、ソフト開発の場面で
range-basedで簡潔に済むループはそんなに無い(無理矢理書き換えることは出来るとしても)

97 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 02:44:00.29 ID:EuYzPNma.net]
てか
せっかくC++使ってんのに何故
リストの始点と終点とを別々に渡したり
リストの始点と要素数とを別々に渡したり
とかやりたがるの?

98 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 06:39:07.67 ID:fAfIBrSZ.net]
>>77
動作確認くらいしてから書けよ
codepad.org/shRYygYw

99 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 06:42:43.22 ID:fAfIBrSZ.net]
>>88
ここC++スレってこと忘れてねえか?
矩形クラス作って右下とサイズと両方使えるようにすれば済む話だろ

100 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 06:45:09.59 ID:fAfIBrSZ.net]
>>96
全要素とは限らないからだよ



101 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 06:46:30.43 ID:fAfIBrSZ.net]
fill(dim, 2, 98, 0); //引数4個
fill(dim + 2, dim + 98, 0); //引数3個

102 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 07:58:42.58 ID:qpMvVLdo.net]
>>83
ケアレスミス多いな。

103 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 08:14:56.28 ID:eS9CcskG.net]
>>97
>>97が同じ関数を定義したのだから仕方が無い
>>77は×と○は×を○に修正せよと言う意味であって書き並べよと言う意味ではない

104 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 08:25:44.48 ID:fAfIBrSZ.net]
>>102
修正せよという主張が誤っていると指摘しているんだ
intというかポインタでも参照でもない値の引数のconstは多重定義において意味を成さない

105 名前:デフォルトの名無しさん [2020/10/14(水) 09:06:12.19 ID:+cbHRaf/.net]
完全に初心者のイチャモンで、他の言語も使えて無さそうだから、何か一つやり遂げてみたら良いと思います。

106 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:18:06.97 ID:fAfIBrSZ.net]
具体性のない、更には漠然としすぎて一体何の話かわからんことしか言えないやつこそ初心者だろうが

107 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:31:01.91 ID:eS9CcskG.net]
>>103
関数内で修正しない変数にconstをつけよという当たり前の話、
C++ではCよりも関数引数についてもやりやすくなっているからやったら?
という話ェ、

108 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:31:55.45 ID:eS9CcskG.net]
訂正orz、
×: 修正
○: 値を変更

109 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:39:06.95 ID:aLuhanwR.net]
int引数にconst付ける意味ってなんですか?
値渡しされるのだから関数内で値が更新されても呼び出し元には関係ないこと(関心がないこと)だと思えますが

110 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:42:59.50 ID:eS9CcskG.net]
>>108
>呼び出し元には関係ないこと(関心がないこと)
左様
呼び出し元に見せる宣言文では値渡しのconstは外して良い
C++ならそれができる
Cではできない(constをつけるとしたら定義と宣言の両方に付けねばならない



111 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:43:23.77 ID:lJFXTbVx.net]
>>92
あなたは経験不足だからどちらの方が便利かが分かって無い。
どちらの方式も互いに単純変換できるが、現実のアプリにおいては個数の方が
便利だと言っているのだが、あなたにはそれが分からない。
そういう人達がC++委員会に多くなってきているからC++の仕様が変になって
きていると言われているのだよ。

112 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:45:58.36 ID:lJFXTbVx.net]
>>100
>fill(dim, 2, 98, 0); //引数4個
これは違う。
インタプリタ言語ではこのようになってしまうが、伝統的にはCでは、
fill(dim +2, 98, 0); //引数3個
と書ける。

113 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:50:15.45 ID:fAfIBrSZ.net]
>>111
うわー・・・俺が示したコードが読めてないな
おまえのコード、意味違ってるんだけどw

114 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 09:52:34.69 ID:eS9CcskG.net]
ていうか>>91まつがえた。n_、
正: while (buf[i-1] < buf[i]) { std::swap(buf[i-1], buf[i]); i--; } // buf[0]はINT_MAX
アウチ、

115 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 10:09:01.38 ID:lJFXTbVx.net]
>>90 >>94
それはクリッピングする場合のみだ。
しかし、いまのグラフィックライブラリはクリッピングは基本的に自動化されているので
クリッピングをアプリプログラマが自分で行う必要がある頻度はとても低い。
そういうことが優先順位ということ。
ライブラリの良し悪しは優先順位の高い作業が楽に書けるかどうかで決まる側面がある
から経験不足の人は優先順位が分かって無いので良いライブラリはなかなか作れない。

116 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 10:31:42.62 ID:Z4l68xx0.net]
ライブラリの良し悪しは俺様の流儀に従っているかどうか、まで読んだ

117 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 10:52:50.19 ID:fAfIBrSZ.net]
>>106
全然当たり前じゃねえよ
値引数にconstはつけねえんだよ
周り見てみろよ
周りがあればの話だが

118 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:20:31.96 ID:fAfIBrSZ.net]
>>111
待ってるんだけど返事がないね
fill(dim +2, 98, 0);
これでどうやって&dim[98]を知り得るの?

119 名前:デフォルトの名無しさん [2020/10/14(水) 11:38:41.41 ID:+cbHRaf/.net]
「個数のほうが便利で現代的で洗練されている」と言ってる人は、STLが何故このような設計になったのか、全く理解していないので
、公共の場で主張するのはよくないのでは?

120 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:43:45.06 ID:RddNL28g.net]
STLは何故このような設計になったか教えて



121 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:44:04.35 ID:dCmiKU7l.net]
>現代的で洗練されている
誰がそんなこと書いてんだ
てか現代的とか洗練とかアホかと
なぜそうなっているか理解出来てないのはお前、D&Eの日本語版にその辺の話は載ってるから読んでこい

122 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:53:23.30 ID:fAfIBrSZ.net]
標準を盲信しろとは言わない
おかしいと思うことはおかしいと言っていい
いい、つーか歓迎で議論には付き合う
「議論には」な、感情論だの押しつけだの
そういう見苦しいのは相手せん

123 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 12:09:10.96 ID:lJFXTbVx.net]
>>117
あなたが何も書いてなかったから、98は個数だと認識して書いた。
もし、btm要素であるなら、
fill(dim + 2, dim + 98, 0);
と書く

124 名前:ことになるが、このような btm 要素を指定する書き方が現実的な
アプリではコーディング的に非効率な問題のある書き方だと昨日から主張し続けている。
[]
[ここ壊れてます]

125 名前:デフォルトの名無しさん [2020/10/14(水) 12:15:37.74 ID:lJFXTbVx.net]
>>122
なぜかといえば、現実の大規模アプリでは配列の先頭の名前は、もっとずっと長く、
たとえば、aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
のようになっていることが多い。それで昔ながらの C スタイルであれば、
fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, 個数, value);
と書けば済むのに、STLスタイルだと、
fill_stl(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx,
   aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx + 個数,
   value);
のように複数行で書かないといけないハメになってしまう。
そして、aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxxに似た
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
というような他の変数もあることが多く、そうなると、
fill_stl(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx,
   aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx + 個数,
   value);
のように書き間違えてもコンパイルエラーにならないので非常に重大な問題を巻き起こす。
また、少し修正したい場合、topとbtmの両方を修正しなくてはならないのに、
どちらか片方の
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
だけを
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
に書き換えてしまって変数名が長いので気づきにくくてどこでバグが入ったか分からない
重大な問題が入り込んでしまうことが有る。
その点、昔ながらのCスタイルではこのような問題が起きないので安全。

126 名前:デフォルトの名無しさん [2020/10/14(水) 12:20:41.76 ID:GsUUoEHv.net]
なるほど一里塚

127 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 12:23:42.24 ID:fAfIBrSZ.net]
>>123
只でさえ長い識別子に名前空間だのスコープだのテンプレート引数がついて読む気なくさせるようなのはよく見かけるね
そういうのはusingでエイリアス作ったり左辺値参照でスコープを狭めたりで対応するのがよくあるケース
auto first = aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.begin();
auto last = aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.end();
とでもやっとけば楽になるのもある

昔ながらのCやC++98にしがみつくのをやめてC++11〜17の新機能を有り難く頂戴することで
色んなストレスから解放される

128 名前:デフォルトの名無しさん [2020/10/14(水) 12:40:03.79 ID:ssGc8zMA.net]
>>123
「個数」で誤魔化されてんな
個数でもこうなるんじゃね

fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);

129 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 12:52:15.34 ID:lJFXTbVx.net]
>>126
それは経験的にならないことが多い。
なぜなら、個数は配列自体が覚えているだけでなく、何らかの変数に入っている事がとても多いから。
典型的には、個数はマクロ変数やconst int変数などに入っているか
または、ファイルから読み込んだ場合には読み込んだときの個数が
グローバル変数などに入っている。

130 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 12:55:51.73 ID:lJFXTbVx.net]
>>127
それから、
>fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
の場合だと、たとえ第二引数の部分に間違いがあってもバグの程度がまだまし。
なぜなら、xxx.size()は個数なので間違いがあってもデバッガで見てもまだ分かり易いバグとなるし、
バッファオーバーランしても個数なのでどこかで停止してくれる。
ところが、btm要素方式の場合、書き間違えてbtm要素が全く別の配列の中を指してしまっている場合には
バッファオーバーランが停止することなくほぼ無限に続くことになる。



131 名前:デフォルトの名無しさん [2020/10/14(水) 13:02:09.57 ID:ssGc8zMA.net]
つまりずっと配列前提の話をしてたワケ?

そりゃ旧来的な書き方の方が合理的だ
配列とその個数のデータ構造なら明らかにdefineされてる個数を与えた方がラクになるな

132 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:02:59.84 ID:tpi9enQu.net]
stl以前にエディタもまともに使えないって

133 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:04:53.29 ID:lJFXTbVx.net]
>>128
さらに、その場合、全要素を対象にしているから専用の関数などや
for each文などで対応できる。
一方、良くある例として、あるところから10個の要素に対して処理したい
などというものがある。
それは例えば、エディタを作っている場合に画面内に10行表示されていることが
分かっている場合だ。
そういう場合に、C流だと
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top], 10);
で良いのに対し、STL流だと
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top], &aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top + 10]);
ととても長くなる。

134 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:05:56.40 ID:lJFXTbVx.net]
>>129
STLはリンクリストではなく、(動的)配列を推薦しているから。

135 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:11:45.84 ID:lJFXTbVx.net]
>昔ながらのCやC++98にしがみつくのをやめてC++11〜17の新機能を有り難く頂戴することで
>色んなストレスから解放される
同意しかねます。

136 名前:デフォルトの名無しさん [2020/10/14(水) 13:20:20.16 ID:ssGc8zMA.net]
>>131
にしてもdefineされてる配列の個数の名前もお長いんでしょ?

#define A_XXXX_XXXX_XXXX_XXXX_XXXX_XXXX_XXXX_XXXX_SIZE (100000)
#define A_XXXX_XXXX_XXXX_XXXX_XXXX_XXXX_YYYY_XXXX_SIZE (100000)

***

今度は

137 名前:「個数」の代わりに「10」になってる
行数を受け取る変数名もやっぱり長いんじゃなくて?
肝心のところを短く書いてるから、短く見える

こういう変数になるんじゃないのかな
const int aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx_Lines = get_draw_lines();
[]
[ここ壊れてます]

138 名前:デフォルトの名無しさん [2020/10/14(水) 13:22:47.51 ID:EoVZjJO9.net]
よくこんなくだらないことに熱くなれるな

139 名前:デフォルトの名無しさん [2020/10/14(水) 13:32:19.34 ID:+cbHRaf/.net]
STLは設計のお手本的な部分があり、誰もが良く学ぶべきだけど、今回の事例で初心者がどう感じるのか、データが取れたのでは?

140 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:34:00.13 ID:lJFXTbVx.net]
>>134
その様な場合でも、
C流:
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top],
      numXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx);
STL流:
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top],
      &aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top + numXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx]);
となりC流の方がまだまし。

それとC流だとハンガリアン記法で名前を付けて置けば、なんとかなってる。
STL流は最悪で、非常に危険な書き方。



141 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:34:55.35 ID:HhRPmWpc.net]
初心者は「ぼくちんのコードが長くなるからこの設計はクソ!」と言いがちなことが分かったので今後の教育の時に注意しようと思いました

142 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:35:10.63 ID:lJFXTbVx.net]
>>136
ちなみにどっちが初心者だと考えているのか。
こっちはプログラミングのエキスパートだが。

143 名前:デフォルトの名無しさん [2020/10/14(水) 13:35:22.62 ID:+cbHRaf/.net]
引数に個数を指定するほうが洗練されていると初心者が言うけれど、設計の観点から言えば、事前に個数がわからなくても呼び出せるほうが汎用性がある。
つまり、ジェネリック。

144 名前:デフォルトの名無しさん [2020/10/14(水) 13:37:07.37 ID:+cbHRaf/.net]
STLごときでつまずいてたら、関数型なんかさっぱり理解できないだろな。

145 名前:デフォルトの名無しさん [2020/10/14(水) 13:40:26.69 ID:+cbHRaf/.net]
2chだった頃、このスレでもプッシュ型インターフェースが流行りかけてたんだよな。
5chになって若干質が落ちたんじゃないだろか。

146 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:41:57.79 ID:HhRPmWpc.net]
初心者くんはこの世の全ての範囲のendが「先頭からの個数」で決まる場合しかないと思い込んでるみたいだけど
例えばfindの検索結果とか、GUIの現在カーソル位置とかで決まる場合もあって、その場合だと本質的でない「個数」という数字を求めるコードが結局長くなってしまうことに注意しよう
簡単な練習問題だよ

147 名前:デフォルトの名無しさん [2020/10/14(水) 13:44:01.55 ID:ssGc8zMA.net]
>>137
その配列のラッパークラスは作らんの?

148 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 13:51:26.20 ID:Z4l68xx0.net]
>>127
マクロ変数(定数?)とかグローバル変数とか生配列とか、旧態依然としたCの作法が好きなら無理にC++やSTLを使わずに自分の好きな道具を使えばいいんでないの?
今でも(そして恐らくこれから先も)変わらず使えるのだから。

自分の好みに合わないものを他人が嬉しそうに使ってるのが気に入らないの?

149 名前:デフォルトの名無しさん [2020/10/14(水) 13:54:48.00 ID:OK1/udlE.net]
配列が個数を持ってるなら
fill(配列, 値);
で良くね?

150 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 14:08:57.43 ID:lJFXTbVx.net]
>>141
いや、数学的ならむしろSTLより理解できる。



151 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 14:35:28.55 ID:fAfIBrSZ.net]
>>146
常に全要素ならな

152 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 14:38:31.07 ID:fAfIBrSZ.net]
> こっちはプログラミングのエキスパートだが。

にーしちゃ恥ずかしいミスしてたね、さっき
fill(dim, 2, 98, 0); //引数4個
fill(dim + 2, dim + 98, 0); //引数3個
fill(dim +2, 98, 0); //伝統的にはCでは、(中略)と書ける。 ←これw

153 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 14:39:14.81 ID:fAfIBrSZ.net]
引数4個と3個の違いは有耶無耶にしたいのかな?

154 名前:デフォルトの名無しさん [2020/10/14(水) 15:03:45.73 ID:d5S3+KHs.net]
GCC9で-std=c++2aが使えるんだけど…C++20です…これってさぁ…
実験的にサポートみたいな事行ってるけど、使ってもOKなの?
experimental supportって言ってるけど…みんなどうしてるの?

155 名前:デフォルトの名無しさん [2020/10/14(水) 15:07:19.79 ID:ssGc8zMA.net]
>>151
「腕に自信のある奴は無償デバッグ要員になってくれ」という委員会からのお願い
見つけたバグやあやしい挙動の個数に応じて名を上げることも出来る

156 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:14:57.44 ID:lJFXTbVx.net]
>>149
あなた、話の流れを理解して無いですよ。

157 名前:デフォルトの名無しさん [2020/10/14(水) 15:15:36.27 ID:d5S3+KHs.net]
C++17で行きます…17でも十分新しい…。

158 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:16:35.85 ID:fAfIBrSZ.net]
>>153
で、終点アドレスではなく個数にすると
引数が少なく済むの?

159 名前:デフォルトの名無しさん [2020/10/14(水) 15:37:35.37 ID:+cbHRaf/.net]
https://isocpp.org/std/status

160 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:41:12.49 ID:lJFXTbVx.net]
>>155
今回は、引数の個数は議題にはして無い。



161 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:45:10.45 ID:lJFXTbVx.net]
>>157
つまり「引数の個数が多くなるからSTLが問題」などとは全く言って無いということ。
別に個数方式にしても引数が少なくなると言うことではない。
引数の個数ではなく、コーディングする時の引数の記述量を減らせることが多い。
+演算子も使わなくて済むのでケアレスミスも減らせる。
またtopとbtmで重複する事を書かなくて済む。
そしてそれは安全性に繋がる。
なぜなら同じであるべきところを誤って異なるように書く可能性がなくなるから。

162 名前:デフォルトの名無しさん [2020/10/14(水) 15:51:28.70 ID:+cbHRaf/.net]
お前の考える正しいライブラリがSTL以上に使われるなら、お前の意見にも一理あるのかもしれないけど。

ここで見た分には、初心者が使い方わからんと騒いでるだけに見える。

163 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:53:12.69 ID:fAfIBrSZ.net]
>>157
いやいや、100に対して111の流れは引数の個数だよ

===== 引用開始 =====

100 自分:デフォルトの名無しさん[sage] 投稿日:2020/10/14(水) 06:46:30.43 ID:fAfIBrSZ [4/15]
fill(dim, 2, 98, 0); //引数4個
fill(dim + 2, dim + 98, 0); //引数3個

111 返信:デフォルトの名無しさん[sage] 投稿日:2020/10/14(水) 09:45:58.36 ID:lJFXTbVx [5/19]
>>100
>fill(dim, 2, 98, 0); //引数4個
これは違う。
インタプリタ言語ではこのようになってしまうが、伝統的にはCでは、
fill(dim +2, 98, 0); //引数3個
と書ける。

===== 引用終了 =====

しかもだよ、これインタプリタ方式とコンパイラ方式でどんな違いが出るの?
変に逃げ回ったり139みたいなプリティ発言するほど墓穴がでかくなるだけだぜ
ミスはミスで潔く認めたほうが被害拡大を防げると思うよ

164 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:54:50.74 ID:lJFXTbVx.net]
>>160
逃げたりとかじゃなく、あなたの言っている意味がこちらには伝わってないから
混乱が生じているだけ。
あなたの説明は言葉が足りて無いから。

165 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 16:07:49.07 ID:lJFXTbVx.net]
>>160
>しかもだよ、これインタプリタ方式とコンパイラ方式でどんな違いが出るの?
インタプリタ方式だと必ずそうなると言う意味ではなく、arr + 2
が「3番目の要素のアドレス」の意味で使えるのは、大体コンパイラ系の言語の仕様。
その意味で、
xxx(arr + 2,...) ではなく、xxx(arr, 2,...) のように書くのはインタプリタ言語
に多い書き方だから。

166 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 16:49:10.93 ID:fAfIBrSZ.net]
>>161
いや伝わってるよ
配列と個数で渡す方式と、始点と終点で渡す方式で
引数の個数に違いが出るという100におまえさんは反応してて
しかも引数の個数を減らす例を示そうとしてた(そしてミスった)

>>162
コンパイラ方式というよりCの影響を受けた言語ってことだね
そうでない言語では配列+整数はSYNTAX ERRORかvalarrayのような話で

167 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 16:53:34.15 ID:lJFXTbVx.net]
>>163
あなたの言っていることは、理解できないので議論を終えることにします。
逃げているのではなく、意味が分からないので。

168 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:07:55.33 ID:fAfIBrSZ.net]
結局、配列と個数で渡す方式が、始点と終点で渡す方式よりも
優位であることを示すのを諦めたわけだね

示せるわけがないという俺の予想どおりだわ

169 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:14:10.14 ID:lJFXTbVx.net]
>>165
いや、十分に示せているはずなのに、このスレでは頑なに理解して貰えないだけです。

170 名前:デフォルトの名無しさん [2020/10/14(水) 17:15:40.91 ID:+cbHRaf/.net]
「我はSTLを超える者なり!!」などと初心者が言い出してビックリしたわ。



171 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:32:06.99 ID:EoVZjJO9.net]
これだけくだらない問題に白熱してる時点でセンスがない

172 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:36:09.65 ID:fAfIBrSZ.net]
>>1

173 名前:66
で、配列と個数で渡すことで、始点と終点より引数の個数は減ったのか?
[]
[ここ壊れてます]

174 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:37:36.44 ID:RddNL28g.net]
だよね
どの話題に食いつくかでそいつの能力がわかる
このスレの老害はどうでもいいレベルの話を延々語る

175 名前:デフォルトの名無しさん [2020/10/14(水) 17:42:38.61 ID:ZV1nncqg.net]
>どの話題に食いつくかで

自称数学者の発想ですね判ります

176 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:48:04.39 ID:4qg33D8d.net]
131見るとわかるけど
コピペや置換する発想すらない人がstlの利点とか理解できるわけないし

177 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:55:52.69 ID:lJFXTbVx.net]
>>169
外国の人?
引数の個数が減るとは一言も言ってない。
引数の記述上の長さが減り、分かり易さや間違いにくくなるといっている。
さんざん同じ事を言っているのに、全く違うことを言ったことになってしまっている。

178 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:23:42.32 ID:lJFXTbVx.net]
機械翻訳して、長さと個数が混乱して訳されてしまっているのだろうか。

179 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:53:52.73 ID:qpMvVLdo.net]
>>147
数学で言う関数は関数型じゃないよ。
写像とか勉強したら?

180 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:16:14.41 ID:fAfIBrSZ.net]
>>173
> fill(dim, 2, 98, 0); //引数4個
> 98は個数だと認識して書いた。

間違いにくいとか、間違えやすいとか、
それはおまえさんの個人的なことじゃねえかよ

配列と個数で渡すのが、始点と終点で渡すことよりも
優位だというのは、おまえさん個人が間違いにくいってことか?

言うまでもないが、俺は間違えずにコード示してて
間違えたのはおまえさんだけだぞ
それを一般論として優位ということにはできんだろ



181 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:16:18.40 ID:qpMvVLdo.net]
この手の配列の話でrangeが出てこないのはなんで?
最近の標準には疎いけど、この手の問題のほとんどがboost::rangeで解決しない?

182 名前:デフォルトの名無しさん [2020/10/14(水) 19:18:22.41 ID:d5S3+KHs.net]
@std::list<Path>* pathListをソートするとします…。
Aどっかのメソッドは…void sort(std::list<Path>* pathList)で受けるとします…。
B内部で以下のようにソートするとします…。
pathList->sort([](Path& o1, Path& o2) {
if(o1.getFileName().compare(o2.getFileName()) < 0) {
return true;
} else {
return false;
}
});

このときに!Aメソッドで…void sort(std::list<Path>*& pathList)
としておかないと…なんか気持ち悪いんですが…
なんで参照の値渡しstd::list<Path>*だけで大丈夫なのかメモリアドレスまでは
僕は把握してません…参照の値渡しだけで行くだろうけど…なぜ大丈夫なのか説明できません…。

誰か…。

183 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:19:42.63 ID:fAfIBrSZ.net]
>>174
長さと個数の混同は「先頭アドレスを渡す」って前提で起きることだよな
dim + 2という例を示したら見事に思う壺にハマるやつがいてワロタ

184 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 20:10:37.92 ID:qrfIlgcS.net]
>>178
日本語でどうぞ

185 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 20:23:03.09 ID:j1TiW1+l.net]
伝統的なバッドノウハウ
「ニワカなやつほど語りたがる」
ID:lJFXTbVxのことね

186 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 20:37:36.49 ID:fAfIBrSZ.net]
俺も本当はもっとおとなしく話すつもりだったのに
エキスパートとかプリティ発言するから予定外にいじめっちゃうのを余儀なくされたのよ

187 名前:はちみつ餃子 mailto:sage [2020/10/14(水) 20:49:16.68 ID:+PdAwU8N.net]
Go や Rust でスライスを言語の基本要素として取り入れたのは
ポインタでやりくりするのが (少なくとも今となっては) あまりイケてない方式
という判断があってのことなんだろうな。

188 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 20:55:00.69 ID:j1TiW1+l.net]
ポインタこそが大事
ポインタこそが肝心
Cで一番大事なのはポインタ
C++は知らん

189 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 20:55:45.47 ID:z3Ys6y55.net]
>>178
俺はお前さんの文章が「なんか気持ち悪い」よ。
話し言葉もそんな感じなのか?

190 名前:デフォルトの名無しさん [2020/10/14(水) 21:04:32.42 ID:EoVZjJO9.net]
>>178
https://ideone.com/x1NTqd
std::list<Path>& pathList
でいいじゃん.なぜ
std::list<Path>* pathList
なんだ?



191 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 21:27:18.64 ID:eS9CcskG.net]
>>116
なんじゃそりゃ;;
>>116は周りが死ね言うたら死ぬんか…?

192 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 21:35:17.95 ID:4qg33D8d.net]
>>178
ポインタの値自体はコピーされるけどその指してる先は同じだから

193 名前:デフォルトの名無しさん [2020/10/14(水) 23:24:35.72 ID:ssGc8zMA.net]
>>137
aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx_NUM]

これのラッパークラスとかは作らんの?

194 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 00:28:14.53 ID:ecxFi3He.net]
begin, lengthでなくてbegin、endになっているのは
具体的に言えばNULL終端の文字列みたいなものにでもゼロコストで対応できるからでしょ
わかりやすさ〜とかそういう感覚的なもの以前の話として、
length案は共通インタフェースを定める目的にあってない
既に上に何人かが同じ内容を書いてるけどなぜわからんかな

195 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:29:04.51 ID:z3OAjGAN.net]
>>ID:+cbHRaf/
>>120には言い返して来ないんだなww

196 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 06:05:35.87 ID:qGtCPYoD.net]
>>187
で、おまえさんの周りには値引数にconstつけてるバカはいたのか、いなかったのか、どっちだ?

197 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 07:48:07.21 ID:8g5pkzoR.net]
初心者はぼくちんのコードさえ短くわかりやすくなればそれでいいしそれが正しいと考えがちなので
共通インターフェースの必要性とか重要性は理解以前に想像もできないんだよね
その辺を教え込むのはたいへんだ

198 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 08:40:54.84 ID:Rskl+IBz.net]
STLは共通インターフェースの策定の失敗例。

199 名前:はちみつ餃子 mailto:sage [2020/10/15(木) 09:24:37.63 ID:vnecXNks.net]
配列ではポインタがイテレータとして機能するし、イテレータとしての要件を満たしてもいる。
そうなるようにデザインされたのは自明だな。

ポインタに合わせて統一したのが全面的に良いとは言えないのかもしれないが、
イテレータの枠組みに配列やポインタを含まないデザインにするというのは
C++ の立場からするとありえない選択でもあるし、
要するに「仕方ない」としか言えんわ。

200 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 14:12:18.99 ID:kscRf0sZ.net]
autoないときはイテレータめんどくさかったけど今は別になあ



201 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 14:25:43.71 ID:btt8eLo1.net]
もうautoなしでは書けんわ

202 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 15:41:54.19 ID:qGtCPYoD.net]
catch(nested_exception& nx)
{
auto C2065_p = dynamic_cast<C2065_t*>(&nx);
auto C2146_p = dynamic_cast<C2146_t*>(&nx);
auto C2653_p = dynamic_cast<C2653_t*>(&nx);
auto C2672_p = dynamic_cast<C2672_t*>(&nx);
}

203 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 17:12:09.30 ID:lq1gR0YQ.net]
lengthなんて数行で実装できるじゃんw
自分用のテンプレに入れときゃ解決w

204 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 17:13:29.26 ID:ecxFi3He.net]
std::distance

205 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 17:23:04.67 ID:qGtCPYoD.net]
ワロタ

206 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 18:27:46.64 ID:ZxgioYKc.net]
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
↑この時点で手遅れレベルで腐ってるのは誰も指摘してやらないんだなw

>>192
> 値引数にconstつけてるバカ

お題スレで答えてるやつにおったわ
みんなに空気として扱われてたけど

207 名前:202 mailto:sage [2020/10/15(木) 18:29:24.72 ID:ZxgioYKc.net]
俺は>>187じゃなくて横からね
いちおう断っておく

208 名前:デフォルトの名無しさん [2020/10/15(木) 19:32:56.49 ID:o1whfqB0.net]
思ったほど落ちてなかった

209 名前:デフォルトの名無しさん [2020/10/15(木) 19:51:50.58 ID:o1whfqB0.net]
>>202
手遅れだからそっとしといた

210 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 20:52:33.99 ID:qGtCPYoD.net]
>>203
はいはい横ねー



211 名前:デフォルトの名無しさん [2020/10/15(木) 21:25:48.32 ID:+lHmSCSK.net]
エディタでは中核のデータであろう文字列の配列が
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
っていう名前で、しかもそれとは別に
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
みたいな、また別の文字列配列が存在する世界観なんでしょ

しかもそれぞれにどういうワケか
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx_NUM
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx_NUM
みたいな定数がdefineされている

それらの配列は
aXxxxXxxxXxxxXxxxXxxxXxxx_NUM
で統一されているわけではない

212 名前:デフォルトの名無しさん [2020/10/15(木) 21:33:12.16 ID:+lHmSCSK.net]
「変数名を長くすればSTLの書き方ではとても長くなるので、STLの書き方はダメです」
と言うためだけにわざわざ作られた長い名前だから、名前が長い

ダメと言うためにわざわざ作られたダメな例なんだから、そのリクツの中ではSTLがダメなように見えるのは、彼の中では当然だよ
だってダメになるように作られたダメな例だもん

213 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 22:14:19.51 ID:LO3W6bS9.net]
頭おかしいのがまた湧いてるな

214 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 05:15:42.21 ID:3AzgsKTP.net]
値引数にconstつけてても別にいいと思うけどね
コピーで渡してなおかつconstであることを明示したいなら
むしろconstで引数渡さないって言いはるのは思考停止のバカ

215 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 06:18:41.00 ID:y0b2R3Tf.net]
同意
自分はそれ思いつつも、文法上の、狭い関数内だけでのバグ抑止以上の価値は無いだろうと考えて、やってないけど
あえてやってる人が居てもバカにしようとは思わない

216 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 06:43:39.95 ID:5553rdQz.net]
>>210
仮引数は変更しないって前提で思考停止してるのはお前だよ
void fill(int* first, int n, int val)
{
while (n--) *first++ = val;
}
関数の定義を別の翻訳単位に分離したら
それこそ定義かくやつだけの問題で
const付けろ付けるなと騒いでも他人の仕事に口出すなってだけ

おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ

217 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 06:57:04.56 ID:3AzgsKTP.net]
>>212
関数定義について言ってるに決まってるだろ
変更しないっていう前提で固定してるわけじゃないし
妄想激しいね

218 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 07:10:15.57 ID:5553rdQz.net]
日本語でおk

219 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 07:21:08.18 ID:3AzgsKTP.net]
そうやって僕ちゃんが正しいんだ!
あいつはくそだ!
って一生逃げ回ってろカス

220 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 07:35:25.34 ID:5553rdQz.net]
捨て台詞にしちゃ迫力も何もねえなw



221 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 09:55:58.36 ID:6oF3ghE4.net]
>>211
同感。いうほど意味はないけどまあ悪いことではないよな、みたいな感覚

222 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 10:02:26.25 ID:hiR4Fq2K.net]
>>216
小学生が「やーい、おまえのかーちゃん出べそ」って言うのと似たような感じだな。
昭和の漫画の中にしか存在しないけどw

223 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 12:45:32.25 ID:5553rdQz.net]
絵に描くとこんな感じだなw
https://image.middle-edge.jp/medium/e5bfb87b4c39b4617142493862b64455.jpg

224 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 13:05:10.30 ID:E37X09wd.net]
今ゲーム開発に向いてるライブラリってなんですか?
これまでdxlibとsiv3dは使ったことありますが今の主流が知りたいです

225 名前:デフォルトの名無しさん [2020/10/16(金) 13:42:16.84 ID:CKS46Mg3.net]
UE4

226 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 13:45:36.97 ID:RKtFr9bS.net]
2次元で良ければ
ama損.co.jp
dp/4899774451
dp/4899775067
dp/4899774117

227 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 14:02:19.57 ID:oFLj+i8c.net]
EASTL

228 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 15:10:49.53 ID:y0b2R3Tf.net]
>>223
本気で言ってんの?

229 名前:デフォルトの名無しさん [2020/10/16(金) 15:15:51.65 ID:3AzgsKTP.net]
SFML

230 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 15:18:07.81 ID:3AzgsKTP.net]
SDL2 + OpenGL



231 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 16:22:38.33 ID:5553rdQz.net]
>>220
ゲームの内容による
Xウイングでタイファイターと戦うようなのもあれば
将棋やウォーゲームみたいのもある

232 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 17:53:05.24 ID:y0b2R3Tf.net]
>>227
dxlibとsiv3dに代わるものはあるかと聞かれてんのに的外れ
知ったか乙とでも言って欲しいのか

233 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 17:53:07.57 ID:gzagFIoh.net]
>>224
冗談で言ってるとでも?使ったこともないくせに。


俺はないよ

234 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 17:57:48.24 ID:8wgq9mv1.net]
>>220
C#に浮気してUnityという手もある。
といっても扱ったの6年前(大学生の頃)だから現ゲーム業界事情は詳しくないが。

てか、この手の質問がでてきたということは、現状の開発に限界を感じているということでは?

235 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 17:58:03.44 ID:y0b2R3Tf.net]
知ったかこいてマウント取るしか出来ないアホばっかだな
EASTLがレンダリングとか担ってくれるのかよ

236 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 18:00:30.56 ID:gzagFIoh.net]
冗談か通じない奴だな…

237 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 18:04:19.22 ID:y0b2R3Tf.net]
嘘つけ

>>220
てかDirectXスレかゲ制作技術板行った方がいいよマジで
ここに住み着いてるのはまともにソフト書き上げたことすら無い奴ばっかだから

238 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 18:14:08.55 ID:8wgq9mv1.net]
DirectXって...
ゲーム作る以前に、車輪の再発明して終わりそう。

239 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 18:14:09.24 ID:+fSNMqF3.net]
>>228
よく読めよ。
「主流が知りたい」だろ。
代わるものじゃない。

240 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 18:21:09.26 ID:y0b2R3Tf.net]
ライブラリの主流は何か=dxlib等に代わるもの、だと思ったんだが
まぁそもそもC++で一から作りたいのか勉強がしたいのか、単に趣味でゲーム作りたいのかわからんから
何とも言えないけど



241 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 19:19:09.58 ID:a9PKFHNt.net]
これ以上話も続かなそうだからボカすけど
俺はそれこそがすっごいアホっぽいと思う
C++で言うとイテレータのインクリメントをi++で書いちゃってるのより
必要も無いのにnewしてdeleteしてるのより
それよりももっと恥ずかしいと思う

242 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:16:18.37 ID:VgjMdtJh.net]
C++/WinRTやってる人いる?
ここの人達はあまりWindows好きじゃないかな

243 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:17:19.97 ID:YHv0PA1W.net]
winはやまほどいるだろうけどrtは全然おらんのじゃないか

244 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:45:00.91 ID:VgjMdtJh.net]
だよね
ちょっと自力でがんばってみる!

245 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:31:18.67 ID:P3PLPttw.net]
>>227
バカのくせに思慮深さを見せようとしてんじゃねえよw
結局オナニーしかできないんだな

246 名前:はちみつ餃子 mailto:sage [2020/10/17(土) 01:53:28.92 ID:EbfBq8oa.net]
>>220
dxlib や siv3d (OpenSiv3d) は十分に主流の一翼を担っているように思うが……。
C++ 的には dxlib は設計が古臭い感じはあるかな。

具体的なことが決まっているわけじゃなくて単に他にどんな選択肢があるのか
ということなら、私が知っているのはこれくらい。

https://github.com/altseed/Altseed
www.tilengine.org/
https://www.sfml-dev.org/
https://box2d.org/
https://godotengine.org/

Twitter とかで流れてきた話題の中で面白そうなのをちょっとブックマークしていた
という程度なんで具体的に利用してみたことはないんだが、
話題になる程度にはまともな完成度なんだと思う。

247 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:29:23.89 ID:U3N3/O+C.net]
>>228
235の指摘もそうだが
知ったかって「内容による」と言ったのが
お前さんにはそんなに高度な指摘に聞こえたのか?
手加減しきれねえ相手だなw

248 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:31:19.72 ID:U3N3/O+C.net]
>>241
バカ?
おまえさんにだけは言われたくねえな

昨日までいじめっちゃったやつだろ
悔しいそうだなw

249 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:31:47.44 ID:U3N3/O+C.net]
訂正 悔しそうだなw

250 名前:デフォルトの名無しさん [2020/10/17(土) 06:40:29.09 ID:P3PLPttw.net]
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
このあと逆に論破されて小学生みたいな煽りしてたなw



251 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:41:48.98 ID:P3PLPttw.net]
悔しかったら反論してみろ

252 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:51:39.36 ID:foE/glNf.net]
>>243
いつものアホだろうから相手したくないんだが
「内容によらない」と言われてんだよ気付けよ

253 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 06:53:17.86 ID:P3PLPttw.net]
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ

https://emotion-ai.userlocal.jp/documents/65ce7e112b0f132f4f46ce2e611994dc/result?nr=1
> 怒りの感情が強い文章です

論破されて怒っちゃったかな?初心者くん

254 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 07:23:58.19 ID:U3N3/O+C.net]
>>246
ねえねえ斉藤さん、どれのこと?
具体的なレス番とフレーズ教えてw

255 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 07:25:38.64 ID:U3N3/O+C.net]
>>248
うわ、内容によらないって主張か
なるほど、俺の手に負えない超アホだな

256 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 07:27:40.09 ID:lpP9BTeB.net]
将棋に向いてるライブラリと向いてないライブラリを具体的に言えばばいいんじゃないの

257 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 07:36:13.01 ID:foE/glNf.net]
いやいや、質問者が書いてるのはどちらも3Dの(2Dでも使えるけど)"グラフィックス周りの"ライブラリだぞ

258 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 07:46:35.47 ID:lpP9BTeB.net]
いや適当なこと抜かすから将棋に向いたゲームライブラリあるなら上げてみればって言っただけだけど

259 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 08:08:27.37 ID:U3N3/O+C.net]
>>254
ゲーム用である必要全然ないね
shogiguiとか中覗いたことある?

260 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 09:39:14.14 ID:XiAEb7KG.net]
なんだこのスレ



261 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 09:58:55.16 ID:U3N3/O+C.net]
マウント取ろうとして返り討ちに遭ったカブトムシがいるスレです

262 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 10:03:40.12 ID:foE/glNf.net]
>>255
ググってみたが既製のソフトやんけ
>>257
自己紹介乙ww

263 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 12:55:56.00 ID:6mBaBAeI.net]
C++のメンターは半年で精神を害してやめるか廃人になる

264 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 13:03:03.95 ID:rUSQx6JP.net]
そりゃお前さんの会社がブラックなだけだろ

265 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 14:30:06.82 ID:bl1AtnqD.net]
まあ江添みたいな輩といっしょに働いてたらメンタル壊れるだろうな。
まともに話ききやしねーし。

266 名前:デフォルトの名無しさん [2020/10/17(土) 14:47:43.15 ID:/Ip3Dsod.net]
奇貨居くべし

267 名前: mailto:sage [2020/10/17(土) 15:07:46.75 ID:fHznvt//.net]
>>261
>>259 をよく読め
>>259 は「メンター」と付き合うとメンタルが壊れる、と言っているのではなく
「メンター」自身がメンタルが壊れて、結果、メンターという存在が皆無になる、と言っているのだよ、事態はより深刻なんだ

268 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 16:52:45.52 ID:U3N3/O+C.net]
>>258
既成のソフト以外の何だと思ったの?

マウント取り損なったのが誰かは、誰の目にも明らかなので
安っぽいネットスラングで返しても無駄だよw

269 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 17:20:58.06 ID:l+Syhppg.net]
もはやC++でゲーム開発は向いていないのでは
今時型安全なんて時代遅れだよ

270 名前:デフォルトの名無しさん [2020/10/17(土) 18:39:57.56 ID:P3PLPttw.net]
>>264
ID:U3N3/O+C
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ

https://emotion-ai.userlocal.jp/documents/65ce7e112b0f132f4f46ce2e611994dc/result?nr=1
> 怒りの感情が強い文章です

論破されて怒っちゃったかな?初心者くん



271 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 19:10:46.71 ID:RsKDaYmq.net]
>>265
1つくらい正しいこと言えよ。
今でも重量級ゲームはC++が主流。rustに流れる可能性はあるけど
あとC++は型安全ではない

272 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 19:18:55.82 ID:U3N3/O+C.net]
>>266
アフィサイトのNGワード程度の「解析」に依存しちゃってる自分恥ずかしくないの?

273 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 19:39:08.06 ID:U3N3/O+C.net]
2回も繰り返しちまって可哀想にw

274 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:06:45.56 ID:P3PLPttw.net]
縁起悪いから黙ってろ バカが伝染る

275 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:20:21.84 ID:U3N3/O+C.net]
あっ、斉藤!!

276 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:24:53.10 ID:/XplsXfZ.net]
ごめんだけど、他でやってくれないかな。

277 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 22:54:56.13 ID:vimxgZ9f.net]
相談です。C++を完全に理解するにはどうすればいいですか?
pbs.twimg.com/media/EUH_eMWUwAAgsV4.jpg

278 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:06:18.54 ID:7I8BM+av.net]
神に近い存在になること

279 名前:デフォルトの名無しさん [2020/10/18(日) 00:28:03.87 ID:oU6L/1KQ.net]
大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】
https://foodfun.jp/archives/3490
誰でもカンタンにオンラインサロン・情報配信ができる便利アプリ【TOUKU(トーク)】が登場
https://prtimes.jp/main/html/rd/p/000000001.000061569.html
中学時代の車いす生活から、17歳で起業するまで
https://www.advertimes.com/20200130/article306925/
ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家
https://roboteer-tokyo.com/archives/14840
自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣
https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life
アプリの視聴率がわかる 高専卒起業家の独創力
https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/
1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー
https://sogyotecho.jp/glowship-adachi-interview/
まだ22歳の学生社長が得た、23億円の「使い道」 あの橋本環奈をCMに使うバイトアプリの雄
https://toyokeizai.net/articles/-/319511

280 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:40:34.70 ID:/Z/JZuKT.net]
twitterで
C++完全に理解した!
って呟けばOK



281 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 06:35:44.42 ID:e/dVAB4j.net]
コンパイラを実装してみれば嫌でもワカル

282 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 07:44:07.32 ID:+ySY8JLF.net]
そんな極端なキチガイみたいなこと言うな!
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい

283 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 09:07:32.28 ID:CqLBM1Q2.net]
>>273
この人達>>277>>278の言う事を真に受けるのなら、組み込み開発をやるといい。
アセンブラレベルでC++が理解できる。
コンストラクタ、デストラクタがどのようなタイミングで呼ばれるのか、グローバル変数、ローカル変数はどのようなメモリ領域を使うのか、ヒープ領域の挙動...経験を積むと自然にC++の細かい挙動が理解できる。

そういうミクロな話じゃない?
なら、常にC++の最新企画の仕様を調べよ。
入門書に書かれていない便利な機能が色々あるぞ。

そういえば質問内容は完全に理解したいだったな。じゃあ、どっちもやれ。

284 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:13:18.70 ID:e/dVAB4j.net]
完全に理解と型安全には正直ゴールがあるかどうか疑わしい

285 名前:デフォルトの名無しさん [2020/10/18(日) 11:52:18.14 ID:H1xH1BRx.net]
>>279
そういう話になるから結局C++じゃなくてCからやれって話になるんだよ
C++は有害

286 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 11:54:54.20 ID:CqLBM1Q2.net]
>>281
どこに有害要素があるのかわからん。

287 名前:デフォルトの名無しさん [2020/10/18(日) 14:45:22.41 ID:5IG+e1ti.net]
>>279
そうしてソフト構築能力皆無な
C++博士ができあがったのだった

288 名前:279 mailto:sage [2020/10/18(日) 15:23:40.89 ID:Erm+FeMo.net]
> そうしてソフト構築能力皆無な
> C++博士ができあがったのだった

まぁ、C++を完全に理解したところでっていうね。
そんな暇あれば別言語を学んだり、フレームワークの使い方を学んだりDDDやTDDとか学べって話だわな。

289 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 20:08:20.51 ID:347vI+AY.net]
オブジェクト指向プログラミングと言っても、各コンポーネントというかプログラムの最小単位は多くの場合手続き型で記述することになるよな?
どこからどこまでを「最小単位」と見なすか、という問に対する基準というかガイドラインを知りたいな(筆者の主観が混じるとしても)

290 名前:デフォルトの名無しさん [2020/10/18(日) 21:04:28.67 ID:oU6L/1KQ.net]
この時代に生きててSNS発信を頑張らないやつはアホだ。
https://www.youtube.com/watch?v=TPMNmuWQm_o
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc



291 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:05:46.61 ID:e/dVAB4j.net]
ソフトウェアの良い設計というのは
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス

292 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:10:04.50 ID:N2+RrN1t.net]
>>287
あらゆる仕事はスーパーマンがやれば全て解決という
結局何も言ってない空論

現場でマジこれ言ってるやつは求人にクリプトン星人と書いている
人事屋としての究極の無能

293 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:13:31.38 ID:OvLc2vD2.net]
>>285
正直言うと、当たり前のように使われる手続き型という言葉がピンと来ない。

オブジェクト指向におけるソースコードの適切な分割方法を知りたいってこと?

294 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:20:59.62 ID:OvLc2vD2.net]
抽象レイヤーから具象レイヤーまで順番に話を進めていく方が俺は好きだがな。
一言目で無能呼ばわりするのはどうかと。

295 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:26:52.52 ID:e/dVAB4j.net]
>>288
早くうまく書けた奴に次の仕事もやらせるのが一番弊害が少ない
理解や気づきの機会は外から与えることはできるが
それがどう理解や吸収につながるかとなると当人の資質や性向のファクターが大きいすぐる

296 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:36:12.84 ID:OvLc2vD2.n ]
[ここ壊れてます]

297 名前:et mailto: >>287

> ソフトウェアの良い設計というのは
> 結果的に破綻も漏れも無く抽象化できていればおk

そうだね。ただ、具体的にどんなノウハウを与えれば、>>288の言うスーパーマンを生み出すかってのが次の疑問だろうな。

自分はOOP、TDDあたりのノウハウが身につけば余裕だと思っているが。
[]
[ここ壊れてます]

298 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:42:13.49 ID:e/dVAB4j.net]
OOPは物事を整理する仕組みは提供してくれるが
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略

んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、

299 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:21:54.75 ID:OvLc2vD2.net]
>>293

> OOPは物事を整理する仕組みは提供してくれるが
> どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ

その通り。だからこそ、そのセンスを磨かせるためにTDDもセットで紹介してみた。
まず、自分の設計が正しいか妥当性確認する手段も無いと間違ったオブジェクト指向が身に付く恐れがあるからね。

結局のところ、個々のセンスを磨かせないと駄目だが...センスを磨かせる環境を整えるのはリーダーの役割だと思う。
何もない状態でセンスで何とかせよ、よりは改善が期待できるよ。

300 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 00:20:11.11 ID:lLBStDOZ.net]
コンパイラの都合というよりかはcとの互換性とランタイム速度優先のための仕様によるものだろう。
てかむしろもっとコンパイラの都合考えたらもう少しまともな仕様になっとるわ。



301 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 05:23:08.92 ID:f5AfjsGE.net]
スーパーマンはある種の天才で、体系的に天才を教育する方法はないと思う。特に今現在の教育は全体の平均値を上げる事に主眼を置いているから。

大多数がほどほど幸せになる方法としてある程度うまくいってたけど、極少数が全体に絶対的な影響を及ぼすソフトウェアの世界だと効率の悪さが目立ってくるよね。

天才を見つけておいて必要な時に協力してもらうしかないんじゃないかな。全てにおいて天才はいないし来てもくれないので、得意分野では天才的みたいな奴と仲良くしておくぐらいか

302 名前:デフォルトの名無しさん [2020/10/19(月) 11:06:36.21 ID:4f6/Swqm.net]
体系的に天才を教育する方法
ってのは実は簡単で、C++をやらせればいい

303 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 11:15:17.99 ID:8zry6OWB.net]
それは教育する方法ではなく
多数の中から天才を見つける方法なのでは?

304 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 11:37:24.11 ID:VFLM6HTy.net]
選ばれても来るかどうかは天才次第

305 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 12:11:42.92 ID:0OpHGeV7.net]
プログラムの才能のある人材を発掘する方法は、以前だとLispかHaskellをやらせるのが定番だったけど今はどうなのかね?

306 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 12:44:51.59 ID:QMGC8XAt.net]
まずクソ企業で天才が居座るメリット無くね?
誰かが頑張ってくれるだろうみたいな雑魚集団と仕事したくねーわ。

307 名前:デフォルトの名無しさん [2020/10/19(月) 13:49:59.16 ID:asy7wTux.net]
>>296
天才とは言っていない
ttp://equallove-2017.blog.jp/archives/24499215.html
ttp://equallove-2017.blog.jp/archives/24508935.html
ttps://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白

308 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 15:44:35.47 ID:99pu8OZG.net]
>>301
誰かが頑張ってくれるだろうみたいな雑魚がいない企業をおまえさんは知っているの?

309 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 20:56:03.32 ID:lLBStDOZ.net]
残念ながらGAFAでもその種の馬鹿はいる。

310 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 00:14:11.70 ID:0Qd32UHv.net]
君たち C++ の話をしろ



311 名前:デフォルトの名無しさん [2020/10/20(火) 03:00:21.68 ID:C47XLKZf.net]
deleteで解放しようとするとたまに落ちるバグがあるのですが
try〜catchで囲っても、やっぱ落ちます。
これって例外で処理することはできないんでしょうか?
それともやばいバグ過ぎてつかまえられないだけなのでしょうか?

312 名前:デフォルトの名無しさん [2020/10/20(火) 03:05:40.63 ID:U9bI1hKI.net]
投げない例外は捕まえられないのでは?

313 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:09:48.67 ID:C47XLKZf.net]
>>307
これじゃダメなんでしょうか?
すみませんC++よくわかってなくて…

try{
delete p;
}catch(...){
std::cerr << "error!" << std::endl;
}

314 名前:デフォルトの名無しさん [2020/10/20(火) 03:14:10.05 ID:U9bI1hKI.net]
>>308
pのデストラクタの中で何かが起きていて、そこで例外が投げられないから補足できないのでは?

それと経験的に、再現性の無いバグは、十中八九、未定義の記憶域を読むことで発生する。

315 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:23:38.12 ID:NaQDrxzK.net]
丼なスパゲティーコードをメンテしてるか気になる

316 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:27:44.66 ID:C47XLKZf.net]
>>309
デストラクタは何もないので
どこかでメモリ処理がおかしくなってるんでしょうね…
一旦、動くようにしてみたかったのですが、もうちょっと調べてみます。
ありがとうございました。

317 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 03:36:12.53 ID:NaQDrxzK.net]
そういうときに役に立つのがprintfデバッグだろ
どの工程で起こったのかある程度目星がつく

318 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:45:58.59 ID:C47XLKZf.net]
>>321
継承元の親クラスを何個も辿ってよく調べたら
コンストラクタの中で怪しいポインタにアクセスしている個所がありました。
おそらくこれが原因だと思います。
皆さん有難うございました。

319 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 07:34:58.90 ID:OBwoowsU.net]
デストラクタとdelete演算子はデフォルトでnoexceptなんで、
例外発生時点で異常終了してしまい、try〜catchじゃ捕まえられないそうだ。
https://cpprefjp.github.io/lang/cpp11/noexcept.html

320 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 07:48:57.86 ID:wzOsKsv0.net]
そういう問題じゃねえよ
不定のポインタは検出不能だ



321 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 08:40:05.01 ID:OBwoowsU.net]
いや、今回の問題の解決のために書いたわけではなくて、
>>308のように書いても無駄だと伝えるために書いた。
そのあたり明示せずに書き込んですまん。

322 名前:デフォルトの名無しさん [2020/10/20(火) 11:34:12.27 ID:pHiz9StD.net]
atexit()
exit()
で捕捉出来ないかな

323 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 11:51:22.81 ID:uu0FmVn9.net]
デバッガに頼るのは甘え
プロはprintfだけで正しくデバッグする!

324 名前:デフォルトの名無しさん [2020/10/20(火) 11:56:25.10 ID:pHiz9StD.net]
プロは logger 使うし
百歩譲っても使うのは fprintf の方

325 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:10:32.17 ID:wzOsKsv0.net]
printfが使える環境ならな
そうでない場面がごまんとあるから
選択肢は多いに越したことはない

326 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:21:42.91 ID:NaQDrxzK.net]
シリアルモニタくらいは用意できるだろ

327 名前:デフォルトの名無しさん [2020/10/20(火) 13:21:52.61 ID:vcQhkuUZ.net]
基本的にprintfデバッグの延長
制度化体系化されたprintfデバッグがログ取り

loggerはより高度なprintfデバッグであり、その基本がprintfデバッグになる
この変数を眺めりゃ万事OK という直感が涵養される

loggerの出力先が10万キロ離れたプリンタなこともある

328 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:23:45.82 ID:wzOsKsv0.net]
オシロ使ったりもする

329 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:26:30.76 ID:C+6cO9mm.net]
路地穴は使うよね

330 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 13:28:29.10 ID:56eYC1pE.net]
スペアナくらいは普通使うよね



331 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:24:10.56 ID:wzOsKsv0.net]
無線屋さん?

332 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:27:50.64 ID:Y3GT62kx.net]
C#を作ったアンダース・ヘルスバーグもデバッガのステップ実行よりもprintfを使うってインタビューで言ってたな

333 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 14:34:50.28 ID:kixGkAna.net]
尻穴は使うよね

334 名前:デフォルトの名無しさん [2020/10/20(火) 17:41:32.21 ID:AdA8N6MK.net]
C++23のdraftが公開されてた
wg21.link/n4868

335 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 17:48:19.32 ID:wzOsKsv0.net]
>>329
情報ありがとう

336 名前: mailto:sage [2020/10/20(火) 22:08:32.52 ID:glKVTYwZ.net]
>>300
C のポインタ、特に関数ポインタ、とか
リカーシブ、とかで十分でしょう

337 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 00:07:59.13 ID:HJxHMNRz.net]
尻カーブ?

338 名前:デフォルトの名無しさん [2020/10/21(水) 11:15:30.61 ID:xBgAWF1Y.net]
シッタカブリ

339 名前:デフォルトの名無しさん [2020/10/21(水) 11:18:26.05 ID:F4fghCXJ.net]
printfデバッグなんてあり得んけどな。

340 名前: mailto:sage [2020/10/21(水) 11:45:48.97 ID:SYSvovlW.net]
>>334
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね



341 名前:デフォルトの名無しさん [2020/10/21(水) 11:52:32.13 ID:xBgAWF1Y.net]
printf デバッグは完成後に printf の行を消すと動かなくなったりするω

342 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:15:19.02 ID:EPxGxCCv.net]
関数化やクラス化でプログラムを小さくするわけで、あんまり関係ないな
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下

343 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 12:41:52.63 ID:BgzupaSs.net]
デバッグOffして弊害残すヤツは動作の仕組み把握出来てないだけだろ
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才

344 名前:デフォルトの名無しさん mailto:sage [2020/10/21(水) 23:09:27.50 ID:oE8Yb73v.net]
非同期で動くブツ同士の通信はprintfデバッグ大活躍なのでは…
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル

printf消去忘れについては条件コンパイルを使えば良いし、
Ad-hocな追加ならいかに大量にやってもソースコード管理システムで安全に消すこともできるわけやし、

345 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 00:49:05.87 ID:VEHOj23m.net]
未定義動作踏んでるときとかにprintfを呼び出すことでたまたま動くようにできたりする
ということか

346 名前:デフォルトの名無しさん [2020/10/22(木) 10:43:36.11 ID:vPWH9GQz.net]
>本当に受け取ったのかがすぐワカル

buffer flush しないと判らんし
flush すると勝手に改行する環境とかあるし
そこまで便利ってほどでもなくね
nonbuffered しろってか

347 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 10:47:06.06 ID:ZfML18uZ.net]
ここまでの話をまとめると
やはりprintfデバッグが最強、ということですね

348 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:25:12.96 ID:QhFI+vyp.net]
#ifdef DEBUG
 #define PUTCHAR(a) (putchar(a), fputc(a, _fpDbg))
#else
 #define PUTCHAR(a) (putchar(a))
#endif
PUTCHAR(*ptr++);
みたいなことをやれば デバッグ時だけ*ptr++ が二回評価されて結果は変わってしまう。

349 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:29:38.65 ID:PrgepFj3.net]
>>343
インライン関数に置き換えられるだろ
少しは頭使え

350 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:30:03.14 ID:Pdn6awLx.net]
デバッグ関係ねーじゃん



351 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:31:48.09 ID:QhFI+vyp.net]
>>344
そんなことは当たり前。
IQが低い人と話すとこれだから困る。

352 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:34:55.42 ID:PrgepFj3.net]
>>346
わかってるならインラインで書けよ池沼

353 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:38:34.09 ID:QhFI+vyp.net]
>>347
駄目な例を敢えて書いたんだ。
どうしてそれが分からないの、あなた達には?
IQが高い人には駄目な例が単なる例として出されたのだと分かるのに
ここの人達にはそれがわからない。

354 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:39:39.22 ID:3l9/RVrp.net]
>>339
非同期なアプリでprintf使うとタイミングが変わることがあるから安心できんな
デバッガよりは遥かに良いけど

355 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:41:58.22 ID:QhFI+vyp.net]
>>336
「printf デバッグは完成後に printf の行を消すと動かなくなったりするω」
と書いていたが、>>340が指摘した理由だけではないので、
そうなる他の理由の1例を>>343で書いた。

356 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:45:00.97 ID:QhFI+vyp.net]
これが考える力なんだよ。
マスコミを含めて「知識知識」と言う人が多いが、生まれつきの頭が悪いと
>>344 >>347 のような馬鹿な発想しか出来ないのでどうにもなら無い。
俺に比べれば、おまえが池沼の癖に。

357 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 12:48:35.56 ID:t0UpjLw/.net]
マクロを使う必要性が全く感じられなくてリアリティがない

358 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 13:11:57.24 ID:PrgepFj3.net]
>>351
おまえ自分のこと頭おかしいと思わないならかなり進んだ病気だな

359 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 14:13:12.96 ID:+Chcwfvy.net]
>>353
精神病院に行け。

360 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 16:17:21.51 ID:t0UpjLw/.net]
C++の話しねえやつは出てけ



361 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 17:13:27.21 ID:Ztx90rC8.net]
C++ラーメン次郎うめえ

362 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 18:56:55.19 ID:N0tQIHiY.net]
>>350
たぶんみんなは
そりゃマクロ使えば何でもありありだろ
そんなことでドヤるとかバカじゃねーの
って思ってる…

363 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 19:00:31.57 ID:wCIm4hGG.net]
>>335
printfデバッグを肯定するとは
ロートルの吹きだまり感かなりある

364 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 19:08:50.28 ID:lftkiv5C.net]
printfごときで騒いでる方が精神いかれてんだろ。。

365 名前:デフォルトの名無しさん [2020/10/22(木) 19:11:08.49 ID:dQkQeqlj.net]
今はJTAGがあるので、そんなにお金がかからない。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。

366 名前:デフォルトの名無しさん [2020/10/22(木) 19:15:22.48 ID:dQkQeqlj.net]
お前たちは農民に戻れ。
ハイ解散。

367 名前: mailto:sage [2020/10/22(木) 20:52:46.17 ID:RiQFyYLu.net]
>>360
私のマザーボードの JTAG/IEEE1149.1 はどれですか?

368 名前:デフォルトの名無しさん [2020/10/22(木) 21:09:21.98 ID:dQkQeqlj.net]
>>362
OS開発の場合は、専用のボードを用いることを視野に入れる。
それが無理なら、中韓に任せて撤退するべし。

369 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 23:42:23.12 ID:PrgepFj3.net]
#ifdef DEBUG
 #define PUTCHAR(a) do{auto b=a;putchar(b), fputc(b, _fpDbg);}while(0)
#else
 #define PUTCHAR(a) (putchar(a))
#endif
死ねザコw

370 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 08:10:45.22 ID:DuAJkWLf.net]
センズリマクロ



371 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:27:51.26 ID:mEDgqyfG.net]
>>364
else節もコピーしろザコw

372 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:34:55.69 ID:wQpWPNJn.net]
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。

373 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:38:30.14 ID:DuAJkWLf.net]
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」

374 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 12:48:55.12 ID:wQpWPNJn.net]
inline関数や、>>364のやり方が分かった上で教師は言っている。
それとも、おまえらの通った学校の教師はそんなことも分からない
くらい程度が低かったのか?
どこの学校だよ。

375 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 13:33:06.99 ID:g1Zoxl1Q.net]
ここは教室じゃねぇんだよバカが
とっととキエロ

376 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 13:52:00.54 ID:DuAJkWLf.net]
俺が通った学校の教師か
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな

377 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 15:17:01.62 ID:vvEFmscd.net]
へー、Cにはマクロないんだ?

378 名前: mailto:sage [2020/10/23(金) 16:10:04.88 ID:HRhvOpQY.net]
>>372
#define マクロはありますが、lisp 様仕様マクロはありません

379 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 16:52:36.06 ID:GtGn5ZF1.net]
c++の文句をいって
cの話を延々はじめる
そしてどっちも言い尽くされた話

printfデバッグやってるじじいの特徴

380 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 16:57:39.47 ID:DuAJkWLf.net]
>>372
C++が世に出る前っていつ頃かわかってる?
その頃のCを化学のおじいちゃん先生がやってると思ったの?
おまえさんでさえK&R Cなんか使えるのか?



381 名前:デフォルトの名無しさん [2020/10/23(金) 17:12:38.69 ID:2f10zgGH.net]
DxLib は printfDx で printf 推奨ω

382 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 17:55:43.35 ID:vvEFmscd.net]
>>371 ではC++はまだ世に出てなかったからマクロの使い方は知らなかっただろうと言ってるのに
>>375 では化学のおじいちゃん先生がCなんてやってるわけないだろうと言っている

それではC++が世に出ててもその頃のC++なんておじいちゃん先生はやらなかったのでは。
だとすると >>371 はいったい何が言いたかったのか…

383 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:21:43.75 ID:DuAJkWLf.net]
>>377
同一人物なんだが君は何に見えたのかな??

384 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:22:37.35 ID:DuAJkWLf.net]
で、君はK&R Cは使えるのか?

385 名前: mailto:sage [2020/10/23(金) 20:23:29.32 ID:IQ0Nf1Vk.net]
>>379
K&R1 か K&R2 かを指定してください

386 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:32:42.02 ID:DuAJkWLf.net]
もちろん1よ
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは

387 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 00:28:14.62 ID:5I5noegP.net]
>>341
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い

388 名前:はちみつ餃子 mailto:sage [2020/10/24(土) 02:46:57.76 ID:yf0wmlMH.net]
非同期な処理を観察するってのは非同期な処理が「失敗しているかもしれない」のを見つけ出さなきゃいけないってことだよね。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。

信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。

389 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 06:18:58.62 ID:S/SsQhb2.net]
printfが再入可能でないってどゆこと? strtokみたいに状態を持つのか?

390 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:34:42.41 ID:H3Ix9ZgH.net]
スレッドセーフとリエントラントってどう違うの?



391 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:40:39.80 ID:VP+yyMyu.net]
単一スレッドでも再帰なんかで再入は発生しうる
関数内でクリティカルセクションなどを使ってスレッド同期するようにしていても状態を持つ作りだと同一スレッドからの再入で異常になることはある

392 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 08:44:50.93 ID:VP+yyMyu.net]
Cランタイムは通常スレッドセーフだよね
だから複数スレッドでprintfを読んだりerrnoを参照してもよい
Windowsの場合、_beginthreadで作成したスレッドはCランタイム安全、CreateThreadで作成したスレッドはCランタイム安全ではないとかいう話もあった

393 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 11:13:00.25 ID:aZOaF4i3.net]
>>385
今、リエントラント(再入可能)という言葉は余り聞かなくなっているが、
ハードウェアに密着したプログラムを書くときに、ハードウェア割り込みの
割り込みルーチンがまだ終わってないタイミングで、同じ割り込みが生じ、
同じルーチンが再帰的に呼び出されることがあり、そのような呼び出しに
対応しているものを「リエントラント」と呼ぶことがあった。
ただし、そのようなプログラムは複雑になりがちなので、ハードウェア
割り込みが生じ、割り込みルーチンがまだ終わってないタイミングで、
同じ割り込みを発生させる原因がもう一度発生しても、割り込みルーチン自体を
呼び出さないようにする手法が使われることが多かった、というか、
その様にプログラムすることが標準とされ、そのためにプログラマブル割り込み
コントローラなるものが、その役割を果たすモードを持っており、それが通常、
有効な状態にされていた。

394 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 11:21:13.53 ID:aZOaF4i3.net]
>>388
一方、単一スレッドプログラムの場合、mallocの中からmallocが再帰的に呼び出される
ことはそもそもない。printfも同様。
なので、複数スレッドが動作している場合でも、各スレッドにおいては、
mallocやprintfが再帰的に呼び出されることはない。
そして、mallocを作る場合、Heapに関する重要データを読み書きする時、クリティカルセクション
のようなもので囲って、1つのスレッドだけが読み書きできるようにするような手法が使われる。
この場合、その区間を実行しているのは、最大で1スレッドのみであり、複数スレッドが
同時に実行することはない。
もちろん、malloc自体は同時に複数のスレッドが呼び出しても良いが、malloc内部で重要データ
の読み書きが行なわれるのは、必ず1スレッドのみで、それ以外のスレッドは待機させられる。

割り込みハンドラをリエントラントにする場合には、このようなクリティカルセクション的な
やり方は絶対に使えない。
まず、割り込みハンドラは、実際に実行しているのは1スレッドと言えば1スレッド。
割り込み自体が、1コアしかなかったZ80などにおいても有った概念でもあるし、それは当然であるが。

395 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 12:26:35.65 ID:w2qFem8L.net]
おじいちゃん
スレタイ読もうか

396 名前:デフォルトの名無しさん [2020/10/24(土) 12:29:55.83 ID:+GevKgJx.net]
coutデバッグと言うべきってか

397 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 12:34:34.81 ID:UCFHvZt3.net]
>>388
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった

398 名前:デフォルトの名無しさん [2020/10/24(土) 14:30:45.75 ID:ZbhxKyMw.net]
ちゅうことはスレッドセーフなloggerが全部同じファイルにログを書き込むんだろ
これもうそのまんま出力に逐一印字させた方がいいんじゃね

399 名前:デフォルトの名無しさん [2020/10/24(土) 15:33:28.19 ID:H3Ix9ZgH.net]
>>391
いや、厳密にはstd::coutデバッグというべき(ドヤ

400 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:35:14.21 ID:LXBNuCv6.net]
printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ

もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな



401 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:37:01.80 ID:LXBNuCv6.net]
ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい

402 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 15:38:11.89 ID:cYR5fjBG.net]
保障にはならないが〜
実際にはたいていのケースで〜

こういうの一番困る

403 名前:デフォルトの名無しさん [2020/10/24(土) 17:06:18.74 ID:ZbhxKyMw.net]
printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる

404 名前:デフォルトの名無しさん [2020/10/24(土) 17:47:23.40 ID:H3Ix9ZgH.net]
非同期シグナル安全な関数のリストにprintfがない・・・
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html

405 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 17:57:44.41 ID:lGAQOfIr.net]
自前でロックすりゃいいだろ

406 名前:デフォルトの名無しさん [2020/10/24(土) 18:01:02.56 ID:H3Ix9ZgH.net]
printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?

407 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:10:47.63 ID:lGAQOfIr.net]
なら自前のprintf作ればいいだろ
標準に頼りきるバカが

408 名前: mailto:sage [2020/10/24(土) 18:13:44.58 ID:sM3RwuUT.net]
>>402
>自前のprintf作ればいい
こういう台詞は、その能力の欠けたものが得てして言いがちなことだよなあ‥‥と

409 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:32:15.74 ID:lGAQOfIr.net]
己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな

410 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 18:55:26.18 ID:W2/6It6m.net]
>>404
ワイらがジャップだとしたら
お前はいったい何なんだよ



411 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:34:38.35 ID:kvu4j0jg.net]
>>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw

412 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:40:13.77 ID:LXBNuCv6.net]
割り込みルーチンの中からprintfを読んだら危

413 名前:ッなのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;

OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
[]
[ここ壊れてます]

414 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 19:44:20.88 ID:LXBNuCv6.net]
割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート

415 名前:384 mailto:sage [2020/10/25(日) 08:15:28.48 ID:B8Qi0Gue.net]
聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・

416 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 08:36:53.97 ID:fEg6VUML.net]
stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、

417 名前:デフォルトの名無しさん [2020/10/25(日) 10:46:14.61 ID:zd7LSfWt.net]
printfデバッグでダメならputデバッグでいいじゃん

418 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:40:46.63 ID:luVqTFHx.net]
printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ

419 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 20:01:20.88 ID:9N87g439.net]
こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。

420 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:03:02.20 ID:1nczmGPR.net]
お金払われればやるよ



421 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:23:32.01 ID:2LDrYrw3.net]
金もらわないとデバッグしないの?
つまらない人生だね

422 名前:デフォルトの名無しさん [2020/10/27(火) 23:25:33.33 ID:IA9V1GzZ.net]
そんなに楽しい事ならお前がやれば?

423 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 13:38:51.49 ID:6icraQaZ.net]
やらないならクソみたいなこと言ってないで黙ってりゃいいのに

424 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:00:21.64 ID:a3TqMSUE.net]
普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前

お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない

425 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:20:56.34 ID:XBU5yUok.net]
1レスの中で矛盾していくスタイル嫌いじゃない

成果に対して報酬があるならお金のためにバグ潰す

時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない

426 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 14:50:59.10 ID:K+lW0Fsg.net]
いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね

427 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 21:57:28.94 ID:bY6aZzj9.net]
つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット

428 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 22:56:44.64 ID:a3TqMSUE.net]
ここってサラリーマンが多いのね

429 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 23:22:28.00 ID:58wSuA1P.net]
そんなん公然と拒否するか
0から作り直すかの二択だろ

430 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 05:18:26.87 ID:A02IsQiB.net]
>>421
そういう状況はママあるけど
> お金払われればやるよ
って言う状況とは違うだろ



431 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 08:31:38.61 ID:VBEUGOAK.net]
>>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ

432 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:25:24.71 ID:wtO1e/xm.net]
>>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。

433 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:03:30.35 ID:Wx+7ZgRN.net]
C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?

434 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:17:54.24 ID:V+g0QAOl.net]
まずPython処理系を書きます

435 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:26:39.96 ID:XbvTe/rK.net]
内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない

436 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 08:18:43.66 ID:ooe1U4VR.net]
つtransform & lambda

437 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 09:52:48.93 ID:5giIBuWJ.net]
std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });

きっとforのほうが読みやすくて速いと思う

438 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 10:04:53.11 ID:73xlUHi2.net]
あとはvalarrayとかな

439 名前:デフォルトの名無しさん [2020/10/30(金) 10:06:43.70 ID:uffCAw9U.net]
表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね

むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの

440 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 10:22:13.62 ID:73xlUHi2.net]
インタープリターよりは速いよ



441 名前:デフォルトの名無しさん [2020/10/30(金) 11:34:39.85 ID:7MkyV1Cp.net]
https://cpprefjp.github.io/reference/tuple/apply.html

442 名前:デフォルトの名無しさん [2020/10/30(金) 11:37:53.83 ID:7MkyV1Cp.net]
https://www.fluentcpp.com/2020/02/07/transform-adaptor-equivalent-in-cpp/

443 名前:デフォルトの名無しさん [2020/10/30(金) 11:41:09.18 ID:7MkyV1Cp.net]
>>433
ループ分解されて要素分コード増えてる可能性もあるな

444 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 13:24:53.40 ID:Z0VCec0D.net]
forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。

445 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 00:26:11.33 ID:T4Ek6w2r.net]
ヒエッ…、、OpenMPし放題…!

446 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:21:18.11 ID:iuijWT2g.net]
競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?

447 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:26:15.37 ID:Ncbqgsya.net]
>>440
それの速度が競プロで問題になることなんてないだろう。
そんなこと気にするよりアルゴリズムの計算量のオーダーを小さくするとか枝刈りをしっかりするとか有意義な方に頭を使った方がいい。

448 名前:デフォルトの名無しさん [2020/11/01(日) 15:26:18.66 ID:BdB3gM+x.net]
unsignedですか?

449 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:36:25.10 ID:f5GbRfBo.net]
simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない

450 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:38:18.92 ID:Lkejt9vc.net]
>>440
数値のビット数が解っているなら高速化できる



451 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:49:40.49 ID:Lkejt9vc.net]
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
return i>1?i-1:0;

452 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 15:50:59.41 ID:Lkejt9vc.net]
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
ちょっと間違えた
return i>0?i-1:0;

453 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:00:31.30 ID:Lkejt9vc.net]
>>440
elifのあとはなにを返すんだや?
モロに中途半端やないかいワレ

454 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:02:44.45 ID:h5xlMYDq.net]
つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:

455 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:10:40.93 ID:h5xlMYDq.net]
SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…

456 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:21:41.23 ID:PTqWSgE4.net]
>>440
アセンブラだったら、
 sub eax,1
 jnb lab1
 xor eax,eax
lab1:
 ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
 i = 0;
}
return i;
とか。

457 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 21:20:20.31 ID:f5GbRfBo.net]
クロック数は蛇足でしょ

458 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:07:30.49 ID:gRIt+Ld+.net]
減算が必ず実行されるのはもったいない

... and eax,eax
... jz f@
... dec eax
@@:
... ret

459 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:12:12.57 ID:gRIt+Ld+.net]
test ってあったかな...

460 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 23:32:16.35 ID:h5xlMYDq.net]
and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費

ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど



461 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:26:45.06 ID:dW4oDZpY.net]
そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら

462 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 01:48:22.41 ID:U5Xnw0i6.net]
sub eax,1
adc eax,0
でなんとかなんないの?

463 名前:デフォルトの名無しさん [2020/11/02(月) 14:18:33.78 ID:WhiKrslV.net]
>>450
一瞬でも < 0 になったらまずい環境なら
if(--i < 0) はダメ

464 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 15:41:23.80 ID:OFRBeKTl.net]
>>452
減算を行う場合の方が頻度が高いと予想されるので、>>450の方がその場合に
命令数が少なくなるので平均速度は速い。

465 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 15:44:36.12 ID:OFRBeKTl.net]
>>456
そのコードは凄い。

466 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 16:02:50.72 ID:sYYC+nm2.net]
>>456
キャリーちゃんか

467 名前:デフォルトの名無しさん [2020/11/04(水) 00:22:15.96 ID:eR5jspY1.net]
Macで環境構築どうすればいいですか
適当に記事あさればいいですか

468 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:32:44.91 ID:pJnXfGcc.net]
yes

469 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 08:22:43.71 ID:3PEz6xa2.net]
>>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。

470 名前:デフォルトの名無しさん [2020/11/04(水) 20:11:40.32 ID:X2fHUOCE.net]
自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。



471 名前:デフォルトの名無しさん [2020/11/04(水) 20:26:01.44 ID:X2fHUOCE.net]
464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。

472 名前:蟻人間 mailto:sage [2020/11/04(水) 20:30:16.22 ID:tdZ4i2Gl.net]
thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実

473 名前:フだと思う。 []
[ここ壊れてます]

474 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:50:15.92 ID:H9SHlq4g.net]
難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ

475 名前:デフォルトの名無しさん [2020/11/04(水) 21:35:20.66 ID:rY/M/1xY.net]
struct S1;

using V1 = std::variant<S1>;

struct S1
{
  std::vector<V1> m_v;
};

これ合法?

476 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 21:39:36.00 ID:occL3fQ7.net]
ダメ

477 名前:デフォルトの名無しさん [2020/11/04(水) 21:44:35.56 ID:rY/M/1xY.net]
主要3コンパイラでコンパイル出来るうえ
https://python5.com/q/djlpoyyw
紹介してる人が居る。

478 名前:デフォルトの名無しさん [2020/11/04(水) 22:56:42.61 ID:rY/M/1xY.net]
駄目な根拠わかりませんか?

479 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 00:49:04.74 ID:WV05kVNu.net]
>>468
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.

480 名前:デフォルトの名無しさん [2020/11/05(木) 01:14:10.93 ID:E+L4EB1M.net]
C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。

これはどう解釈すればいいのかな?



481 名前:デフォルトの名無しさん [2020/11/05(木) 01:20:36.91 ID:E+L4EB1M.net]
これが合法なら良かったんだけど、どうも無理っぽいな。

482 名前:デフォルトの名無しさん [2020/11/05(木) 01:46:23.37 ID:E+L4EB1M.net]
using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。

ってことでいいよね?

483 名前:デフォルトの名無しさん [2020/11/05(木) 01:54:08.91 ID:E+L4EB1M.net]
boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?

484 名前:デフォルトの名無しさん [2020/11/05(木) 02:27:49.98 ID:tM7hzUED.net]
>>463
ありがとうございます。
Mojaveあたりです。

485 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 16:04:48.24 ID:cCU0l/b0.net]
コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?

こんなん
: apple(apple)

486 名前:はちみつ餃子 mailto:sage [2020/11/06(金) 16:58:12.08 ID:O5a96eYY.net]
>>478
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。

487 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 17:39:09.77 ID:gsFmAuV5.net]
Foo::Foo(const Fruit& apple)
: apple(apple),
 banana(apple),
 orange(this.apple) // できない
{

}
が問題無いのか左様か、

いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…


488 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 17:53:59.86 ID:gsFmAuV5.net]
Foo::apple、Foo::banana、Foo::orangeではなくて
Foo::m_apple、Foo::m_banana、Foo::m_orangeとしておけば悩む必要は無い
ヘッダファイルでもこの順で宣言したとして、

Foo::Foo(const Fruit& apple)
: m_apple(apple),
 m_banana(apple),
 m_orange(m_apple) // できる
{

}
でおk

489 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 17:56:49.27 ID:24XfCTPm.net]
>>480
普通に出来るやで。 this->apple の間違いじゃろ。

メンバの初期化順は (初期化リストの順序と関係なく) クラス定義内でデータメンバを書いた順序なので気を付けてな。

490 名前:デフォルトの名無しさん [2020/11/07(土) 17:57:34.44 ID:CPm1qeuk.net]
this
javascriptのやりすぎで脳が壊れたか



491 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 18:00:03.51 ID:24XfCTPm.net]
>>481
名前を同じにしてもうたらまずいケースがあるやないけということを >>480 は言ってるので、
名前変えればいいよってのは的外れ。

492 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 18:13:54.67 ID:gsFmAuV5.net]
>orange(this->apple)
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳

493 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 18:30:43.14 ID:2NiwF/8v.net]
みなさまthx
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…

494 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 20:28:30.69 ID:CTlV0YTN.net]
>>485
いや、エラーだろ

495 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:09:33.18 ID:gsFmAuV5.net]
warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
やもーん

496 名前:デフォルトの名無しさん [2020/11/07(土) 22:24:32.33 ID:CdQvP3Xl.net]
みんなC++でなにしてるの

497 名前:デフォルトの名無しさん [2020/11/07(土) 22:24:57.26 ID:9rEAH6th.net]
polymorphic_allocator対応ですね。

498 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:55:56.65 ID:8rmSPqJO.net]
>>489
c++仕様のお勉強。マウントかますためだけにお勉強。

499 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:11:57.20 ID:yroa9NTK.net]
ジョークに聞こえるがまじでそういうやつがいるからな

500 名前:はちみつ餃子 mailto:sage [2020/11/07(土) 23:39:31.38 ID:24XfCTPm.net]
>>485
念のため規格の当該箇所を探してみたら this についてわざわざ脚注で書いてあったわ。
https://timsong-cpp.github.io/cppwp/n3337/class.base.init#12
初期化順序はくれぐれも気を付けんとあかんけど、this が駄目ということはないのは間違いない。



501 名前:デフォルトの名無しさん [2020/11/07(土) 23:42:39.92 ID:9rEAH6th.net]
おせーな。
5分で探して来い。

502 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 18:09:43.36 ID:FszncLid.net]
VC++って今でも最先端のシステムでも使われていますか?

503 名前: mailto:sage [2020/11/14(土) 18:57:11.05 ID:ovQs8svh.net]
>>495
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど

504 名前: mailto:sage [2020/11/14(土) 18:58:45.49 ID:ovQs8svh.net]
mfc42.dll
の内部バージョン違いに、ほとほと懲りたらしいです……

505 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:03:42.05 ID:liKT9ZZB.net]
あれはひどかったな

506 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:21:56.26 ID:IHUe5vhA.net]
>あれはひどかったな
ちょっなんで??
DLLにstd::vector<T>やstd::string<T>とか渡そうとした???

507 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:23:33.64 ID:liKT9ZZB.net]
仕様が違うものを同じファイル名にするなって話
ISO/IEC14882のライブラリは全く無関係

508 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:25:17.74 ID:IHUe5vhA.net]
手製DLLへのデータ渡しににはchar[]とか基本型onlyとして
CRTをスタティックリンクしたらランタイムのインストールすら不要
で完全解決…!

全要素手製でコントロールできればの話ではある


509 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:37:00.66 ID:liKT9ZZB.net]
なんか話になってないな
つまらんからやめる

510 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:41:20.95 ID:wQlu6eHI.net]
std::string<T>て



511 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 19:56:02.78 ID:IHUe5vhA.net]
CRTではなくてこの場合MFCをスタティックリンクしたらやったスマンコ、

512 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:36:52.05 ID:YXN+C+qx.net]
>>496
ありがとうございます

513 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 12:45:20.15 ID:z250o8Kw.net]
VC++ってことはプラットフォームはWindows固定か
Windows前提ならC++使い続ける理由は特にないね

514 名前:デフォルトの名無しさん [2020/11/15(日) 14:27:41.73 ID:1NoBqfO6.net]
MFCなんか使うからだろ
自己責任

515 名前:デフォルトの名無しさん [2020/11/15(日) 15:39:12.99 ID:ZF6xjL9s.net]
webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?

516 名前:デフォルトの名無しさん [2020/11/15(日) 16:01:31.41 ID:fUqPXTtq.net]
ツールはReactかVueですね。

517 名前:デフォルトの名無しさん [2020/11/15(日) 16:32:14.80 ID:U+/Dwi3J.net]
マルチ禁止

518 名前: mailto:sage [2020/11/15(日) 21:02:27.25 ID:XnBy/n8J.net]
>>510
そのマルチポスト禁止っていうのは fj の時代ならまだしも、2ch に当てはまるのですか?
マルチポストとクロスポストの違いはなんですか?

519 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 21:29:20.86 ID:UQYtdYHl.net]
自分の頭で考えることを放棄したマニュアル人間

520 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 21:57:12.59 ID:9LlY7wvz.net]
いまは2chは無いんだよおっさん



521 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 22:32:36.77 ID:UQYtdYHl.net]
くだらねえ突っ込みだな
それで誰かはっとする奴がいるとでも思っているなら
どうしようもねえバカ野郎だ

522 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 23:02:36.34 ID:QB7zB470.net]
なんにせよスレチなんで

523 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 23:22:10.25 ID:AQ/HY5jp.net]
>>511
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ

524 名前: mailto:sage [2020/11/15(日) 23:35:29.19 ID:XnBy/n8J.net]
>>516
確かにその感情は理解できます

525 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:15:05.39 ID:tkpwZn9D.net]
>>508
windowsだけで動けば満足ならメモリ読み書き関連はwinapi
デバッガ、逆アセ関連は pythonによるバイナリ解析技法 とかそれに似たような本読めば少しは載っていると思います。

526 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 04:42:45.86 ID:tkpwZn9D.net]
スレを全く読まないで反射で答えてしまいました。
今気付きました、すみませんでした。

527 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 06:44:11.49 ID:OL16ghBV.net]
>>516
心が狭い、というかてめーの都合だろそれ
勝手にイラついてろよ、こっちにゃ関係ねえわ

528 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 07:50:58.47 ID:u3jXok4q.net]
>>520
マルチするのはお前の都合だろ。人の時間を無駄に使わすな

529 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 07:59:26.89 ID:OL16ghBV.net]
互いにてめーの都合だからな
知らん馬の骨に命令すんな
何様のつもりだ

530 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:01:26.23 ID:QRq3yxwv.net]
時間を無駄に使うって>>516みたいな話?
他で解決済みだったら無駄になるって意味がよくわからん。回答したらちゃんと感謝してほしいとか?



531 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:05:45.08 ID:OL16ghBV.net]
ここは技術板なのに
クロスポストできるシステムを作ろうともしない
フリーライダーが吠えてるだけだ

532 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 08:26:08.12 ID:GdRLcc7O.net]
bool GoToHell(bool gotoTravel, bool gotoEat)
{
return (gotoTravel || gotoEat);
}

533 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 09:04:54.68 ID:T8j9su4c.net]
>>522
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw

534 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 10:24:06.29 ID:OL16ghBV.net]
>>526
だからどうした?
ぐうの音も出なくてそんなくだらんことぬかしたか?

535 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:03:12.40 ID:2ijHHLJY.net]
ぐう😪

536 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:23:44.07 ID:hTDmnJOp.net]
腹ペコかよ

537 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 11:36:22.45 ID:OL16ghBV.net]
勝負あったな
これからもマルチであろうが何であろうが
どこにどんな投稿をしようが口出しは無用だ
収穫ゼロでご苦労だったな

538 名前:デフォルトの名無しさん [2020/11/16(月) 12:57:31.91 ID:sF1WJXNT.net]
仮に百歩万歩譲ってクロスポストの機能が無いからマルチを許すとしても
マルチ投稿にはオリジナルのスレとレス番へのリンクの同時投稿を義務付けるべき

539 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 13:00:20.03 ID:OL16ghBV.net]
義務違反したらどうなるんだ?
実効性のない俺ルールを勝手に吠えてろセンズリこき野郎

540 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 13:07:05.30 ID:BvdXplQc.net]
義務ではないよ
答えの付かない質問だけが残ってるのって寂しくない?
質問に答えが付かないって認識が定着しちゃうとコミュニティの衰弱にも繋がる
悲しいね



541 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 15:15:24.81 ID:OL16ghBV.net]
どう書けば回答が付きやすいかなんて
みんなそれぞれ考えてることだ

俺様が考えたベストな方法なんて誰も興味ねえんだよ
コミュニティの衰弱に繋がるキリッだっておバンバン

俺様が自分の頭で考えてるのはまだマシなほうで、
fj時代で頭の更新が止まったままの化石か
古代遺跡から発掘した碑文に洗脳されたバ…若者か知らんが
おおかたそういう手合いのマニュアル人間だろどーせ

542 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 16:33:15.96 ID:MWCEXPaa.net]
誰か教えてほしい。データベースの基本中の基本だと思うけどよくわからんです
数万の部品の名前があるとして簡単にa,b,c,d,eとする
すでに、c,b,a,eと登録されているところに新たにdを登録するとき、順番も大事で、
d,c,b,a,eとなります
ここで、cを削除したいとき、この順番だけで並んでいると数万のデータをひとつずつ一致確認していかなくてはいけないので
めちゃくちゃ時間がかかる。よってソートして順番もひもづけした
a4,b3,c2,d1,e5というのを作っておいて、cを削除するときはここから2分探索でcは2番目というのがわかるのでd,c,b,a,eの2番目のcを
削除するのと同時に、a4,b3,c2,d1,e5のc2も削除するとこちらはa4,b3,d1,e5となってしまう。でもこちらで欲しいのは
a3,b2,d1,e4で、つまり、2以上の数字は全部マイナス1して回らないといけなくなって、ここにまた時間もかかってしまう
これは新しいデータを登録するときも同じ原理でプラス1しないといけないです
もっとスマートないい方法はないでしょか

543 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 17:09:54.39 ID:OL16ghBV.net]
a4,b3,c2,d1,e5
↓わざわざこんなことしなくていいと思う
a3,b2,d1,e4

a4,b3,c0,d1,e5 さらには
43015 でいいじゃないか

544 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 17:40:46.63 ID:hTDmnJOp.net]
データベースは空き時間にデータをソートするからな
登録したてのデータはライトバックデフォだろ
で、参照数の多いデータを頭に持ってくる
木というかハッシュを何個かに分けて参照数の差で管理すればやり易い

545 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 18:17:01.54 ID:uQizIpoB.net]
そもそも既製RDBを使う話?それともデータベース的なものを自分で作る話?
そこハッキリしないと平行線だぞ

546 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 18:43:02.87 ID:MWCEXPaa.net]
>>536
では、
d,NULL,b,a,e
a4,b3,c0,d1,e5
としたあとに、新しいデータda(dとeの間)が来たとき、順番は
da,d,NULL,b,a,e
となりますが、ソートの方は
a4,b3,c0,d1,da??,e5
はどうなりますか?逆順にすればいいという話もありますがもっと本質的にいい方法はないかと
>>538
自分でプログラミングする話です
C++なので、アドレス参照の*x や**x みたいのを上手に使って出来ないかなあって

547 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:00:52.03 ID:uQizIpoB.net]
単に順序の管理用と名前検索用の赤黒木かなんかを作っとけばいいだけの話じゃないの?
違うの?

548 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:00:58.93 ID:Jgt25IWR.net]
例えば
map<id,parts> master; // パーツマスター
list<id> seq; // パーツの並び
map<id, list<id>::iterator> lookup// 各パーツのseq中の位置の参照テーブル
ってしておいて、seqに突っ込んだ要素はlookupに参照用の登録をする。

549 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:32:53.88 ID:Z6yFFWiy.net]
>>540
そう言うことやね
そもそも配列で要素削除したら詰める処理にめっちゃ時間かかるし

550 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 19:36:29.66 ID:oSwqK6E+.net]
>>535
「間に入れる」という操作が少ないのなら、ソート用のシリアル番号を項目に用意する。
頻繁に挿入操作するとしてもシリアル番号を有理数化して調整すればいい。



551 名前: mailto:まあ回答は無理でしょうが… [2020/11/16(月) 20:21:10.58 ID:K6OrqUDY.net]
>>537
RDBS はデフォではソートなんかしないし、ソートされたデータが欲しかったら INSERT/UPDATE/DELETE 時にすでにインデックスを張っておくように、あらかじめわざわざ指定するものだと思いますが
空き時間にバックグラウンドでソートする DB なんて聞いた事がないですね
よろしかったら、そういう DBS が何か教えていただけませんか?

552 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 20:33:56.43 ID:hTDmnJOp.net]
ソートじやねぇ
デフラグだ

553 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:12:03.78 ID:BvdXplQc.net]
>>544
ソートという言い方はちょっとおかしいけどそれに近いことをRDBはしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね

といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ

554 名前: mailto:sage [2020/11/16(月) 21:16:37.23 ID:K6OrqUDY.net]
>>546
コメントありがとうございます!
でも「インデックスを再配置する」タイミングは、やっぱり update/insert/delete のタイミングなんじゃないでしょうか?

555 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:25:44.06 ID:BvdXplQc.net]
充填率100%ならトランザクション中にリアルタイムで再配置するしかないけど
充填率100%未満ならその場でインデックスを再構築したりはしない
最近のRDBは行バージョンに対応してるからトランザクションログさえ書ければガンガンいくよ
実データファイルの書き換えは後回しにしても整合性保てるので

556 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:33:03.21 ID:hTDmnJOp.net]
だからそれがライトバックだろバカもんが

557 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 21:34:06.52 ID:OL16ghBV.net]
>>539
フルスペルからエントリ番号を引ける辞書か数学関数があればいいだろ

558 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:10:00.49 ID:2ijHHLJY.net]
エネルギー充填率120%!!

559 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 00:16:25.08 ID:UNFUL2Kr.net]
主キーでB-treeを構成する
PostgreSQLは明示的にバキュームする(B-treeの調整だけではないが

ところでB-treeってなんですか(・∀・)?

560 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 12:40:30.03 ID:PuHDpULa.net]
二分木、binary tree

b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い



561 名前:はちみつ餃子 mailto:sage [2020/11/17(火) 12:52:49.72 ID:lifPo1s+.net]
B木 (B-tree) は二分とは限らないよ。
ところでこのBはバランスのBかと思ってたんだけど
考案者とか関連会社の頭文字という説もあるみたいだね。

562 名前:デフォルトの名無しさん [2020/11/17(火) 13:16:51.60 ID:XfP96roT.net]
BinaryかBalanceかどっち?

563 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 13:40:13.56 ID:LFLSoNm5.net]
binaryじゃ二分になっちまうから違うな

564 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 13:40:16.49 ID:KFJ2cj0W.net]
発祥はわからんけど今となってはBalanced/Balancing Treeだろうな
日本語訳も平衡木だしね

565 名前:デフォルトの名無しさん [2020/11/17(火) 17:31:51.25 ID:gGBQNTu8.net]
定期的に最小完全ハッシュ関数を求めて置き換える。

566 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 19:20:00.69 ID:Tiv5/dm/.net]
B-Treeが平衡木に分類されることはあってもイコールじゃない。
平衡木というと代表的なのはAVL-Treeとかじゃね。

B-Treeの語源というと俺は broad を推したいが。
Bayer and McCreight never explained what, if anything, the B stands for: Boeing, balanced, broad, bushy, and Bayer have been suggested.

567 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 21:21:24.35 ID:LFLSoNm5.net]
完全ハッシュって、衝突が起こりえないってこと?
ハッシュの使い方の基本がわかってねえやつが考えることの典型だが

568 名前:デフォルトの名無しさん mailto:sage [2020/11/17(火) 23:48:10.65 ID:UNFUL2Kr.net]
PostgreSQLのハッシュは衝突したら線形リストに収める的なやつだったはず…

569 名前:デフォルトの名無しさん [2020/11/18(水) 10:04:24.66 ID:fvU2iODC.net]
完全ハッシュ関数は簡単に作れる。

auto hash(auto a) { return a; }

最小であることが重要。

570 名前:デフォルトの名無しさん [2020/11/18(水) 10:11:34.00 ID:fvU2iODC.net]
constexprでコンパイル時に最小ハッシュ関数が静的に解決される。

これぞ神言語。



571 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 10:11:37.19 ID:hkPPdx4I.net]
まあIdentityも定義には嵌まるかな

572 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 10:57:38.49 ID:+eOywhWF.net]
>>562
ぷw

573 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 13:28:57.32 ID:oGkGNlvA.net]
確か、ハッシュが衝突した所を、h-tree に納めるものもあったような

Ruby のハッシュでは、データ数と共に、バケット数を増やしていく。
バケット数は、2 の累乗の次に現れる素数。
2^n + a, 2 <= n <= 30

8 + 3 = 11
16 + 3 = 19
32 + 5 = 37
64 + 3 = 67
128 + 3 = 131
256 + 27 = 283
512 + 9 = 521

データ数が、バケット数の5倍を超えると、ハッシュが再構成される。
再構成時には、極端に遅くなる

例えば、11 * 5 = 55 だから、データ数が56 個になると、バケット数が19 になる。
19 * 5 = 95 だから、データ数が96 個になると、バケット数が37 になる

574 名前:デフォルトの名無しさん [2020/11/18(水) 16:06:44.89 ID:fvU2iODC.net]
C++も結構風呂敷広げる系言語だけど、Haskellには負けてしまうなあ。

575 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 20:57:21.43 ID:v8HWKopj.net]
ハッシュ関数とハッシュテーブルの話がごっちゃになってる

576 名前:デフォルトの名無しさん mailto:sage [2020/11/18(水) 21:45:14.61 ID:m5UtHFcK.net]
わてほんまによー言わんわ♪

577 名前:デフォルトの名無しさん [2020/11/18(水) 21:47:58.74 ID:fvU2iODC.net]
上げ。

578 名前:デフォルトの名無しさん [2020/11/18(水) 21:51:25.76 ID:fvU2iODC.net]
完全最小ハッシュ関数は、Nginxで使われてたんじゃなかったかな。
前に調査した時見たと思うわ。

579 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 16:43:55.07 ID:WhXHGWda.net]
Windows環境のVC++2010でマクロプログラムを作ってます。
CapsLock状態をプログラム上から直接変更する手段はありますか?
最悪仮想キーコードでシフト押下、Caps押下、離す、離すの4手で実現はできるのかなとは思いますが

580 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 16:49:03.01 ID:JmNduuKf.net]
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setkeyboardstate



581 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 17:05:17.17 ID:KM6YfWXc.net]
>>572
できなかったと思う
できたとしてもやるべきではない
CapsLock状態かどうかを調べることはできる
プログラムでAを入力するときCapsLock状態ならaを送る
CapsLock状態でないならShift+aを送る
なんてことをやったことある

582 名前:デフォルトの名無しさん [2020/11/20(金) 17:48:13.50 ID:2Xtms9kk.net]
質問するときくらい、あげていきましょうや。

583 名前:はちみつ餃子 mailto:sage [2020/11/20(金) 18:07:40.81 ID:QATBBV0x.net]
専用ブラウザでお気に入りスレを巡回するし、
スレ一覧を見るときもタイトルで検索かけるから
上がってるか下がってるかなんて見てないな。
見てる人ってそんなにいる?

584 名前:デフォルトの名無しさん [2020/11/20(金) 18:39:27.79 ID:2Xtms9kk.net]
専ブラってなんすか?

585 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 20:09:54.73 ID:8HnFa960.net]
むかし2chが検索からガンガン流入してた時代は意味あったけど
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の5chではほとんど意味ない文化だなage/sage

586 名前:デフォルトの名無しさん [2020/11/20(金) 23:20:16.49 ID:2Xtms9kk.net]
だったら、上げていきましょうや。

587 名前:デフォルトの名無しさん mailto:sage [2020/11/20(金) 23:36:24.04 ID:tRQ7sQvu.net]
だが断る

588 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 08:35:59.33 ID:beyH0yOT.net]
LINEで既読スルーがどうたらと一喜一憂してるバ…若者をうらやましいと思ったことは只の一度もない
やたら何たら離れしまくり四六時中ゲームしかしなくなる廃人化傾向は嘆かわしい限りだ
老害で結構だ、言わせておくさ てめーらより人生楽しいぜ

589 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:06:30.33 ID:gA6oFLIj.net]
べつに老害とかいうてませんがな
たんじゅんに皆年寄なりましたな、いうてるだけで

590 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:09:50.16 ID:beyH0yOT.net]
ワード1つに噛みつく以外に言うことが何もねえってことか
少しくらいあれよ、これ以上絶望させてくれるな



591 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:12:51.55 ID:kTU0dCRJ.net]
おじいちゃん、こんなクソスレで何をそんなに息巻いてるのよ
お体に障りますよ

592 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:14:58.42 ID:R3A7NkyC.net]
>>581
マ板の40代スレに変なポエム書いてる奴がいたが、同じ臭いがする

593 名前:デフォルトの名無しさん mailto:sage [2020/11/21(土) 09:18:51.83 ID:beyH0yOT.net]
ゴミばっか
ここム板だぜ
らしい話しろよ

594 名前:デフォルトの名無しさん [2020/11/21(土) 13:02:47.48 ID:t4UXk0gp.net]
したがって、上げていきましょうや。

595 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 01:10:01.54 ID:mIY2Yy/p.net]
>>573-574
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えがCapsLock状態なので、そこを制御したかったんですよね。
Shift押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます

596 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 14:11:14.57 ID:3aKbbyVM.net]
RTTIってどんな原理で実装されてるんですか?

597 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 14:26:33.97 ID:KUPbiAdd.net]
>>589
仮想関数と同じように、クラスごとにコンパイラがデータ生成して個々のオブジェクトから辿れるように埋め込む。

598 名前:デフォルトの名無しさん [2020/11/22(日) 14:33:39.46 ID:gdEBKvV8.net]
どんな高度なことをやってるように見えてても結局はC言語で実装してんの?

599 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 15:03:04.61 ID:h+lYxto0.net]
>>591
CPUが直接理解できるのはマシン語のみ。
そのマシン語に一対一に近い対応関係があるのはC言語。
だからどんな高度なことをやっているように見えてもほとんど全ての場合が
C言語で書ける。

600 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 15:51:20.82 ID:o/Js7Lov.net]
>>590
RTTI有効にしたらパフォーマンス落ちるっていうのをみたことあるけど
ただデータ(プログラム領域?)が増えるだけなら落ちなくない?



601 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 17:19:17.03 ID:LCd15qeF.net]
仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない

602 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 17:29:03.52 ID:2nm5SjZ0.net]
多態するならデストラクタが仮想のはずだから事実上は追加コストないんだよね

603 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 20:02:41.94 ID:L/uQBHM9.net]
ダイナミックにやりたいヤツ用

604 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 20:07:55.27 ID:BvpndlWI.net]
>>593
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。

605 名前:デフォルトの名無しさん mailto:sage [2020/11/22(日) 23:24:02.57 ID:LCd15qeF.net]
RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る

606 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 06:50:21.21 ID:SrPyOTC6.net]
nested_exceptionで普通に使う

607 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 06:52:19.04 ID:SrPyOTC6.net]
単純にexceptionで捕獲した例外をsystem_errorとかで場合分けとかね
catchをオーバーロードするよりこっちのほうが融通が利く

608 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 21:12:23.11 ID:gAkTmGSN.net]
そんなコストを気にするほどランタイム速度要求の厳しいソフトなんかお前ら書かんだろ

609 名前:デフォルトの名無しさん mailto:sage [2020/11/23(月) 22:39:23.22 ID:ryjND0ia.net]
多重ループの中のif文一個でも結構変わるしなあ

610 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 01:19:31.94 ID:IV+MkG/a.net]
>>602
確かに変わる。
大量のテキストファイルをパースする際の字句解析など、
今でもコードの1クロックの差で体感速度が現実に変わってくる。



611 名前:(u_・y) mailto:sage [2020/11/24(火) 16:34:51.81 ID:qTKKRlIf.net]
(u_・y)最近C++で作られた出来の良いアプリって存在するの?
(u_・y)もう世の中のほとんどがブラウザーとそのブラウザー上で動作するスクリプトで完結してる気するんだけど

612 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 16:55:08.02 ID:p7TzmKlx.net]
そのブラウザがC++製だろうがwwwww

613 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 17:52:32.94 ID:18TBNzSS.net]
サーバを増やすんじゃなくて、時代はもうクラウドなんですよ!

614 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 18:12:54.60 ID:zMf11be4.net]
やめなよ

615 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 21:44:11.65 ID:+m+UL9CA.net]
>>603
どんなストレージ使ってんの? []
[ここ壊れてます]

617 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 23:18:43.39 ID:EBaS3Lgi.net]
何色のパンツはいてんの?w

618 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 14:30:01.10 ID:yb7Sfyoy.net]
やめなよ

619 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 18:03:06.30 ID:GXxyf9BA.net]
噂によると、メモリモデルに辟易していた、りーぬす先生が、NEW見た瞬間メモリモデルこれでよくねー?病にかかったと聞いた。

620 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 20:24:34.76 ID:OwYFbtHk.net]
あんなにC++はfuckでshitだって言ってたのに?



621 名前:デフォルトの名無しさん mailto:sage [2020/11/25(水) 20:27:03.84 ID:0vRedS2N.net]
>>611
抜かせや証拠出せ

622 名前:デフォルトの名無しさん [2020/11/26(木) 20:31:56.32 ID:rfhyh3I2.net]
今からC++勉強しようと思ってるんだけど江添本って評判いいの?

623 名前:はちみつ餃子 mailto:sage [2020/11/26(木) 21:31:52.07 ID:aL88M1qg.net]
>>614
「江添亮のC++入門」のことだよね。
評判は悪くはないと思うよ。
太っ腹なことに全文が github に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。

序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。

624 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 21:36:26.77 ID:A1DZUd8N.net]
>>615
どこのhubよ?

625 名前:はちみつ餃子 mailto:sage [2020/11/27(金) 11:50:52.05 ID:TefhHHJS.net]
>>616
ググれば上位に出てくるやん
https://ezoeryou.github.io/cpp-intro/

626 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 12:25:02.43 ID:4rNXQ0cM.net]
ほう

627 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 02:48:58.01 ID:G8gGytn9.net]
へー

628 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 03:32:38.65 ID:W53VNNYA.net]
ふーん

629 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:49:49.77 ID:/IOgDWl9.net]
可変引数テンプレートのコンストラクタだとコピーコンストラクタやムーブコンストラクタより優先順位高い事ある?

630 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 09:11:22.92 ID:KmyDCzB4.net]
template <class... aho>
boke(aho&&...);
boke(boke&&);
これでどっちが優先てこと?



631 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:55:46.81 ID:/HPnbUmI.net]
非テンプレ版→テンプレ特殊化→テンプレの順に優先

632 名前:621 [2020/11/28(土) 13:44:25.19 ID:/IOgDWl9.net]
これを実行すると可変引数が優先されてAhoが出る

https://ideone.com/ExRunF

633 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 14:33:28.98 ID:/HPnbUmI.net]
そのAhoはムーブじゃなくてbokeを作る時のデフォルトコンストラクトで出てる

634 名前:はちみつ餃子 mailto:sage [2020/11/28(土) 14:35:42.94 ID:gUqAhKBc.net]
>>624
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。

635 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:18:43.35 ID:/IOgDWl9.net]
ではこれで1が出るのは何故?

https://ideone.com/zW676W

636 名前:はちみつ餃子 mailto:sage [2020/11/28(土) 16:41:08.52 ID:gUqAhKBc.net]
>>627
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。

637 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:23:45.26 ID:/IOgDWl9.net]
>>628
可変引数の方をconst&にしたら解決した!ありがとうございます。

638 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:09:45.69 ID:2t4HVeMH.net]
またアホみたいな流れかおもたら
意外とちゃんとした質問応答の流れでビビった

639 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 15:54:55.38 ID:V2eyqU/t.net]
gdbのプロンプトでシェルの文法使う方法ある?
具体的にはfor文で配列を走査しながら内容をprintしたりしたい

640 名前:デフォルトの名無しさん mailto:sage [2020/12/01(火) 21:49:00.34 ID:1uVg5H0L.net]
>>631
配列自体をprintするんじゃだめ?



641 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 01:32:17.93 ID:cCR9MlfF.net]
>>632
添字番号を併記したりかんたんな演算を行ったりしたかった

642 名前:デフォルトの名無しさん [2020/12/02(水) 05:03:16.50 ID:OLoYTJfY.net]
OSはOS X10.15.7でApple clang12.0.0のC++17指定です
vector<tuple<int, int, int>> T;
vector<pair<int, int>> P;
のような配列(stdは省略)を作成したのですが以下のような挙動になりました
P.emplace_back(i, j); //通る
P.push_back(i, j); //エラー
P.emplace_back({i, j); //エラー
P.push_back({i, j}); //通る
P.emplace_back(make_pair(i, j)); //通る
P.push_back(make_pair(i, j)); //通る
省略はしてますがtupleも大体同じです(i, jはint)
push_backが一時コンストラクトをムーブしてることやmake_pairやmake_tupleに
型の推論があることは調べたのですが上記のようになる理由が分かりませんでした
後clangとg++でどちらに合わせた方が標準的というのはあるのでしょうか
図々しくも質問が2つになってしまいましたがよろしくお願いします

643 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 11:08:47.58 ID:3dB9NeQy.net]
>>634
「上記のよう」と言われても、どの挙動に疑問を感じてるのかわからない。
「clangとg++」の質問も、ここで誰かに「ある」とか「ない」とか言われて何の意味があると思ってるのかわからない。

644 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 11:20:44.01 ID:CcFfxv7q.net]
>>634
まず君がemplace_backとpush_backの違いをどう理解しているのか、自分の言葉で説明してみよう
話はそれからだ

645 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 11:59:18.46 ID:wCsCmSK2.net]
>>634
そういう言語仕様だからそうなるとしか言えない。
たぶん必要な情報は
 ・ emplace_back ( https://cpprefjp.github.io/reference/vector/vector/emplace_back.html )
 ・ push_back ( https://cpprefjp.github.io/reference/vector/vector/push_back.html )
 ・ 一様初期化 ( https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html )
かな。

言語仕様に沿っていれば普通は gcc でも clang でも問題は起きない。
たまには処理系のバグってことも無くはないが、
どちらかで問題が起きるなら書いたプログラムのどこかが間違ってる疑いのほうが濃い。

個別の事情によってはコンパイラをどちらかに固定することもあるかもしれないが、
理想としてはどちらでも良いようになっているほうが好ましくはある。

646 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 15:48:13.91 ID:wCsCmSK2.net]
>>631
シェルというか Python か Guile は使える。
https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html#Python-API

647 名前:デフォルトの名無しさん [2020/12/02(水) 21:51:44.10 ID:3RyObk2q.net]
プログラミング初心者でC++で競馬予想ソフトを作ってみたいんだけどC++はそういうのに向かないんですかね?
スクレイピングってやつはC++でできないのか?

648 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:26:25.03 ID:FHuLcrq8.net]
できるけどC++はWebやテキスト処理が得意とはいい難いから別の言語の方がいいかも

649 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:45:20.94 ID:9+QNoiNo.net]
テキストはc♯のが向いてる

650 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 22:49:07.36 ID:1SGYvOuK.net]
>>638
対話モードのPythonインタプリタ上でgdbを動かせるということですか?



651 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 22:59:56.90 ID:wCsCmSK2.net]
>>642
gdb のコマンドとして Python スクリプトが使えるという話。

652 名前:デフォルトの名無しさん [2020/12/02(水) 23:31:37.18 ID:3RyObk2q.net]
ありがとうございました!

653 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 23:51:03.60 ID:1SGYvOuK.net]
>>643
スクリプトかぁ
対話的にやりたいですけどわかりました
ありがとうございます

654 名前:はちみつ餃子 mailto:sage [2020/12/02(水) 23:55:00.77 ID:wCsCmSK2.net]
>>645
対話的にもできるよ。

655 名前:デフォルトの名無しさん mailto:sage [2020/12/02(水) 23:56:36.23 ID:9+QNoiNo.net]
pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ

656 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 00:11:32.72 ID:MFKNATAf.net]
>>646
ありがとうございます
なんか便利さの割にドキュメント少ない気がしますけど勉強します

657 名前:デフォルトの名無しさん [2020/12/03(木) 06:42:09.17 ID:w/MpdpQO.net]
勉強するぞ!勉強するぞ!勉強するぞ!


C++には似合わないような気が。

658 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 11:49:30.18 ID:4DIFtwYV.net]
>>649
どういう意味だ?
1. C++erならそれくらい勉強せずに使いこなせ
2. あるがままを受け入れろ。状況を変えようとするな
3. Pythonを便利と言うな

どれ?

659 名前:デフォルトの名無しさん [2020/12/03(木) 22:01:01.64 ID:anyYWQoy.net]
「ブラック企業社員」のお助けアプリが誕生 開発したのは22歳金髪大学生、開発のきっかけとは?
https://news.yahoo.co.jp/articles/b9d5e3b84e4aa78fab64d3eb8e0c02f72911287e
レシート買い取りアプリONEの17歳起業家、サービス一時停止から「怒涛の3カ月」で気づいたこと
https://www.businessinsider.jp/post-175983
ビジネス版マッチングアプリ「yenta(イェンタ)」全国展開 開始!
https://prtimes.jp/main/html/rd/p/000000023.000021544.html
ギフティング「TANP」運営がGCPほかから5億円調達
1日1200件の「リアルギフト」送付も可能に、U25起業家の新たな挑戦
https://thebridge.jp/2019/08/gift-ec-tanp-raised-500m-yen-from-gcp
人はこうすれば“ハマる”、源流はゲーマー視点の「幸せ」
https://project.nikkeibp.co.jp/behealth/atcl/feature/00005/012100006/
アプリ開発での起業は難しくない!成功するために覚えておくべきこと
https://www.biz.ne.jp/subject/blog/2004433/
【稼ぎ方が知りたい!】アプリの開発の収入って実際どれくらい?
https://itpropartners.com/blog/1657/
ネット関連事業で起業した成功例8選!ネットで成功するには○○が重要!?
https://www.official.or.jp/internet-entrepreneurship-success/

660 名前:デフォルトの名無しさん [2020/12/04(金) 14:40:55.75 ID:rp0tCaVB.net]
>>637
返信遅れて申し訳ありません、読んで色々試したら何となくですが理由見えてきました
一番為になった回答です…本当にありがとうございました



661 名前:はちみつ餃子 mailto:sage [2020/12/05(土) 00:49:53.38 ID:rsyXPWsW.net]
>>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。

662 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 08:56:44.63 ID:F3hjf/ak.net]
最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず

663 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 10:34:50.44 ID:T+MIshnP.net]
C++11以降はSTL前提で学んだほうが理解しやすい

664 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:14:52.77 ID:pZ+vMW1v.net]
STLとそうじゃないものの境界ってなに?

665 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 11:17:08.79 ID:i8LYHGeY.net]
そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。

666 名前:デフォルトの名無しさん [2020/12/05(土) 11:41:24.32 ID:f0cq7ZxN.net]
C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。

667 名前:デフォルトの名無しさん [2020/12/05(土) 11:42:36.00 ID:f0cq7ZxN.net]
STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。

668 名前:デフォルトの名無しさん [2020/12/05(土) 11:47:59.12 ID:f0cq7ZxN.net]
目からうろこですよ。
まじ鱗。

669 名前:デフォルトの名無しさん [2020/12/05(土) 11:53:54.60 ID:f0cq7ZxN.net]
ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。

670 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:09:38.13 ID:WVFX1CVk.net]
unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象



671 名前:デフォルトの名無しさん [2020/12/05(土) 12:15:33.65 ID:f0cq7ZxN.net]
なんじゃそりゃ。

672 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 12:22:29.71 ID:pZ+vMW1v.net]
コントかよ

673 名前:デフォルトの名無しさん [2020/12/05(土) 18:59:09.68 ID:ynooL14Y.net]
>>634
pairが初期化子リストによるコンストラクタを持たないから

c++ - emplace_back not working with std::vector<std::map<int, int>> - Stack Overflow
https://stackoverflow.com/questions/33207232/emplace-back-not-working-with-stdvectorstdmapint-int?answertab=votes#tab-top

似たような質問があって、mapだと初期化子リストのコンストラクタがあるから、initializer_listを使って初期化出来てる

この箇所あたりがそれ
https://cpprefjp.github.io/reference/map/map/op_constructor.html

map(initializer_list<value_type> init,
const Allocator& alloc); // (11) C++14 から

https://cpprefjp.github.io/reference/utility/pair/op_constructor.html
pairのコンストラクタにはinitializer_listは出てこない

674 名前:デフォルトの名無しさん mailto:sage [2020/12/05(土) 19:10:24.03 ID:F+hw3W9u.net]
>>662
御意

675 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 03:41:22.30 ID:hI81p89D.net]
>>665
違うと思うぞ

676 名前:デフォルトの名無しさん [2020/12/06(日) 08:19:51.08 ID:tzyWxjgm.net]
じゃあ、多数決で決めましょうや。

677 名前:デフォルトの名無しさん [2020/12/06(日) 11:09:55.43 ID:sjTPCZjA.net]
>>667
違うんだったら何が正解だ?

678 名前:デフォルトの名無しさん mailto:sage [2020/12/06(日) 13:55:38.68 ID:hI81p89D.net]
>>669
単純にemplace_backはコンストラクタに渡す引数を、push_backは生成済みの実体を受け取るという違いを
>>634が分かってないだけだろ

ついでに言えば、pairにinitializer_listを受け取るコンストラクタがあっても
emplaceは可変長テンプレート引数だから、推定に失敗してどっちにしてもエラーになる
多分。

679 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 20:44:18.72 ID:efO/t6By.net]
visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?

680 名前:デフォルトの名無しさん [2020/12/08(火) 21:02:15.62 ID:O6ovwbXJ.net]
上の方に
#include<filesystem>
と書く



681 名前:デフォルトの名無しさん [2020/12/09(水) 01:24:22.81 ID:WuZTb4kZ.net]
なんだそりゃあ?!

682 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 06:50:42.80 ID:OrjjObtT.net]
>>671
// cl 671.cpp /EHsc /std:c++17
#include <filesystem>
#include <iostream>

using namespace std;
using namespace std::filesystem;

int main()
{
directory_iterator d(current_path());
for(auto&& e : d) cout << e.path() << endl;
}
全く問題なく動くぞ
cl.exeのバージョンは19.28.29334 for x64

683 名前:デフォルトの名無しさん mailto:sage [2020/12/09(水) 08:05:49.03 ID:TKgHvdMy.net]
>>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。

日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。

684 名前:デフォルトの名無しさん [2020/12/09(水) 09:04:33.91 ID:bCzZQrOf.net]
脱線路運動。

685 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 02:22:39.32 ID:1g8P/X2h.net]
c++でRSSリーダー作れましゅか?

686 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 04:12:37.43 ID:64ZS/1bZ.net]
はい

687 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 11:52:25.92 ID:83or1IML.net]
RSSなんてもう誰も使ってないだろ
フィードしてるサイトなんてありゅ?

688 名前:はちみつ餃子 mailto:sage [2020/12/13(日) 13:34:03.99 ID:hv54fxHN.net]
ブログホスティングサイトの系統だと RSS を提供してないところとかあんまりないと思うが。

689 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 16:01:14.17 ID:WlKHswnl.net]
ていうかあちこちの言語スレで同じ事聞くのやめなさい

690 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 19:00:34.80 ID:mjvV58cu.net]
std::vectorのメンバ関数にfind()とかrfind()がないのはなんでですかね?
string::find()みたいにあってもよさそうな気がするんですが・・・



691 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 19:10:08.09 ID:iTp2tyae.net]
>>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?

692 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 09:25:27.40 ID:rqj48Chi.net]
>>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい

693 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:10:21.94 ID:qBOs25Ot.net]
UTF8とかだと単純に同じバイト値探せばいいわけじゃないからstringは特殊化してるんだよ

694 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:19:55.29 ID:PHBBuZ6n.net]
>何でもかんでもメンバに突っ込むのは悪い設計だからだ
こういう考え方いかにもCから入りましたって感じだな

695 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:21:51.75 ID:gbeRTgGG.net]
UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた

696 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:36:54.46 ID:8mWx/Grk.net]
>>687
短い系列は特に、部分列が一致したからといっても、
デコードした時にその文字かどうかは保証出来ないんじゃ?

697 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 14:01:10.21 ID:gbeRTgGG.net]
std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring

698 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 14:23:23.61 ID:rqj48Chi.net]
>>686


699 名前:翌唐汲オていいか?
それともやめとくか?
[]
[ここ壊れてます]

700 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:06:36.42 ID:cCubMtK6.net]
>>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ



701 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:37:15.21 ID:pcemzeew.net]
>>690
質問主ですが、是非ともkwskしてくだしあ

702 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 16:39:59.71 ID:4y27nUGT.net]
utf16はサロゲートペアちょんぎらないようにしないとな

703 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 20:33:42.18 ID:DseQeO8W.net]
合字とか異体字セレクタとかもな
文字を扱うというのは大変なんだ

704 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 21:47:00.55 ID:F7+1e89x.net]
>>688
1バイト目とそれ以降は重ならないからそういうことは起こらないはず

705 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 22:25:44.23 ID:jc1ZwvrK.net]
そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈

706 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 06:17:15.68 ID:vxgFSXGy.net]
>>696
だよね
std::stringのfindは要素を探すんじゃなくて、
要素(char)の連なり=部分文字列を探すもので
vectorとかのコンテナのそれとは異質だし蛇足とは思えない

707 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 08:58:52.32 ID:O+yPS5En.net]
>>692
了解

>>686
kwsk

708 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 09:05:13.62 ID:9tcp04F0.net]
まぁ汎用的というか、stlのアルゴリズムはほとんどが全コンテナに対して共通のコードに出来るからそうしてる(グローバルな関数にしてる)んじゃないかね
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる

709 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 10:59:12.23 ID:zkq7HUY5.net]
アドホック多相とパラメトリック多相の違い。

710 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:28:07.30 ID:Hv+rjawS.net]
データ構造とアルゴリズムを合わせたものがクラスでありオブジェクト指向言語の特徴の1つと教わった
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか



711 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:50:27.11 ID:uK3tjXUx.net]
beginとendをペアで指定しないといけないポインタ的iteratorのせいで外部化せざるを得なかったという方が正しいんじゃないですかね

712 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 11:58:03.72 ID:cXvwu3qd.net]
↓のサイトでも外人が同じ議論してるね
誰か要約してください
https://stackoverrun.com/ja/q/4020758

Why does std::string have a find member function while std::vector and friends don't have it?
Is there anything wrong with using std::find on the string?

713 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 13:09:55.17 ID:zkq7HUY5.net]
>>701
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。

714 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:27:14.81 ID:j60AFdVm.net]
C++ってカプセル化できるんでしたっけ?

715 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:34:22.28 ID:KCK/bj61.net]
抜け道があるかって意味なら、java等もカプセル化できないってことになるけど

716 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:45:31.91 ID:O+yPS5En.net]
>>701
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ

C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある

717 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:50:56.36 ID:j60AFdVm.net]
>>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ

718 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:54:21.41 ID:vzlQaAwm.net]
>>708
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?

719 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:55:52.62 ID:KCK/bj61.net]
なる。
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな

720 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 14:40:21.32 ID:O+yPS5En.net]
> 内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないと

これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん



721 名前:はちみつ餃子 mailto:sage [2020/12/16(水) 15:35:04.62 ID:zkq7HUY5.net]
現実的な部分では運用でなんとかしてる部分はあるのも確かだが、
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。

722 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 16:36:11.97 ID:uK3tjXUx.net]
>>708
それってモジュール使えば解決できる問題じゃないんでしたっけ

723 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 18:14:53.45 ID:O+yPS5En.net]
>>712
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね

問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ

724 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 18:54:24.56 ID:G781YURu.net]
意義深い議論が展開されてるな

725 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 22:51:18.04 ID:IUrbfkPB.net]
C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、

やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、

726 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 22:58:46.39 ID:IUrbfkPB.net]
きちんとオブジェクト指向するんなら継承は全部virtualであるべきや
といってもC++だけにあてはまる批判ではないが

Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG

727 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:05:40.32 ID:L6k9APCP.net]
不毛な宗教戦争よ

728 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:25:11.55 ID:2c+prgNQ.net]
クラスベースオブジェクト指向はすべて似非オブジェクト指向
アランケイ「C++のオブジェクト指向?知らない子ですね…」

729 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 01:05:17.90 ID:X4tT/GwL.net]
>>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。

730 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 01:10:53.36 ID:YFuWJYb1.net]
>>717
え、その場合仮想関数ならDerived::Fooやろ?
非仮想とか値渡しならそうだけど



731 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 07:05:17.82 ID:iG8ucCJK.net]
非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど

732 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 07:08:07.45 ID:4VSV+Zch.net]
>>717
仮想継承の話かと思ったら
そうじゃないようだな

733 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 08:15:27.96 ID:61mx8GyZ.net]
>>720
「使った機能にあったコスト」だよ。
ゼロコストはあくまで機能を使わなかった場合の話。
cの機能しか使わなかったらcのコストしかかからないのが基本方針だろ。

734 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:41:30.12 ID:YFuWJYb1.net]
>>722
あぁそういうことか・・
ちょっと自分の常識からかけ離れてるから理解できんかった

735 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:49:46.67 ID:4VSV+Zch.net]
#include <charconv>
using namespace std;

int main()
{
char str[] = "123";
double dbl;
from_chars(str, str + 3, dbl);
}

Visual Studioでは通るんだけど、GCCではダメ
どうも戻りのfrom_chars_resultがテンプレートになってて推論に失敗してるようなんだけど
規格ドラフト見てもfrom_chars_resultがテンプレートだなんてどこにも書いてない

これGCCがおかしいんだよな?
バグレポ上がってたりする?

736 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:50:46.30 ID:4VSV+Zch.net]
バージョン書き忘れた
Visual Studio: 19.28.29334
GCC: 10.2.0

737 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 15:56:08.03 ID:UR7Dc4KD.net]
>>726
整数型だけしかサポートしてないよ

738 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 17:33:27.07 ID:4VSV+Zch.net]
>>728
23.20.1 Header <charconv> synopsisにはfloat, double, long doubleが挙がってるんだけど・・・
ああ、GCCがってことねthx

739 名前:デフォルトの名無しさん [2020/12/17(木) 22:56:50.01 ID:mqVedE2Y.net]
gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。

740 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 01:08:57.52 ID:CTNkAd3G.net]
>>726 「ダメ」がコンパイルエラーの意味ならエラーメッセージも挙げてよ。



741 名前:デフォルトの名無しさん [2020/12/18(金) 01:16:51.95 ID:UPU6Cu+L.net]
ダメコンは、ダメージコントロールの略ですよ。

742 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 05:02:08.68 ID:t+i2XnfT.net]
継承使うと密結合になり変更に弱くなるし(実行時のオーバーヘッドにもなりそう)
規約で縛るというSTLの実装には好感が持てる

743 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 06:51:33.39 ID:TZi3wQJw.net]
>>731
W:\>g++ g1.cpp
g1.cpp: In function 'int main()':
g1.cpp:8:33: error: no matching function for call to 'from_chars(char [4], char*, double&)'
8 | from_chars(str, str + 3, dbl);
| ^
In file included from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: candidate: 'template<class _Tp> std::__detail::__integer_from_chars_result_type<_Tp> std::from_chars(const char*, const char*, _Tp&, int)'
595 | from_chars(const char* __first, const char* __last, _Tp& __value,
| ^~~~~~~~~~
C:/msys64/mingw32/include/c++/10.2.0/charconv:595:5: note: template argument deduction/substitution failed:
In file included from C:/msys64/mingw32/include/c++/10.2.0/charconv:40,
from g1.cpp:1:
C:/msys64/mingw32/include/c++/10.2.0/type_traits: In substitution of 'template<bool _Cond, class _Tp> using enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = std::from_chars_result]':

まだまだ延々続くけど、こんくらいでいい?

744 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 09:49:45.23 ID:/2PllW9k.net]
>>727
vsでも2017update7は同様のエラーみたいだなぁ

745 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 11:01:15.84 ID:nIUIWdb5.net]
>>733
何言ってんだ継承使いまくりだぞ

746 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 11:36:27.07 ID:YAPYqYIf.net]
>>734
ココに上げろよ
https://pastebin.com/

747 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 12:09:40.31 ID:opBsRLFO.net]
オプションは無しなんだ

748 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:23:30.53 ID:2eIYLdZu.net]
n要素のvectorをm要素に変えたいときって中身はどうでも良いって思ってれば
vec = vector<int>(m);

vec.assign(m);

vec.resize(m);
もコスト変わらない?

749 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:30:32.59 ID:4UaQE5Dn.net]
バグバグ言語ランキングで見事PHPに勝利!
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/

750 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:40:56.80 ID:TZi3wQJw.net]
>>737
何がしたいの?
元ソース貼ってるからそっちでコピペして
手元のGCCでコンパイルしてみれば再現するはずだよ



751 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 13:47:38.37 ID:YAPYqYIf.net]
>>741
邪魔くさいからココに貼るなってんだよ

752 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 14:07:04.35 ID:TZi3wQJw.net]
それは731に言ってくれ
俺は知らん

753 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 14:33:16.19 ID:kYvjoJp5.net]
>>729
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。

754 名前:デフォルトの名無しさん [2020/12/18(金) 15:35:36.73 ID:A9pQAhpY.net]
>>729
23.20.1がHeader <charconv>のドラフトってどれだ?

755 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 15:37:59.88 ID:TZi3wQJw.net]
>>745
N4713

756 名前:デフォルトの名無しさん [2020/12/18(金) 15:50:56.91 ID:A9pQAhpY.net]
https://cpprefjp.github.io/reference/charconv.html
https://cpprefjp.github.io/reference/charconv/from_chars.html

webページ見れない理由あった?

>GCC: 8.0(整数のみ)
>Visual C++: 2017 update 7(整数のみ), update 9(full support)
俺ならこの二つ眺めて「GCCは未実装なんだなぁ」と思考停止して終わる

757 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 17:24:37.67 ID:TZi3wQJw.net]
>>747
そうか、思考停止するのか
よかったね

何だか色々と前提置いてるけど
俺は知らんよ、おまえさんの前提なんぞ
イヤミ口調のくせに脇が甘いな

758 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 17:28:32.84 ID:Mxkr6hqK.net]
priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?

759 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 18:26:15.74 ID:Xk0olBJ3.net]
template <typename T>
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;

760 名前:デフォルトの名無しさん [2020/12/18(金) 18:41:07.57 ID:UPU6Cu+L.net]
gccの場合、未実装でもスタブだけ存在する場合があるんですよね。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。

ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。

ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。



761 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 19:45:59.90 ID:PzyTX7K9.net]
始皇帝氏

762 名前:デフォルトの名無しさん [2020/12/18(金) 19:59:32.56 ID:A9pQAhpY.net]
>>748
ここ以外に各コンパイラでの実装具合が上手い事まとまってるサイトとかあんの?

763 名前:デフォルトの名無しさん [2020/12/18(金) 20:30:00.87 ID:A9pQAhpY.net]
コンパイラのサポート状況 (C++17) - cppreference.com
https://ja.cppreference.com/w/cpp/compiler_support/17

こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな

764 名前:デフォルトの名無しさん [2020/12/18(金) 20:48:34.81 ID:A9pQAhpY.net]
>>746
N4713のpdfとかどこをどう漁れば出てくんだ?
全然見つからないんだけど

765 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 20:52:41.57 ID:2rT2nv7x.net]
>>755
N4713 c++で検索したらトップに出てきたぞ。
普段どんな検索しているんだよ。

766 名前:デフォルトの名無しさん [2020/12/18(金) 20:53:49.00 ID:UPU6Cu+L.net]
https://github.com/cplusplus

ここで検索すればドラフトならみられますよ。
向こうも見てるだろうけど。

767 名前: mailto:sage [2020/12/18(金) 21:01:49.42 ID:ivKQNPRV.net]
>>751
関係ないけれども、gcc って今は C++ で記述されているんですよね
長い間私はそれをとても残念に思っています
オプティマイズは苦手であってもいいから C で記述されている C++ 処理系って存在するのでしょうか?

768 名前:デフォルトの名無しさん [2020/12/18(金) 21:12:10.66 ID:A9pQAhpY.net]
>>756
>>757
https://cpprefjp.github.io/international-standard.html
https://ja.cppreference.com/w/cpp/links
ここで紹介されている最終ワーキングドラフトでもない、

https://github.com/cplusplus/draft/tree/master/papers
こっちはたくさんあって何を選べばいいか分からない、

どうやってN4713のドラフトに行きついたんだ?

769 名前:デフォルトの名無しさん [2020/12/18(金) 21:20:36.71 ID:UPU6Cu+L.net]
おーけーぐーぐるえぬよんなないちさん、と言いました。

770 名前:デフォルトの名無しさん [2020/12/18(金) 21:37:45.97 ID:A9pQAhpY.net]
行き着いた、ってのは>>746の彼がだよ
どういう経緯で彼が「これこそが勉強すべきドラフトである」と結論したんだ?



771 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 22:07:42.21 ID:TZi3wQJw.net]
俺がN4713を見ていたことが、えらい気に入らない人がいるようだね
知らんがな
仮にwebページ見られなかったとして、どうやってN4713を落とせたのかとか
いちいち開陳せにゃならんの?

772 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 22:09:31.45 ID:XdXLiWO3.net]
>>722 >>725
差分プログラミングとかいう腐りきったプログラミングパラダイムでは
ハイディング上等なんだ、
そう思っていた時期が(ry

773 名前:デフォルトの名無しさん [2020/12/18(金) 22:11:14.08 ID:UPU6Cu+L.net]
こちらから見えるということは、向こうからも見えてるということです。
気を付けなされよ。

774 名前:デフォルトの名無しさん [2020/12/18(金) 23:08:30.12 ID:A9pQAhpY.net]
>>762
「ドラフトはこれを見ましょう」と大々的に紹介されてるわけでもなし、
落としたDLしたじゃなくて、どうしてそれを『選んだ』のかが不思議なんだよ
普通の経路じゃまず選べない

775 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 23:26:57.29 ID:yxlBLqeq.net]
c++ってやたうんちくばっか言う人多いよね
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある

776 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 23:29:15.18 ID:zfI8p5qO.net]
プログラマがうんちく言わないで何やるんだ?

777 名前:デフォルトの名無しさん [2020/12/18(金) 23:48:52.19 ID:A9pQAhpY.net]
これの話の続きなのか
なら不思議は解消だ
謎は全部解けた


C++相談室 part151
https://mevius.5ch.net/test/read.cgi/tech/1589424805/20

20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ

778 名前:デフォルトの名無しさん [2020/12/19(土) 00:02:31.33 ID:yZxXMpJa.net]
そんな昔のスレは関係ないのでは?

779 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:20:03.02 ID:0cb9HLXb.net]
>>766
こういうとこでの情報提供や議論はともかく、うんちくでマウント取りたがるのは自信の無さの裏返しだからねぇ

780 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:23:06.73 ID:sq702jvD.net]
うんちくがうっとおしくて、仕事なら自分が勝ってる!って思い込みたいだけなんじゃないの



781 名前:デフォルトの名無しさん [2020/12/19(土) 00:26:01.61 ID:yZxXMpJa.net]
図星つかれたからうんちくと言ってるのでは?

782 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:38:15.56 ID:x1EY5aRu.net]
スカトロスレ

783 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 00:42:57.09 ID:0cb9HLXb.net]
爆釣ww

784 名前:デフォルトの名無しさん [2020/12/19(土) 03:34:46.64 ID:yZxXMpJa.net]
この野郎。
ウンチクンめ。

785 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 06:01:48.82 ID:u3YcA1fK.net]
>>765
だから何?
俺がどのドラフトをDLするかを
いちいちあんたの承認とらにゃいかんの?
こっちゃ不思議がられても関係ないんで
いちいち申告してもらわなくていい

786 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 08:07:11.10 ID:vl/1bKki.net]
まあお茶でも飲んでカルシウム取ろう

787 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:17:03.91 ID:M1Nera9i.net]
お茶にはカルシウム入ってないだろほとんど

788 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:18:39.16 ID:dTYT78ol.net]
お茶とカルシウム入りウェハースでも食えばええやん

789 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 10:25:15.46 ID:cik2rIYa.net]
何のはなしやねん

790 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:23:01.76 ID:biviwPkb.net]
Ca++



791 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:26:14.15 ID:biviwPkb.net]
正式版は有料だがドラフトはタダで手に入るからヒジョーに得がたいが、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、

792 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 13:50:09.89 ID:B7wez7Ce.net]
よくわかりませんが、Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソというのと似た話ですか?

793 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 14:02:30.06 ID:biviwPkb.net]
Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソとなじったら
ドラフトの版が変わったらChromeの方がクソだった、みたいな

794 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 14:41:50.09 ID:+cK8B71a.net]
ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか

795 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:35:13.01 ID:dM4VNuuI.net]
C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?

796 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:41:15.86 ID:5blMWj9s.net]
>>786
まあその方がメモリ管理をミスを防ぎやすいからな
C++11以降だとまた世界が違うが

797 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:42:49.16 ID:x1EY5aRu.net]
どう世界が違うの?
いじわるしないで教えてよ

798 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:46:00.09 ID:dM4VNuuI.net]
メモリ管理の文化的な作法なのね。

799 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 18:47:02.46 ID:5blMWj9s.net]
>>788
スマートポインタが実用になったから、それでメモリ管理する方が文字通りスマートになった
だから、必要なら関数内部でメモリ確保する方法でもメモリ管理ミスが起こりにくい

800 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 19:25:11.20 ID:p4OhEmVF.net]
>>786
c++というかcの伝統だわな。
オブジェクトをヒープに置かなくていいという性能的なメリットもある。



801 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 19:59:05.03 ID:HGWooSzm.net]
Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束

vectorやstringをゴロッと返せば済む今はいい時代になったと思う

802 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 20:17:48.73 ID:vl/1bKki.net]
消費者が買い物袋用意するなんてレジ袋有料化みたいだな

803 名前:デフォルトの名無しさん [2020/12/19(土) 20:19:43.48 ID:yZxXMpJa.net]
右辺値参照のおかげですよ。

804 名前:デフォルトの名無しさん [2020/12/19(土) 21:06:02.20 ID:ISt3uDJM.net]
質問@:
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。

質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。

805 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 21:33:09.17 ID:HGWooSzm.net]
普通に質問しろ

806 名前:デフォルトの名無しさん [2020/12/19(土) 22:28:27.67 ID:yZxXMpJa.net]
>>795
アロケータの内部実装がどうなっていようとも、push_back()から戻った時にはデータは追加されているので、問題ないのでは?

std::vectorは末尾に0を追加したりしません。

807 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 22:39:50.71 ID:u3YcA1fK.net]
>>782
- 最新のドラフト
+ 正式版の規格

808 名前: []
[ここ壊れてます]

809 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 22:59:41.56 ID:vl/1bKki.net]
確かにCだと必要メモリの問い合わせの為に二度呼び出したり面倒でしたわ…

810 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 23:18:45.05 ID:biviwPkb.net]
>>798
正式版の規格票は金かかるやんけヽ(`Д´)ノ



811 名前:デフォルトの名無しさん mailto:sage [2020/12/19(土) 23:20:05.98 ID:biviwPkb.net]
>std::vectorは末尾に0を追加したりしません。
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…

812 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 00:32:15.85 ID:zH6cQZTj.net]
誰もstringの話してないと思うが

813 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 07:06:06.65 ID:u5Xjtcw/.net]
>>801
msys64/mingw64/include/c++/10.2.0/bits/basic_string.h
ここに書いてあるぞ

814 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 09:47:23.01 ID:C7ljP8CG.net]
>>799
でも「直接メモリいじってる」て感覚があって好みだったなぁ
まあ自己満足でしかないのだけれど

815 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 10:51:49.27 ID:KSHt8d36.net]
今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで

816 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:14:31.35 ID:IFRd5RXQ.net]
>>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。

817 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:16:20.77 ID:B3eFXD ]
[ここ壊れてます]

818 名前:1J.net mailto: RAIIなんて今どきでもないだろ []
[ここ壊れてます]

819 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:27:39.08 ID:KSHt8d36.net]
そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど

820 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 11:52:43.58 ID:mkiVvOjR.net]
Finalizeが失敗する可能性があってエラーハンドリングしないといけない場合はあえてそうしているかもね



821 名前:デフォルトの名無しさん [2020/12/20(日) 13:25:24.04 ID:8M1CEzDz.net]
あえてね!

822 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:31:53.40 ID:1w6q/2mK.net]
というかスコープ内で完結しない、グローバルな状態を持つものならそうするやろ

823 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:48:55.12 ID:KSHt8d36.net]
グローバルバカかな?

824 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 13:52:50.85 ID:BqPIIXKk.net]
お前が挙げてたそういうライブラリがInitialize/Finalizeの中で何やってるか考えれば自ずと答えはでるだろ

825 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 14:05:47.98 ID:S1Ae4PMu.net]
グローバルな初期化と後始末ならInitialize/Finalizeとか明示的に呼ぶ設計のが一番闇が少ない
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー

826 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:00:32.48 ID:POdM0+je.net]
変数名で対象変数のポインタを取得してくる実装(リフレクション?)をしたいんですけど
対象変数をポインタテーブルとかに書き下すことなくコンパイル時に変数名リテラルと対応するポインタを自動生成することってできますか?

827 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:02:59.13 ID:POdM0+je.net]
対象変数はstructかclassのメンバ変数を想定しています

828 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 21:23:18.64 ID:B3eFXD1J.net]
直接には無理
目的次第だけど基本的にはプリプロ駆使して頑張るしかない

829 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 22:39:57.26 ID:pIq+bOjP.net]
まずC#処理系を書きます

830 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 22:49:36.29 ID:ZSjgwNod.net]
車輪がでかすぎる



831 名前:デフォルトの名無しさん mailto:sage [2020/12/20(日) 23:37:12.93 ID:XnWb8UXr.net]
マップファイルから生成

832 名前:デフォルトの名無しさん [2020/12/21(月) 02:47:40.73 ID:HVkDagg+.net]
数値計算に興味がある方に聞きたいのですが、ベクトル演算はどのように実行していますか?
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです

833 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 03:43:19.44 ID:tQs5NvLs.net]
>>821
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い

834 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:49:04.92 ID:h5UrY03S.net]
>>821
時と場合による

835 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:49:33.35 ID:h5UrY03S.net]
ベクトル演算
ていうだけじゃ広すぎて

836 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 12:52:20.80 ID:XzTX0Cyb.net]
SVDとかするなら自前実装なんか無駄だからeigen使う。それ以外なら>>822 の通りだな。

837 名前:デフォルトの名無しさん [2020/12/21(月) 19:14:50.06 ID:5SN4/ItM.net]
みなさんありがとうございます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます

838 名前:デフォルトの名無しさん [2020/12/21(月) 20:22:43.20 ID:94n2fENi.net]
そりゃそうだろな
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う

そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある

後発の方が簡単に出来るというのは幻想

839 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 21:07:13.89 ID:HyYYfsZ0.net]
簡単なことは簡単に言え

既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな

あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー

こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い

840 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 23:35:19.34 ID:5SN4/ItM.net]
ヘッダファイルに
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?



841 名前:デフォルトの名無しさん mailto:sage [2020/12/21(月) 23:51:47.03 ID:3sOyVj6l.net]
大昔(40年ぐらい前?)とかもんのすごい特殊な環境用のコンパイラはしらんが
今の普通のコンパイラではそれはコンパイル時に計算される

842 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 00:34:06.43 ID:M/dL4DYR.net]
>>829
コンパイル時に解決されてると思います

843 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 00:35:40.93 ID:M/dL4DYR.net]
すみません、830で回答されてましたね
畳み込み、とかで検索してみては

844 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 02:07:17.74 ID:bzbnZ90n.net]
>>826
Fortranでも基本的にblasとかlapackに投げるだけじゃないの?
しかもC/C++からFortranルーチン呼べるし

「FortranではやりやすかったがC/C++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい

845 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 06:36:52.20 ID:GAvzsgv/.net]
blasとかlapackがfortanで記述されてるからね
中身いじるような人がどれほどいるかはわからんけど

846 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 08:38:11.38 ID:+a9RX7vJ.net]
>>829
翻訳時
なぜなら1.0/3.0は定数式だからだ
これは昔とか今どきとか関係ない

847 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:08:43.07 ID:z2CQLL3J.net]
翻訳(interpret)ですか?
C++はコンパイル言語ではないのですか?

848 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:23:29.08 ID:Yt10VcGs.net]
翻訳(translate)でしょ。

849 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 09:26:00.82 ID:AY4u6Qzg.net]
コンパイラと構文解析とオートマトンって大学の授業でやったなぁ

850 名前:デフォルトの名無しさん [2020/12/22(火) 10:18:51.71 ID:hq0fof4K.net]
Cコンパイラ作ったよね。



851 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 12:04:28.60 ID:GAvzsgv/.net]
constexprとか中身がどうなってるのかもうわけわからん

852 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 16:28:31.76 ID:cQdMNR1v.net]
>>834
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが

853 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 23:28:55.02 ID:cWduRySe.net]
constexprともなるとどこまでコンパイル時計算してくれるかは
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが

854 名前:デフォルトの名無しさん mailto:sage [2020/12/22(火) 23:41:36.57 ID:Yt10VcGs.net]
>>842
constexpr にまつわるルールはコンパイル時計算してくれる最低ラインを定めるもの。
どこまでコンパイル時計算してくれるかが処理系依存なのは初期のC言語から変わりないよ。

855 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 00:29:07.29 ID:0vtm2rCB.net]
constexpr指定したものはコンパイル計算でしょう?

856 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 01:06:37.35 ID:BffjS4vY.net]
>>844
コンパイル時評価可能(コンパイル時に評価するとは言っていない)

857 名前:はちみつ餃子 mailto:sage [2020/12/23(水) 02:19:42.25 ID:wEQUKH0P.net]
>>844
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。

定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。

実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。

858 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 06:16:15.13 ID:ZPrNOuha.net]
C++はまだ色々と足し続けてるのか
constexprはともかくconstinit, constevalて...

859 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 06:17:06.41 ID:ZPrNOuha.net]
まるで言語開発屋のおもちゃじゃねえか

860 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 08:41:53.85 ID:iOQdV6uo.net]
今頃気づいたのw



861 名前:はちみつ餃子 mailto:sage [2020/12/23(水) 09:20:18.63 ID:wEQUKH0P.net]
自動で呼び分けて欲しいと思うこともあれば
コンパイル時に限って欲しいことだってあるだろう。

862 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:37:56.48 ID:lj5PdyQr.net]
1秒間に1万回くらい数値判定の計算をしてるのですが
Xが3桁の時のみTrueを返すようなコードで一番速いのってどんなコードですかね?
愚直にif(1000>X>=100)でやるのと
if(10>X/100>=1)ではどっちが速いんでしょうか

863 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:39:04.22 ID:PgZc4XsV.net]
前者

864 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:43:53.01 ID:PgZc4XsV.net]
多くのコンパイラは以下に変形しそうな気がする
if (X-100u<900u)

後者をコンパイラが最適化するかどうかはコンパイラ次第

865 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 19:47:49.74 ID:PgZc4XsV.net]
PCなら1秒に1万回程度なら気にしなくて良い
8bitマイコンだとこの判定だけでも10個以上の命令になったり

866 名前:デフォルトの名無しさん [2020/12/23(水) 20:03:20.62 ID:rWjdGSAm.net]
長さ数十億のbool型配列用意すれば早いんじゃね
isDigit3[x] だけで出るじゃん

867 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 20:04:42.24 ID:psZzhFw3.net]
>>851
それ条件式が間違ってるだろ

868 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 21:04:06.12 ID:oO0RWe4j.net]
根本的には、速度って環境依存の性質だから、本当に重要な話なら実測で確かめるしかない。

一般論としては、現代のコンパイラはそこらの人間より賢いから、やりたいことを素直に書いて最適化を任せるのがいい。
わかってない人が余計なことをやると、かえって遅くなる可能性が高い。

計算量のオーダーを変えるような、アルゴリズムレベルの最適化なら意味があるんだけど。
小手先のテクニックは通用しないと思っていい。

869 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 22:00:42.78 ID:p3n5tJou.net]
>>850
いうてほんとに定数式になってくれないと困る場面で定数評価してくれない事態に出くわしてないんだよなぁ・・
constexprなクラスとか作ってればあるのかもしれんが

870 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 22:21:55.80 ID:JqE6cd4a.net]
最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか



871 名前:デフォルトの名無しさん [2020/12/23(水) 23:11:04.90 ID:pgaSoeQc.net]
typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?

872 名前:デフォルトの名無しさん [2020/12/23(水) 23:12:13.58 ID:pgaSoeQc.net]
ヘッダーに渡しても同じことか…相互参照してるんだった…

873 名前:デフォルトの名無しさん [2020/12/23(水) 23:13:21.42 ID:pgaSoeQc.net]
一応…間違えないように…ヘッダーに集約しておく…

874 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 23:13:34.29 ID:KqYWGLnc.net]
Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、

1秒間に、1,000万回ループ出来るようになる

875 名前:デフォルトの名無しさん mailto:sage [2020/12/23(水) 23:43:55.33 ID:iOQdV6uo.net]
いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい

876 名前:デフォルトの名無しさん [2020/12/24(木) 06:19:28.22 ID:TzdYJrci.net]
サムソンを守るためのHuawei潰しという側面もある。

877 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 06:55:00.49 ID:fOK7nTKz.net]
んあ?

878 名前:デフォルトの名無しさん [2020/12/24(木) 06:58:51.74 ID:TzdYJrci.net]
文大統領がトランプ大統領に、Huaweiを潰すよう勧めたそうです。

879 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 07:53:25.30 ID:X8ie3AzF.net]
>>863
C++ならはじめから秒2000万回ループできるコードになる

880 名前:デフォルトの名無しさん [2020/12/24(木) 08:12:44.86 ID:TzdYJrci.net]
このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。



881 名前:はちみつ餃子 mailto:sage [2020/12/24(木) 10:18:24.14 ID:ys2W6z1g.net]
>>860
OK
https://timsong-cpp.github.io/cppwp/n3337/dcl.typedef#3

882 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 11:16:41.02 ID:h4Gph9I0.net]
>>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p

883 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 11:27:11.76 ID:h4Gph9I0.net]
>>871
途中で送ってもうたorz

((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。

単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz

つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。

884 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 17:12:04.54 ID:tg7gMCA8.net]
>>872
if ((unsigned)v - 100u < 900u)
のが早くない?

テーブルは論外だ
アドレス計算コストの方が高そうだし
ROMサイズやキャッシュ汚染などの悪影響がある

885 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 19:53:19.25 ID:9+0irhfK.net]
if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。

886 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 19:56:18.95 ID:VQIKvM0h.net]
そのくらいなら最適化に任せた方がいい気がするが……

887 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:38:01.43 ID:B83YCBUh.net]
比較がボトルネックってのは本当だろうかとは思わなくもない
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど

888 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:38:20.67 ID:X8ie3AzF.net]
整数の減算は非常に高速
条件分岐は遅いし分岐予測を汚染する

コンパイラの最適化を見てると良い
範囲判定は大抵>>873のようなコードになる

889 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:41:03.65 ID:X8ie3AzF.net]
コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い

コンパイラが最適化するから

x/100を比較するのは
意味的にも意味不明だし
速くなることもない

890 名前:デフォルトの名無しさん mailto:sage [2020/12/24(木) 21:51:18.77 ID:X8ie3AzF.net]
ISRの最適化なら

レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある

小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする



891 名前:デフォルトの名無しさん [2020/12/25(金) 14:04:51.84 ID:L6KY61Ck.net]
バンク切り替えテクニックですか。
むかしのインターフェース誌っぽいですね。

892 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 17:40:14.36 ID:j6GWo/XP.net]
昔のテクニックが今でも有効

893 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:23:57.32 ID:KGl9PDWX.net]
template<size_t A, size_t B>
class tmp{};

template<size_t N>
void test(tmp<N, N>&){
std::cout << “A”;
}

template<size_t A, size_t B>
void test(tmp<A, B>&){
std::cout << “B”;
}

上のような関数があったときにtest(tmp<1,1>{});がどちらを呼ぶか規格で決まってる?

894 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 22:18:37.12 ID:9Tm+xBHp.net]
テンプレート引数が少ないtmp<N, N>の勝ち

895 名前:デフォルトの名無しさん [2020/12/26(土) 00:14:55.00 ID:biNpl0R5.net]
using FunctorType = std::function<void()>;
struct RecursiveMapperType;
using InternalMapperType = std::map<std::string, RecursiveMapperType>;
struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};

こういうコードをネットで見かけたんだけど
RecursiveMapperTypeを前方宣言してInternalMapperTypeを宣言
RecursiveMapperTypeをInternalMapperTypeを継承して作成していることのメリットがよくわからない。

struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>

だとだめなのだろうか?
誰か教えて下しあ

896 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 00:40:10.65 ID:3VlCU3bq.net]
>>884
上のコードと下のコードの RecursiveMapperType の定義はまったく同じに見えるんだけど、何が違うの?

897 名前:デフォルトの名無しさん [2020/12/26(土) 00:50:04.37 ID:biNpl0R5.net]
>>885 さん
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>

898 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 03:46:58.69 ID:fBIAR6pR.net]
ttps://ideone.com/Ou2BZq

899 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 15:10:58.71 ID:3VlCU3bq.net]
>>886
それじゃ全然機能が違うっていうかその RecursiveMap 何の役にも立たないでしょ。
元の RecursiveMapperType の機能が理解できてないだけか。

900 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 16:40:20.18 ID:vGzfsLf/.net]
再帰的な構造を定義したくて自分自身の型を含めたものを継承してるわけで
それを実現するには前方宣言するしかない
というね



901 名前:デフォルトの名無しさん [2020/12/26(土) 17:13:57.40 ID:UNoc468U.net]
再帰的なコンテナは、フィールドが出来た時点で破綻するのでは?

902 名前:デフォルトの名無しさん [2020/12/26(土) 18:07:48.30 ID:TLGOuMOF.net]
https://cpprefjp.github.io/reference/vector/vector.html
>不完全型を要素にする例 (C++17)

これの亜種

903 名前:デフォルトの名無しさん [2020/12/27(日) 06:31:05.42 ID:QkMmRpj8.net]
C++23に持ち越された契約は何が変わるんだろね。

904 名前:デフォルトの名無しさん [2020/12/27(日) 17:59:23.18 ID:wQ5c+q6H.net]
ありがとうございます。なんとなくイメージできました。

コードの設計ってまだよくわからないのですが、
再帰処理のためにこうするのって比較的普通なことなんですか?

905 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:23:25.49 ID:tp3tetyk.net]
>>893
知らんよ。
普通かどうかなんて気にしてどうするの?ここで名無しの誰かに yes/no 答えてもらって何か意味ある?

906 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:33:52.26 ID:7Rx7y5wp.net]
>>893
STLのクラスを継承して階層構造を実現するテクは応用編って感じがする
もっと基本的なやり方をするならデザパタのcompositeパターンを使う
とかかね

907 名前:デフォルトの名無しさん mailto:sage [2020/12/27(日) 18:47:54.32 ID:7Rx7y5wp.net]
設計を学ぶならデザパタはひと通り見ておいて損はないぞ

908 名前:デフォルトの名無しさん [2020/12/27(日) 18:49:43.74 ID:QkMmRpj8.net]
ヘネパタ、パタヘネ、デザパタ。

909 名前:デフォルトの名無しさん [2020/12/27(日) 22:11:00.35 ID:QkMmRpj8.net]
newのコストは気にされますが、deleteのコストは見逃されがちです。

910 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 02:23:23.12 ID:ibU6N4ur.net]
あるクラスのコンストラクタのデフォルト引数を変更するときってどうしたらいいの?
オーバーロードすれば良い?



911 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:27:12.64 ID:7Z4wU2qk.net]
単純に変更じゃダメな理由は?
他のライブラリ?

912 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:33:40.98 ID:pesKZps1.net]
stlコンテナを継承するのはアウトだろ。
うまくやらないとデストラクタが呼ばれなくなっちゃうぞ

913 名前:デフォルトの名無しさん [2020/12/28(月) 09:00:44.26 ID:i4NtF28F.net]
じゃあうまくやりましょうや。

914 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:44:51.94 ID:bVWPeYFg.net]
そもそもC++ではデストラクタを仮想にしてないってことは「継承すんなよ」って宣言だからなぁ

915 名前:デフォルトの名無しさん [2020/12/28(月) 09:55:45.06 ID:W/k+iOkV.net]
なんで継承しないようにしたか意見表明文みたいなモンはどっかにあるのか?

916 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 10:20:49.88 ID:ErVwTltE.net]
仮想関数化するとしない場合に比べて余分なコストがかかるから、必要な理由がない限り基本的にそれは避けるということじゃないかな

917 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 10:32:20.80 ID:4OiRlqvR.net]
C++は1クロックでも速く動作させるために非仮想関数をデフォルトにしたのは理解できる
Javaは動作速度よりもオブジェクト指向の継承動作の一貫性を重視してすべて仮想関数にした、これも時代を考えれば理解できる
C#もJavaと同じくデフォルトを仮想関数にしておいて欲しかったのだが、C#はC++を尊重してデフォルト非仮想関数なんだよね
これはちょっと残念

918 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 11:33:10.90 ID:s2RdB6EU.net]
継承して機能追加っていうのがオブジェクト指向的にもどうかと思うね

919 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 12:34:23.27 ID:QmdcnH/3.net]
finalキーワードがこの時代にあれば間違いなく付けただろうな
文句言ってる奴はガイジ

920 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 12:42:44.62 ID:UEnoPUHl.net]
>>903
継承すんな、は言いすぎ。
private継承なら問題ないと思うけど。実際たまに使われているし。



921 名前:はちみつ餃子 mailto:sage [2020/12/28(月) 13:19:25.85 ID:N6A7dpOQ.net]
デストラクタが仮想ではないものを継承したときの具体的な問題は
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。

設計的に綺麗かどうかはまた別の話だけど。

shared_ptr が (デストラクタが仮想でなくても) 元の型のデストラクタを呼んでくれたりするんで、
場合によってはそういう設計もアリということなんだと思う。

922 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 14:12:57.70 ID:02+J4aSB.net]
>>910
デストラクタが仮想なものを継承してもスライシングは起こりうるよね?そこは関係なくね?
https://en.wikipedia.org/wiki/Object_slicing
> In C++ programming, object slicing occurs when an object of a subclass type
> is copied to an object of superclass type: the superclass copy will not have
> any of the member variables defined in the subclass. ...

923 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 17:31:09.93 ID:V+A6vVBD.net]
C++自由すぎてしんどいな
後方互換性と引き換えに払った代償か

924 名前:はちみつ餃子 mailto:sage [2020/12/28(月) 17:46:19.93 ID:N6A7dpOQ.net]
>>911
スライシング自体は起こるけど、それで予想外のことやメモリ管理の矛盾は起こり難い。

925 名前:デフォルトの名無しさん [2020/12/28(月) 17:50:37.04 ID:i4NtF28F.net]
自由に羽ばたける翼。

926 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:06:08.49 ID:V+A6vVBD.net]
自由すぎて困る部分はLinterを併用することで勝手に回避しろってことかな

927 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:37:15.29 ID:v+s+VlFU.net]
だってCの設計思想が「人間を信用する」だもん
セキュリティが重視される現代的な言語のベースとしては致命的に合ってないんだよね

928 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:40:02.12 ID:02+J4aSB.net]
>>913
やっぱり関係がわからない。
デストラクタが仮想ではないものを継承したときに限ってスライシングが予想外のことや
メモリ管理の矛盾につがなる例をひとつでいいから見えてもらえない?

929 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 18:40:41.01 ID:02+J4aSB.net]
s/見えてもらえない?/見せてもらえない?/

930 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:07:39.46 ID:bVWPeYFg.net]
A <|- B, C みたいなときにB, CをnewしてA*として管理しようとすると破棄の時にAのデストラクタしか呼ばれない



931 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:09:58.26 ID:UEnoPUHl.net]
>>911
仮想でないデストラクタが話題のスコープなのに、スライシングにスコープを移したら議論にならないでしょ。

911) デストラクタが仮想なものを継承する→スライシングになるものが存在する
という命題は
910) デストラクタが仮想ではないものを継承する→スライシングになるものが存在する
という命題と矛盾するわけではない(両立する)ので、その議論はあんまり意味がない。

932 名前:デフォルトの名無しさん [2020/12/28(月) 19:14:08.97 ID:i4NtF28F.net]
スライシング・オプティマイザーとかどうよ?

933 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:36:49.42 ID:02+J4aSB.net]
>>910
> スライシングが起こらないように使う分には問題はない。
ここもおかしいんだよね。

デストラクタが仮想ではないものを継承して派生クラスのオブジェクトを new で作って
基底クラスのポインタを通して delete したら未定義動作になるわけだけど、
これはスライシングを起こしていなくても問題になる。

「派生クラスのオブジェクトを new で作って基底クラスのポインタを通して delete」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。

934 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:43:43.44 ID:592FfNkQ.net]
>>900
変更ってどうやるの?
毎回好きな引数を与えよってこと?
面倒なので、自分の好きな引数を自分のコードの中ではデフォルトにできれば良いのにと思ったのだが、こういう考えは間違っていますか

935 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:51:33.62 ID:7Z4wU2qk.net]
>>923
make関数作るのはダメなん?

936 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 19:59:11.40 ID:v+s+VlFU.net]
デストラクタはpublic仮想かprotected非仮想かpublic非仮想finalのどれかにしろ
っていう一般的結論でよくね

937 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:21:17.65 ID:sYj4+JXZ.net]
>>925
自分で書くときはそう
標準のコンテナのように既存のクラスがそうでなかったら?が発端だからなぁ

個人的には仮想デストラクタがなければ継承はしない
(一部のイディオムを除けば)private継承にするくらいなら委譲する。

938 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:54:56.73 ID:wzipnhb8.net]
デストラクタがprotected:であっても非仮想なら継承したらアウトなんじゃ…
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で

939 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 21:57:44.66 ID:dWPs/bUX.net]
>>924
オブジェクトを作るための関数を作ってはどうかという意味ですか?
確かにそれで良いのでそうします

940 名前:デフォルトの名無しさん [2020/12/29(火) 07:11:18.52 ID:2gsaGKLd.net]
相称型プログラミング。



941 名前:デフォルトの名無しさん [2020/12/29(火) 07:28:15.94 ID:2gsaGKLd.net]
いま私大事なこと言いましたよ。

942 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:37:07.18 ID:H8QGk97F.net]
プログラミング学びには来ないだろ
こんな途上国に

943 名前:デフォルトの名無しさん [2020/12/29(火) 07:38:50.44 ID:2gsaGKLd.net]
【CSS規格、読書感想文】
CSSがアイデアであった段階からスクリプト言語で実装され、初の大規模採用であったネットスケープにおいてもJavascriptによって実装されていたため、規格そのものがC/C++で効率的になるよう設計されていない。※
現行の規格に対して効率的な実装を施したとしても、将来の規格バージョンで維持できると限らないため、結局、スクリプト言語と同様の非効率を許容することになる。
これはつまり、ほとんどのシンボルを動的に確保することを意味する。

※HTML5規格は、C/C++で効率的に実装できるように仕組まれている。

944 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:48:03.75 ID:UwKcs/oz.net]
なるほどねー
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう

945 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 07:49:27.20 ID:oaU8v0Mt.net]
>>927
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく

946 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 08:05:44.29 ID:vWMLZNcx.net]
>>927
型消去とsmart ptr実装で調べるよろし。

947 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 09:18:16.16 ID:qLyTNuLW.net]
定期的に話題になるけど、基底のデストラクタにvirtualが必要なのは
基底型のポインタでdeleteするときだけな
末端のデストラクタさえ呼べれば、次に呼ぶ基底の型は分かりきってるからね

別の言い方をすれば、常に末端の型のポインタをdeleteする分には、virtualなデストラクタなんか要らんということ

948 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 11:55:36.33 ID:So4DneUg.net]
ポリモーフィズムの旨味が消えるw

949 名前:デフォルトの名無しさん [2020/12/29(火) 12:13:46.12 ID:2gsaGKLd.net]
ポリリズムから出汁をとったみたいないい方しますね。

950 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 13:15:00.89 ID:m86wB2y9.net]
まあ普通は末端の型を意識しなくて済むからこそ派生の旨味がある訳で



951 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 14:33:08.60 ID:kdP0thHS.net]
>>936
その点については誰もが一度は通る勘違いだよなw
最初はわけも分からず機械的にvirtualつけて回ってたわ

952 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 20:19:15.83 ID:EiaQ+UBu.net]
うっせえ知っとったわ素でまちがえただけじゃわ!ヽ(`Д´)ノウワーン

953 名前:の名無しさん mailto:sage [2020/12/31(木) 05:29:21.52 ID:/Sdg/sCQ.net]
struct A { virtual void Delete() { delete this; } };
struct B : A { void Delete() { delete this; } };
こうなってりゃ別にいらんな

954 名前:デフォルトの名無しさん [2020/12/31(木) 11:50:06.55 ID:zS3i4lwe.net]
>>795 の同期とか奇妙な質問に思うけど、Javaからくるとそうなるんだな。

955 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 12:23:37.15 ID:3Es5+lkr.net]
javaにだって非同期でメモリ確保するコンテナなんてないでしょ

956 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 13:41:11.66 ID:lvvsunYH.net]
>>942
おとなしく virtual ~A() とするのにくらべて何のメリットも無いな。

957 名前:デフォルトの名無しさん [2020/12/31(木) 13:43:11.73 ID:zS3i4lwe.net]
deleteのコストは、ほんと気にされないな。

958 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:24:44.84 ID:eCxLbtN/.net]
「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

959 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:31:08.20 ID:7G3T5w7B.net]
>>947
母語で曖昧さの無い表記ができますか?

960 名前:蟻人間 mailto:age [2020/12/31(木) 15:40:19.22 ID:+0BPso5e.net]
>>950

> 「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

「「a=1 かつ b=1」以外なら実行」なら、
if (!(a == 1 && b == 1)) { 実行(); }

「a=1 かつ「b=1以外」なら実行」なら、
if (a == 1 && b != 1) { 実行(); }



961 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 15:47:49.87 ID:eCxLbtN/.net]
>>949
THX
「a=1 かつ b=1」以外なら実行、でした。
私が950でレスするのもお見通しですか?w

962 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 18:57:49.39 ID:/Sdg/sCQ.net]
>>945
ただの押しつけだな
うるせーバカ

963 名前:デフォルトの名無しさん [2021/01/01(金) 05:08:27.95 ID:FlWhKtLF.net]
CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。

964 名前: mailto:sage [2021/01/01(金) 18:05:25.39 ID:a5HWfmXn.net]
>>792
それはちょっと古臭いお馬鹿な手法でしょう

正しいやりかたは、
・呼び出し側が呼び出され側に格納エリアを提供する‥‥@
・呼び出し側が確保するべきサイズは@の前に別途問い合わせする

965 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 18:33:17.97 ID:1DPP279V.net]
いずれにしろ面倒

966 名前:デフォルトの名無しさん [2021/01/02(土) 00:08:04.41 ID:f21yM1/d.net]
CにはCで
#define APPBUFSZ (十分でかい整数値)
void foo() {
  char buf[APPBUFSZ];     // buf[]はスタック上にとられる配列(重要
  if (!func(buf, sizeof(buf))) {  // 第2引数は要素数の意味とするならsizeof(buf) / sizeof([0])
    バッファサイズ不足等のエラー
  }
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない

967 名前:デフォルトの名無しさん [2021/01/02(土) 00:11:12.76 ID:f21yM1/d.net]
CSSはDOMの一部でありかつ意味と表記の分離の必要からCSSになった
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象

968 名前: mailto:sage [2021/01/02(土) 00:53:58.35 ID:wp0Bo1A/.net]
>>955
kwsk
ちょっとよくわからない‥

969 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 02:21:09.41 ID:dR/zQLwh.net]
>>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな

970 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 09:15:42.80 ID:hdbwvBU0.net]
>>955
何が黄金なのかさっぱりわからんが…
どこでそれが黄金パターンとされているかの出典だけでも頼む



971 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 09:25:20.55 ID:TBL/2gAq.net]
定番は>>953だろう。
事前にサイズを求めるコストがバカにならないという場合だけ別案を検討するくらいで。

972 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 10:59:35.93 ID:dR/zQLwh.net]
大抵の場合は「事前にサイズを求める」=やり直しになりそうなんだけど

973 名前:デフォルトの名無しさん [2021/01/02(土) 11:29:31.77 ID:f21yM1/d.net]
>>958
左様よほど意図しない事象でも起きない限りエラー処理に行かないぐらい大き目にとる
スタック上に領域をとる場合、時間コストも空間コストもゼロとみなせるからそれで構わない
再帰呼び出しのようなきわめて深い関数呼び出し階層になるときぐらいしか問題は生じない
というわけで、プログラミングしたいこと/すべきことに対するちょっとした洞察と
アーキテクチャーに関する理解さえあれば、言うほど非効率でも不合理でもないことがわかるはず…

974 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 11:39:10.82 ID:YOqoG5bU.net]
>953
確保すべきサイズを問い合わせたときと確保して呼び出した時に必要サイズが変わっていないか気になって夜しか眠れない
(リトライしてもリトライ回数が適切かどうか気になって布団以外で眠れない)

975 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 19:19:34.45 ID:TRpAMVE2.net]
std::make_sharedにインターフェースクラスを継承したクラスを渡したいんですがエラーになりました
これは生ポインタ使えと言うことでしょうか?
https://ideone.com/QUYTgX

976 名前:蟻人間 mailto:age [2021/01/02(土) 19:28:29.87 ID:VBbIup1J.net]
>>964
https://programming-place.net/ppp/contents/cpp/language/029.html#pure_virtual_destractor

977 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 19:32:19.38 ID:TRpAMVE2.net]
>>965
デストラクタとコンストラクタの定義書いたらコンパイルできました
どうもありがとう

978 名前:デフォルトの名無しさん [2021/01/03(日) 08:55:49.95 ID:tz0lNZPE.net]
chromiumのソースみると全面的にstd::unique_ptrを使ってるので、少なくともC++11 以降。

979 名前:デフォルトの名無しさん [2021/01/03(日) 09:00:31.13 ID:tz0lNZPE.net]
レンダリングコアチーム29名中3名が日本人。

980 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:01:40.32 ID:A/6DePqP.net]
newしたクラスをdeleteすればクラス内で保持した変数のメモリも自動的に解放されるのでしょうか? 



981 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:08:46.33 ID:I3Vvl19p.net]
>>969
「クラス内で保持」の仕方による。
deleteに伴って各メンバ変数のデストラクタが呼び出されるので、自動的に解放されるようにすることはできる。

982 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:31:09.41 ID:A/6DePqP.net]
ポインタの参照先は解放されないとかですかね?

983 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 15:46:52.70 ID:ytOMOpf7.net]
所有してるメモリなら解放されて欲しいけど借用してるメモリは解放されちゃ困るででょ

984 名前:デフォルトの名無しさん [2021/01/04(月) 03:53:19.91 ID:wIiDK2+4.net]
借りてる金を誰かが返してくれるなら良いお話では?

985 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 06:10:53.50 ID:FFXfDp9J.net]
>>971
スマポ使ったら?

986 名前:デフォルトの名無しさん [2021/01/04(月) 19:46:23.01 ID:0C4iSsrn.net]
めちゃくちゃ初歩的な質問で申し訳ないのですが文字で「"」を出力したい場合はどうするのですか?
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…

987 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 19:50:08.29 ID:0tciJGtx.net]
えすけぇぷ

988 名前:蟻人間 mailto:age [2021/01/04(月) 19:52:06.94 ID:RRkyDjZk.net]
バックスラッシュor
半角の円記号
を使う

989 名前: mailto:sage [2021/01/04(月) 19:53:04.44 ID:SE/uzuCD.net]
>>975
https://ideone.com/X6MCOB

990 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 02:42:04.01 ID:GBNfOfsJ.net]
https://ideone.com/37sNvH
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!



991 名前: mailto:sage [2021/01/05(火) 02:46:08.54 ID:SOx0PxdD.net]
>>979
https://ideone.com/pxsVp1

992 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 07:30:58.94 ID:rKfNNjQV.net]
>>975
cout << R"(cout<<"これ→"←"<<endl;)";

993 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 08:35:13.05 ID:JJaPBKYs.net]
cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な

994 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 09:02:10.14 ID:x+1hwr2M.net]
>>979
macでよくハマるw

995 名前:デフォルトの名無しさん [2021/01/06(水) 09:32:04.26 ID:UTmmPnLW.net]
HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。

996 名前:デフォルトの名無しさん [2021/01/07(木) 01:07:21.92 ID:DfoUdJtt.net]
次スレ下さい。

997 名前:デフォルトの名無しさん [2021/01/07(木) 14:22:12.51 ID:Oosx0PB6.net]
c++で出力出来ない文字とかあるんですか?
>>981
この書き方ならなんでも出力出来るんですかね?
cout<<"これ→"←"endl;)と出力したい時
cout << R"(cout<<"これ→"←"<<endl;))";
でもいけるんですか?
)が気になりますが…

998 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 15:10:50.98 ID:9QJGSme0.net]
>>986
それを言ってるのが>>982だよ

999 名前:デフォルトの名無しさん [2021/01/07(木) 19:34:55.01 ID:5FPBrit1.net]
>>987
すいません出来ました
fuckという単語なので嘘かと思ってスルーしていました
>>982
ありがとうございます

1000 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 03:01:05.78 ID:cNGMO0JS.net]
>>947
cppは論理演算子が少ないからに優しくないから先のレスのようにチマチマ等価な冗長な論理を書くしかないのが面倒だよね…
not-andなんだからnand演算子(=joint denial(↑)、論理用語)で書けりゃいいのに(もちろん裸cppで



1001 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 05:11:49.99 ID:wkJPfkff.net]
C++界隈のオッサンは普通に4文字とか猥語とかバンバン使ってちゃんとした説明するから気をつけろ

1002 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 05:14:48.68 ID:gKD5AY0L.net]
template <typename A, typename B>
inline constexpr
bool nand(A&& a, B&& b)
{
return !(A == 1 && B == 1);
}

1003 名前:デフォルトの名無しさん [2021/01/08(金) 08:15:42.48 ID:lmjqKHzd.net]
プリプロセッサで演算子増やせないかな?
無理かな?

1004 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 08:24:11.24 ID:gKD5AY0L.net]
マクロの識別子は英数字下線だけだかんな
あ、でも英数字下線の演算子もどきならできるね

template <typename R, typename A>
R Static_cast(A&& a) { return a; }

1005 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 16:15:23.09 ID:qfyOgjuE.net]
プリプロセッサを自作すればいいんじゃないかな

1006 名前:はちみつ餃子 mailto:sage [2021/01/08(金) 16:18:48.68 ID:PuoTeu6a.net]
そんなに演算子を増やしたいか?
関数でそんなに不都合には感じないが。

1007 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:33:21.91 ID:z+YKoOzo.net]
NANDが演算子で書けたからって別に理解しやすくもないので、いらない

1008 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:38:26.63 ID:3K68IyDv.net]
どもるがん知らない人がいると聞いて

1009 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:40:30.13 ID:/42fFLGa.net]
演算子は色々と使えると便利だぞ

1010 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:43:20.57 ID:VopvKl3G.net]
質問良いですか?



1011 名前:デフォルトの名無しさん [2021/01/08(金) 17:46:32.46 ID:CQCRa+nu.net]
1000

1012 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 18時間 28分 12秒

1013 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef