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

C++相談室 part153 YouTube動画>6本 ->画像>3枚


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

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

1デフォルトの名無しさん
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
http://2chb.net/r/tech/1589424805/
※前スレ
C++相談室 part152
http://2chb.net/r/tech/1594528940/

テンプレおしまい
2デフォルトの名無しさん
2020/10/11(日) 00:17:54.48ID:yrSMEX+0
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
3デフォルトの名無しさん
2020/10/11(日) 07:46:00.50ID:2CDQ3L3B
>>1
乙。
4デフォルトの名無しさん
2020/10/11(日) 07:49:37.39ID:eYoRN2yM
>>1
このほとんど投げやりな感じのテンプレがじつにいい
いかにもC++っていう感じがして好き
5デフォルトの名無しさん
2020/10/11(日) 07:52:39.24ID:2CDQ3L3B
などと自画自賛。
6デフォルトの名無しさん
2020/10/11(日) 09:59:16.21ID:kZXFoyze
stdafx.h include したら負け
7デフォルトの名無しさん
2020/10/11(日) 13:02:31.31ID:sfgrEAk/
>>1

最近はpch.h
8◆QZaw55cn4c
2020/10/11(日) 16:35:47.97ID:sJNU+9dX
>>http://2chb.net/r/tech/1594528940/914
>普段から、馬鹿な応答が多かったし、

認めましょう

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

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

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

周り?
私はアマチュアだから、周りにプログラミングをする人はゼロですよ……
9デフォルトの名無しさん
2020/10/11(日) 17:01:01.82ID:pM0zGshh
C++の規格以外の話はスレチ…
10デフォルトの名無しさん
2020/10/11(日) 22:05:10.68ID:wjXte93n
規格の話限定だったの?ここ
11デフォルトの名無しさん
2020/10/11(日) 23:00:26.64ID:pSezOgnt
>>8
わざわざ馬鹿な引きニート相手に真面目な返答しなくても
12デフォルトの名無しさん
2020/10/12(月) 02:50:13.21ID:+FLMYxu9
QZ数ヶ月前俺にスルースキルが無いとか偉そうに言ってなかったっけ
C++に関わる話なら個人的には荒れててもいいと思うが、お前のプロフィールなんか誰も興味ないぞ
13デフォルトの名無しさん
2020/10/12(月) 09:52:20.31ID:941JO02h
>>12
http://2chb.net/r/tech/1601271690/125
14デフォルトの名無しさん
2020/10/12(月) 09:57:09.05ID:O4GtI7oq
>>13
それは仕方ないんじゃないかな。
人間だもの。
15デフォルトの名無しさん
2020/10/12(月) 10:00:39.31ID:rzm6EDrC
批判されたら自演する修正なんてC++関係ない
16デフォルトの名無しさん
2020/10/12(月) 12:54:31.37ID:GHsqP2MR
今とあるOSSのライブラリの動きがあやしいのでデバッグしているんだけど
やっぱりいわゆるモダンなc++はデバッグがつらいわ
デバッガで見てもwrapの嵐でデータの中身になかなかたどり着けない
ステップ実行しててもRAIIをはじめ表面上見えない実装がノイズになってわけわかんなくなる
あとデバッグビルドは恐ろしくパフォーマンス落ちる(Cとかと比べてね)
17デフォルトの名無しさん
2020/10/12(月) 14:12:21.06ID:941JO02h
C++ より C が良いね
18デフォルトの名無しさん
2020/10/12(月) 15:18:22.15ID:Z3Kcjb2S
STLの unique_ptr, shared_ptr, vector, list, forward, move
といった非常に基本的なものもソースを解読するのはとても難しく
strcmpが3行くらいしかなかったのが懐かしい。
それにC++11以降の機能は非常に好みが分かれ、好きな人は好きだが
嫌いな人は反吐が出るほど嫌い。
19デフォルトの名無しさん
2020/10/12(月) 15:23:21.42ID:N0jxybIn
Ubuntu20.04でGtkmmでアプリを作っています…ディレクトリとファイル一覧が欲しくて…。
C++17のstd::filesystemを使ったほうがスマートだと思うけど…使えません…。
そんな古い環境ではないと思うんだけど…direntやstatをやればできると思うけど…古いよね?
これカーネルだし…std::filesystemがスマートだと思うんだけど…このUbuntuではまだなの?
-std=c++17のオプションをつけてコンパイルしても駄目だった…。
20デフォルトの名無しさん
2020/10/12(月) 15:27:01.65ID:O4GtI7oq
Ubuntuはgcc9使えたんじゃなかったかな。
gcc8はファイルシステム使うとき、ライブラリをリンクしないといけなかったと思う。

-lstdc++fs

gcc9から必要なかったと思うので、gcc9を使う方をお勧めします。
21デフォルトの名無しさん
2020/10/12(月) 16:15:10.34ID:N0jxybIn
できました!できました!できましたが…EclipseCDT上で…名称が解決できてない感じ…。
とりあえず…動きました…もう少し調査します…。
22デフォルトの名無しさん
2020/10/12(月) 16:27:02.58ID:N0jxybIn
名称も解決できました…使うよ!
23デフォルトの名無しさん
2020/10/12(月) 16:56:02.38ID:941JO02h
>>18
速度も落ちてそう
24デフォルトの名無しさん
2020/10/12(月) 19:26:54.38ID:Z3Kcjb2S
>>23
メタプログラミングの部分が複雑なだけで生成されるコードは最短に近い
のではないかと思う。
25デフォルトの名無しさん
2020/10/12(月) 20:04:28.37ID:Zjr2Hxnk
設計者ももっと簡潔に書ける技能を身に付けるべきだと思うけどねん
26デフォルトの名無しさん
2020/10/12(月) 20:14:11.80ID:9Fo4KCKO
>>19
-std=c++1zとかstd=gnu++1zじゃなかったっけ
27デフォルトの名無しさん
2020/10/12(月) 20:50:41.81ID:O4GtI7oq
文芸的プログラミングですね。
28デフォルトの名無しさん
2020/10/13(火) 02:00:34.30ID:y5TdNrxl
>>25
STLの性能を維持しつつ簡潔に書ける人間
にしか許されない発言
29はちみつ餃子 ◆8X2XSCHEME
2020/10/13(火) 03:46:05.57ID:jBq+pHZV
汎用的な部品は広い範囲をカバーするわけだから想定すべき状況が多くなるし、
その分だけ相応に複雑になるのは当たり前の話なんだよな。

逆に strcmp が簡潔だったとか言ってもそりゃあ char から成る文字列の比較に
特化していいなら簡潔に出来て当たり前ですよねってだけのことで、
機能が違うものの複雑さを比べようとするのは馬鹿馬鹿しいよ。
30デフォルトの名無しさん
2020/10/13(火) 07:14:55.86ID:AAkThgLB
・同名の一時変数を使いまわす
・メモリの節約のために早めにデストラクタを呼ぶ
・スコープを小分けにして可読性を上げる

みたいな目的のために中括弧を多用するのってアリですか?
それともスコープじゃなくて関数を分けろってなりますか?
31デフォルトの名無しさん
2020/10/13(火) 09:00:40.68ID:KjGL8AJy
>>29
STLは理屈自体は非常に簡潔だとハゲも言っとる
的外れ

>>30
アリだのナシだの・・・
32デフォルトの名無しさん
2020/10/13(火) 09:19:57.42ID:2ekPMyol
STLガーSTLガー言ってるやつ
そもそも++でないCでもポインタ引数2個で始点終点渡すのがロクに書けなさそうだね
33デフォルトの名無しさん
2020/10/13(火) 09:53:49.84ID:f6jDEgc3
STLの凄さがわからない人もいるという。
34デフォルトの名無しさん
2020/10/13(火) 10:50:05.42ID:y5TdNrxl
知ってることの精一杯がポインタのそれなんだな
クスクス
35デフォルトの名無しさん
2020/10/13(火) 12:20:09.76ID:2ekPMyol
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++使わなくてよくね?
36デフォルトの名無しさん
2020/10/13(火) 12:30:12.68ID:y5TdNrxl
雑魚おつ
3731
2020/10/13(火) 12:48:18.65ID:alJhtdGu
いや、あの・・・
STL自体は非常に良く出来てると思うが、俺普段C++(あるいはC++11以降)マンセーSTLマンセーしてる連中は馬鹿にしてるからね・・・w
お前が作ったんちゃうやろと
38デフォルトの名無しさん
2020/10/13(火) 12:50:17.06ID:FpFGKRx+
void fill(int *first, int *last, int val)
{
while(first < last) *first++ = val;
}
39デフォルトの名無しさん
2020/10/13(火) 12:52:08.93ID:jGpIs/AO
理解は出来ないわけじゃなくSTL流に書くのが汚くて馬鹿みたいに感じるだけだ。
40デフォルトの名無しさん
2020/10/13(火) 12:54:03.28ID:jGpIs/AO
配列は処理対象を個数で表現するほうが分かり易いし完結なのに、終端要素で
表そうとするのは単にSTLのとった設計思想の都合でしかないので
馬鹿っぽく感じる。
41デフォルトの名無しさん
2020/10/13(火) 12:56:47.00ID:2ekPMyol
>>37
C++11の何が気に入らんの?
C++98でストレス溜まってたところを楽にしてくれてるやん
型指定子autoは同じことを二度も書かされる屈辱から解放してくれるし
range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
俺的にはテンポラリにconstが必須でなくなって痒いところに手が届いた
42デフォルトの名無しさん
2020/10/13(火) 13:17:38.74ID:y5TdNrxl
@
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;
}

明らかに配列添字明示してる@のほうが無駄が多くて馬鹿っぽいけど
43デフォルトの名無しさん
2020/10/13(火) 13:19:51.21ID:2ekPMyol
>>42
うん、そう言いたかった
35の最終行で言ったつもりだった
44デフォルトの名無しさん
2020/10/13(火) 13:32:32.38ID:alJhtdGu
>>41
別に気に入らんとか言うとらんよvariadic templates無しの時代はキツかったし(逆に言えばテンプレート以外ではそんなに困らん)
新しいもの使ってる=上級者、だと思ってるような、権威を傘に着てる連中を馬鹿にしてると言ったの
マンセーとかの辺りで察してくれ
45デフォルトの名無しさん
2020/10/13(火) 13:43:16.33ID:jGpIs/AO
伝統的にはこうで、速度も速い。
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;
 }
}
46デフォルトの名無しさん
2020/10/13(火) 13:47:15.59ID:jGpIs/AO
>>42 >>43
fill()関数自体はどれでも分かりにくさは感じない。
問題はfill()関数を使う側の分かりにくさ。
btmで終わりを示す方式だと多くの場合、個数numに対して
fill(first, first + num, val);
のようにしか書けないことが多い。
47デフォルトの名無しさん
2020/10/13(火) 13:49:44.76ID:2ekPMyol
>>44
新しいものって現行規格に従っただけで馬鹿呼ばわりか? ブーメランだろ
何を基準に新しいとか古いとか言ってるの?
俺に言わせりゃK&R1で憶えた立場からはC89でさえ新しいんだが
48デフォルトの名無しさん
2020/10/13(火) 13:52:16.91ID:jGpIs/AO
>>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」とは関連が分かりにくく、
「対称性」が失われている。
だから汚く見える。
49デフォルトの名無しさん
2020/10/13(火) 13:54:08.20ID:2ekPMyol
>>45
C++使いの生理反射が消失してるな
不等号気持ち悪くないの?
50デフォルトの名無しさん
2020/10/13(火) 13:55:47.45ID:2ekPMyol
>>48
copy(first1, last1, first2) な
51デフォルトの名無しさん
2020/10/13(火) 13:56:07.20ID:jGpIs/AO
>>45
速度効率をさらに高めたいなら、
void fill(int *top, int n, int val)
{
 int *ptr = top;
 int *btm = top + num;
 while(ptr < btm) *ptr++ = val;
}
と書いても良い。
なので、fill()の内部的な処理効率自体はいくらでも速くできる。
問題は、fill()を使う側の利便性や分かり易さや対称性(=美しさ)。
52デフォルトの名無しさん
2020/10/13(火) 14:11:21.12ID:alJhtdGu
>>47
文盲?
53デフォルトの名無しさん
2020/10/13(火) 14:14:12.35ID:2ekPMyol
>>51
void fill(int* first, int* last, int val)
{
while (first != last) *first++ = val; //nがなきゃtop+nなんて計算そもそもいらん
}
呼び出し側でfill(first, last - first, val)なんてやられた日にゃ引いてから足し直すことになるだろ
54デフォルトの名無しさん
2020/10/13(火) 14:19:38.29ID:FpFGKRx+
これはダメなんか遅いんか
void fill(int *first, int *last, int val)
{
while(first != last) *first++ = val;
}
55デフォルトの名無しさん
2020/10/13(火) 14:44:57.22ID:jGpIs/AO
>>53
>呼び出し側でfill(first, last - first, val)なんてやられた日にゃ引いてから足し直すことになるだろ

それは屁理屈と言うか、もしあなたが頭のいい人なのに本気でそう思っているなら
机上の空論というか、実際のアプリ作製の経験が足りないと思われる。
ほとんどの場合、配列の処理範囲はlastではなく個数のnumの方が便利。
lastは割り出すのにワンクッション手間が増えてしまう。
56デフォルトの名無しさん
2020/10/13(火) 15:08:27.75ID:f6jDEgc3
初心者がSTLを批判してもダメだろ。
57デフォルトの名無しさん
2020/10/13(火) 15:19:48.82ID:f6jDEgc3
キミたちが言いたいのは、事前に個数がわからないのに関数を呼び出せるのはオカシイって事だろ?

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

それは、呼び出せる方が汎用性があるんだよ。
全然オカシクない。
58デフォルトの名無しさん
2020/10/13(火) 16:12:52.22ID:jGpIs/AO
>>56
当然だ。
初心者じゃないエキスパートだから批判している。
59デフォルトの名無しさん
2020/10/13(火) 16:14:05.11ID:jGpIs/AO
>>57
そういう問題じゃない。
利便性が損なわれているから批判しているだけ。
論理的に正しいかどうかではなく、便利かどうかの観点。
60デフォルトの名無しさん
2020/10/13(火) 16:14:51.63ID:2fTKv7IK
イテレータぐらいはイディオムとして慣れろや
61デフォルトの名無しさん
2020/10/13(火) 16:21:31.28ID:jGpIs/AO
>>60
なんでこんな汚いライブラリに慣れなきゃならないの。
C++委員会がプログラマの思想を強制する権利は無い。
62デフォルトの名無しさん
2020/10/13(火) 16:45:48.79ID:2fTKv7IK
>>61
じゃあお前ならどんなAPI設計にするの?
63デフォルトの名無しさん
2020/10/13(火) 16:48:01.34ID:2ekPMyol
>>55
標準のcopy関数もロクに知らないくせに・・・いや、これは置いとく

では、おまえさんは配列の終点をどのように渡すんだ?
int main()
{
int dim[100];
fill(dim, /*ここ*/, 0);
}
64デフォルトの名無しさん
2020/10/13(火) 16:49:01.87ID:zWj2VWPf
同値比較はコストがかかるケースもあるんじゃないですか?
要素数を指定するほうが処理コストが抑えられるような気がします
素人意見ですみません;_;
65デフォルトの名無しさん
2020/10/13(火) 17:13:32.12ID:FpFGKRx+
配列だから話がややこしくなるんで
リストだったらどうみても始点終点やろ
インターフェースを合わせるために
配列も始点終点にしただけやろ
66デフォルトの名無しさん
2020/10/13(火) 17:16:38.67ID:jGpIs/AO
>>65
リストでも繰り返しなら個数でもいける。

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

fill(dim, dim + 100, 0);  // めちゃくちゃ不便。何このタイピング量。
67デフォルトの名無しさん
2020/10/13(火) 17:19:05.56ID:jGpIs/AO
しかも問題なのは、vectorの中ほどで追加や削除をしても、終点が自動修正されないこと。
それでは始点と終点で管理している意味が無い。
listならいけることはいけるが。
しかし、結局、vetorとlistの違いを意識しなければバグることになる。
68デフォルトの名無しさん
2020/10/13(火) 17:25:01.13ID:2fTKv7IK
>>67
建設的な議論しようや
お前ならどう設計するか書いてみ?
69デフォルトの名無しさん
2020/10/13(火) 17:27:25.69ID:jGpIs/AO
>>68
アイデアを盗作、剽窃しようとするなよ。
70デフォルトの名無しさん
2020/10/13(火) 17:34:02.61ID:2fTKv7IK
はい雑魚
71デフォルトの名無しさん
2020/10/13(火) 17:44:12.19ID:jGpIs/AO
>>70
なんのこっちゃ。
72デフォルトの名無しさん
2020/10/13(火) 18:08:23.24ID:2ekPMyol
>>66
ズコー(aary

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

その下をいきやがったw
マジックナンバーって言葉知ってる?
73デフォルトの名無しさん
2020/10/13(火) 18:42:42.89ID:f6jDEgc3
レベルが低すぎて議論するだけ無駄なので、この話題はこれでお終いにしてはどうだろか。
74◆QZaw55cn4c
2020/10/13(火) 20:06:42.81ID:455DutI7
>>41
>C++11の何が気に入らんの?

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

RVO 前提コードで私は妥協しているのですが
75デフォルトの名無しさん
2020/10/13(火) 21:22:13.35ID:2ekPMyol
お気の毒に
76デフォルトの名無しさん
2020/10/13(火) 22:22:30.85ID:vraeBdjb
よくそのレベルでSTLにケチつけられるなw
77デフォルトの名無しさん
2020/10/13(火) 22:53:46.89ID:mhza1+DZ
>>35
×: void fill(int first[], int n, int val) //素直にこう書きやがれ
○: void fill(int first[], const int n, const int val) //素直にこう書きやがれ
78デフォルトの名無しさん
2020/10/13(火) 23:00:47.08ID:1+uImEGd
個数不定や個数を数えるのがハイコストでも走査できたり、実在しないアドレスや好きな値でも番兵値として指定できたりするのがlast指定のifのメリットなんじゃね?

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

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


気がする
79デフォルトの名無しさん
2020/10/13(火) 23:07:21.55ID:jGpIs/AO
>>78
もちろんそうなんだが、STLは馬鹿なので、そういう役目はほぼ果たしてない。
証拠として、途中の要素を削除してしまうとlastが全く意味を成さなくなるから。
80デフォルトの名無しさん
2020/10/13(火) 23:26:38.01ID:8ZZNtI2L
何がどう証拠として、なのかわけが分からん。詳しく説明してくれ
81デフォルトの名無しさん
2020/10/13(火) 23:27:15.76ID:SS1TQwr/
流れ全部読んでないけど上のほうで言ってる人がいるように
> void fill(int *first, int *last, int val)
を見た時点でCやってる人間からしたら関数内部が
> while(first < last) *first++ = val;
こう簡潔になってるだろうと想像しやすくてスッキリしてない?
別に想像する必要は無いんだけど想像してしまうというか

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

そう間違えちゃう人は
fill(dim1, dim1 + 200, 0);
fill(dim1, dim1 + 100, 2);
fill(dim2, dim1 + 100, 0);
とも間違っちゃうから大変だね
そういう人は何より
fill(dim2, 100, 0);
の表記を使いたいんやろね
何か分かったわ
85デフォルトの名無しさん
2020/10/13(火) 23:58:38.02ID:BWJh5EXt
全然別のコンテナのイテレータを混ぜて指定できてしまうのは確かに欠点なんだよね
だからRangeが必要だったんですね
86デフォルトの名無しさん
2020/10/14(水) 00:11:56.45ID:lJFXTbVx
>>84
あなたの脳内にはプログラミングのセンスの様なものがまだ育ってない。
そういう人ばかりがC++委員会にいるので
「机上の空論的な設計」
と言われるようになっている。
87デフォルトの名無しさん
2020/10/14(水) 00:20:29.03ID:lJFXTbVx
>>86
それに、先頭アドレスと長さを組にするというのは、プログラミングにおける
伝統になっていてPascal文字列やWin32のバッファの指定などもそれを
踏襲している。
topとbtmを指定する方法は番兵方式ともまた違う、STL独特の方式。
番兵方式はミスが入りにくいが、btmアドレスを指定する方式はbtmに
間違った値をしていた時にとんでも無い結果を生み、バッファオーバーラン
より酷い。
btmにtopとは全く関係の無いとんでもない値を指定できてしまうから。
配列は、0〜N-1までの分かり易い値で位置を指定できることが特徴の一つなのに
STLはそれも破壊してしまっており、範囲チェックも分かりにくくなる。
高級言語なのに、アセンブラより複雑。
アセンブラでは少しでも高速化するためにtop,btm方式が使われたこともあったが、
この高級言語の時代にはそぐわない。
分かりにくい。
88デフォルトの名無しさん
2020/10/14(水) 00:24:28.14ID:lJFXTbVx
もっといえば、MSがグラフィックで矩形を描くときに、
左上の点と右下の点を指定する方法もセンスが無いといわれている。
これも沢山グラフィックのプログラムをしてくると
左上の点と「サイズ」を指定するのが合理的であることが分かってくるが
経験が足りて無い人には「好みの差」程度にしか認識できない。
それともとても似ている。
89デフォルトの名無しさん
2020/10/14(水) 00:34:35.60ID:eS9CcskG
ID:lJFXTbVxが参加するレビューは荒れる…
…!
90デフォルトの名無しさん
2020/10/14(水) 00:36:44.29ID:eS9CcskG
つか(sx, sy, width, height)式の矩形表現は
クリッピングとかしだすと結局内部で
(sx, sy, ex, ey)表現に
91デフォルトの名無しさん
2020/10/14(水) 00:40:01.03ID:eS9CcskG
効率的な番兵法は常にアルゴリズムとともにあるから
  ↓こんなやつ
  while (buf[i] < buf[i]) { std::swap(buf[i], buf[i]); i--; } // buf[0]はINT_MAX

範囲の一般的表現のうちに含めるのは頭おかしい
92デフォルトの名無しさん
2020/10/14(水) 00:44:56.12ID:W3antmDc
fill(p, p + n, 0);は
fill(p + m, p + n, 0);という表現にもスムーズに拡張できる
個数の場合は
fill(p + m, n - m, 0);って書くことになるね
93デフォルトの名無しさん
2020/10/14(水) 00:47:49.37ID:g6nWODwp
ここまで fill_n 無し
94デフォルトの名無しさん
2020/10/14(水) 01:12:33.89ID:qrfIlgcS
>>88
なんで?中心の点とサイズなら分かるけど
ついでに言うと左上右下で矩形表現するのは重なりや画面外は見出しの判定が楽だからそっちの方が便利な場合もある
事情に応じた使い分けを考慮できないあたりが経験足りないっすねあなた
95デフォルトの名無しさん
2020/10/14(水) 02:21:44.28ID:dCmiKU7l
>>41
>range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
これに対して
>>55
>机上の空論というか、実際のアプリ作製の経験が足りないと思われる。
>ほとんどの場合、配列の処理範囲はlastではなく個数のnumの方が便利。
ここには同意する

実際問題、STLあるいはそれに倣ったコード以外、ソフト開発の場面で
range-basedで簡潔に済むループはそんなに無い(無理矢理書き換えることは出来るとしても)
96デフォルトの名無しさん
2020/10/14(水) 02:44:00.29ID:EuYzPNma
てか
せっかくC++使ってんのに何故
リストの始点と終点とを別々に渡したり
リストの始点と要素数とを別々に渡したり
とかやりたがるの?
97デフォルトの名無しさん
2020/10/14(水) 06:39:07.67ID:fAfIBrSZ
>>77
動作確認くらいしてから書けよ
http://codepad.org/shRYygYw
98デフォルトの名無しさん
2020/10/14(水) 06:42:43.22ID:fAfIBrSZ
>>88
ここC++スレってこと忘れてねえか?
矩形クラス作って右下とサイズと両方使えるようにすれば済む話だろ
99デフォルトの名無しさん
2020/10/14(水) 06:45:09.59ID:fAfIBrSZ
>>96
全要素とは限らないからだよ
100デフォルトの名無しさん
2020/10/14(水) 06:46:30.43ID:fAfIBrSZ
fill(dim, 2, 98, 0); //引数4個
fill(dim + 2, dim + 98, 0); //引数3個
101デフォルトの名無しさん
2020/10/14(水) 07:58:42.58ID:qpMvVLdo
>>83
ケアレスミス多いな。
102デフォルトの名無しさん
2020/10/14(水) 08:14:56.28ID:eS9CcskG
>>97
>>97が同じ関数を定義したのだから仕方が無い
>>77は×と○は×を○に修正せよと言う意味であって書き並べよと言う意味ではない
103デフォルトの名無しさん
2020/10/14(水) 08:25:44.48ID:fAfIBrSZ
>>102
修正せよという主張が誤っていると指摘しているんだ
intというかポインタでも参照でもない値の引数のconstは多重定義において意味を成さない
104デフォルトの名無しさん
2020/10/14(水) 09:06:12.19ID:+cbHRaf/
完全に初心者のイチャモンで、他の言語も使えて無さそうだから、何か一つやり遂げてみたら良いと思います。
105デフォルトの名無しさん
2020/10/14(水) 09:18:06.97ID:fAfIBrSZ
具体性のない、更には漠然としすぎて一体何の話かわからんことしか言えないやつこそ初心者だろうが
106デフォルトの名無しさん
2020/10/14(水) 09:31:01.91ID:eS9CcskG
>>103
関数内で修正しない変数にconstをつけよという当たり前の話、
C++ではCよりも関数引数についてもやりやすくなっているからやったら?
という話ェ、
107デフォルトの名無しさん
2020/10/14(水) 09:31:55.45ID:eS9CcskG
訂正orz、
×: 修正
○: 値を変更
108デフォルトの名無しさん
2020/10/14(水) 09:39:06.95ID:aLuhanwR
int引数にconst付ける意味ってなんですか?
値渡しされるのだから関数内で値が更新されても呼び出し元には関係ないこと(関心がないこと)だと思えますが
109デフォルトの名無しさん
2020/10/14(水) 09:42:59.50ID:eS9CcskG
>>108
>呼び出し元には関係ないこと(関心がないこと)
左様
呼び出し元に見せる宣言文では値渡しのconstは外して良い
C++ならそれができる
Cではできない(constをつけるとしたら定義と宣言の両方に付けねばならない
110デフォルトの名無しさん
2020/10/14(水) 09:43:23.77ID:lJFXTbVx
>>92
あなたは経験不足だからどちらの方が便利かが分かって無い。
どちらの方式も互いに単純変換できるが、現実のアプリにおいては個数の方が
便利だと言っているのだが、あなたにはそれが分からない。
そういう人達がC++委員会に多くなってきているからC++の仕様が変になって
きていると言われているのだよ。
111デフォルトの名無しさん
2020/10/14(水) 09:45:58.36ID:lJFXTbVx
>>100
>fill(dim, 2, 98, 0); //引数4個
これは違う。
インタプリタ言語ではこのようになってしまうが、伝統的にはCでは、
fill(dim +2, 98, 0); //引数3個
と書ける。
112デフォルトの名無しさん
2020/10/14(水) 09:50:15.45ID:fAfIBrSZ
>>111
うわー・・・俺が示したコードが読めてないな
おまえのコード、意味違ってるんだけどw
113デフォルトの名無しさん
2020/10/14(水) 09:52:34.69ID:eS9CcskG
ていうか>>91まつがえた。n_、
正: while (buf[i-1] < buf[i]) { std::swap(buf[i-1], buf[i]); i--; } // buf[0]はINT_MAX
アウチ、
114デフォルトの名無しさん
2020/10/14(水) 10:09:01.38ID:lJFXTbVx
>>90 >>94
それはクリッピングする場合のみだ。
しかし、いまのグラフィックライブラリはクリッピングは基本的に自動化されているので
クリッピングをアプリプログラマが自分で行う必要がある頻度はとても低い。
そういうことが優先順位ということ。
ライブラリの良し悪しは優先順位の高い作業が楽に書けるかどうかで決まる側面がある
から経験不足の人は優先順位が分かって無いので良いライブラリはなかなか作れない。
115デフォルトの名無しさん
2020/10/14(水) 10:31:42.62ID:Z4l68xx0
ライブラリの良し悪しは俺様の流儀に従っているかどうか、まで読んだ
116デフォルトの名無しさん
2020/10/14(水) 10:52:50.19ID:fAfIBrSZ
>>106
全然当たり前じゃねえよ
値引数にconstはつけねえんだよ
周り見てみろよ
周りがあればの話だが
117デフォルトの名無しさん
2020/10/14(水) 11:20:31.96ID:fAfIBrSZ
>>111
待ってるんだけど返事がないね
fill(dim +2, 98, 0);
これでどうやって&dim[98]を知り得るの?
118デフォルトの名無しさん
2020/10/14(水) 11:38:41.41ID:+cbHRaf/
「個数のほうが便利で現代的で洗練されている」と言ってる人は、STLが何故このような設計になったのか、全く理解していないので
、公共の場で主張するのはよくないのでは?
119デフォルトの名無しさん
2020/10/14(水) 11:43:45.06ID:RddNL28g
STLは何故このような設計になったか教えて
120デフォルトの名無しさん
2020/10/14(水) 11:44:04.35ID:dCmiKU7l
>現代的で洗練されている
誰がそんなこと書いてんだ
てか現代的とか洗練とかアホかと
なぜそうなっているか理解出来てないのはお前、D&Eの日本語版にその辺の話は載ってるから読んでこい
121デフォルトの名無しさん
2020/10/14(水) 11:53:23.30ID:fAfIBrSZ
標準を盲信しろとは言わない
おかしいと思うことはおかしいと言っていい
いい、つーか歓迎で議論には付き合う
「議論には」な、感情論だの押しつけだの
そういう見苦しいのは相手せん
122デフォルトの名無しさん
2020/10/14(水) 12:09:10.96ID:lJFXTbVx
>>117
あなたが何も書いてなかったから、98は個数だと認識して書いた。
もし、btm要素であるなら、
fill(dim + 2, dim + 98, 0);
と書くことになるが、このような btm 要素を指定する書き方が現実的な
アプリではコーディング的に非効率な問題のある書き方だと昨日から主張し続けている。
123デフォルトの名無しさん
2020/10/14(水) 12:15:37.74ID:lJFXTbVx
>>122
なぜかといえば、現実の大規模アプリでは配列の先頭の名前は、もっとずっと長く、
たとえば、aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
のようになっていることが多い。それで昔ながらの C スタイルであれば、
fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, 個数, value);
と書けば済むのに、STLスタイルだと、
fill_stl(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx,
   aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx + 個数,
   value);
のように複数行で書かないといけないハメになってしまう。
そして、aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxxに似た
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
というような他の変数もあることが多く、そうなると、
fill_stl(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx,
   aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx + 個数,
   value);
のように書き間違えてもコンパイルエラーにならないので非常に重大な問題を巻き起こす。
また、少し修正したい場合、topとbtmの両方を修正しなくてはならないのに、
どちらか片方の
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
だけを
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
に書き換えてしまって変数名が長いので気づきにくくてどこでバグが入ったか分からない
重大な問題が入り込んでしまうことが有る。
その点、昔ながらのCスタイルではこのような問題が起きないので安全。
124デフォルトの名無しさん
2020/10/14(水) 12:20:41.76ID:GsUUoEHv
なるほど一里塚
125デフォルトの名無しさん
2020/10/14(水) 12:23:42.24ID:fAfIBrSZ
>>123
只でさえ長い識別子に名前空間だのスコープだのテンプレート引数がついて読む気なくさせるようなのはよく見かけるね
そういうのはusingでエイリアス作ったり左辺値参照でスコープを狭めたりで対応するのがよくあるケース
auto first = aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.begin();
auto last = aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.end();
とでもやっとけば楽になるのもある

昔ながらのCやC++98にしがみつくのをやめてC++11〜17の新機能を有り難く頂戴することで
色んなストレスから解放される
126デフォルトの名無しさん
2020/10/14(水) 12:40:03.79ID:ssGc8zMA
>>123
「個数」で誤魔化されてんな
個数でもこうなるんじゃね

fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
127デフォルトの名無しさん
2020/10/14(水) 12:52:15.34ID:lJFXTbVx
>>126
それは経験的にならないことが多い。
なぜなら、個数は配列自体が覚えているだけでなく、何らかの変数に入っている事がとても多いから。
典型的には、個数はマクロ変数やconst int変数などに入っているか
または、ファイルから読み込んだ場合には読み込んだときの個数が
グローバル変数などに入っている。
128デフォルトの名無しさん
2020/10/14(水) 12:55:51.73ID:lJFXTbVx
>>127
それから、
>fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
の場合だと、たとえ第二引数の部分に間違いがあってもバグの程度がまだまし。
なぜなら、xxx.size()は個数なので間違いがあってもデバッガで見てもまだ分かり易いバグとなるし、
バッファオーバーランしても個数なのでどこかで停止してくれる。
ところが、btm要素方式の場合、書き間違えてbtm要素が全く別の配列の中を指してしまっている場合には
バッファオーバーランが停止することなくほぼ無限に続くことになる。
129デフォルトの名無しさん
2020/10/14(水) 13:02:09.57ID:ssGc8zMA
つまりずっと配列前提の話をしてたワケ?

そりゃ旧来的な書き方の方が合理的だ
配列とその個数のデータ構造なら明らかにdefineされてる個数を与えた方がラクになるな
130デフォルトの名無しさん
2020/10/14(水) 13:02:59.84ID:tpi9enQu
stl以前にエディタもまともに使えないって
131デフォルトの名無しさん
2020/10/14(水) 13:04:53.29ID:lJFXTbVx
>>128
さらに、その場合、全要素を対象にしているから専用の関数などや
for each文などで対応できる。
一方、良くある例として、あるところから10個の要素に対して処理したい
などというものがある。
それは例えば、エディタを作っている場合に画面内に10行表示されていることが
分かっている場合だ。
そういう場合に、C流だと
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top], 10);
で良いのに対し、STL流だと
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top], &aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top + 10]);
ととても長くなる。
132デフォルトの名無しさん
2020/10/14(水) 13:05:56.40ID:lJFXTbVx
>>129
STLはリンクリストではなく、(動的)配列を推薦しているから。
133デフォルトの名無しさん
2020/10/14(水) 13:11:45.84ID:lJFXTbVx
>昔ながらのCやC++98にしがみつくのをやめてC++11〜17の新機能を有り難く頂戴することで
>色んなストレスから解放される
同意しかねます。
134デフォルトの名無しさん
2020/10/14(水) 13:20:20.16ID:ssGc8zMA
>>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)

***

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

こういう変数になるんじゃないのかな
const int aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx_Lines = get_draw_lines();
135デフォルトの名無しさん
2020/10/14(水) 13:22:47.51ID:EoVZjJO9
よくこんなくだらないことに熱くなれるな
136デフォルトの名無しさん
2020/10/14(水) 13:32:19.34ID:+cbHRaf/
STLは設計のお手本的な部分があり、誰もが良く学ぶべきだけど、今回の事例で初心者がどう感じるのか、データが取れたのでは?
137デフォルトの名無しさん
2020/10/14(水) 13:34:00.13ID:lJFXTbVx
>>134
その様な場合でも、
C流:
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top],
      numXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx);
STL流:
draw_lines(&aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top],
      &aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[top + numXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx]);
となりC流の方がまだまし。

それとC流だとハンガリアン記法で名前を付けて置けば、なんとかなってる。
STL流は最悪で、非常に危険な書き方。
138デフォルトの名無しさん
2020/10/14(水) 13:34:55.35ID:HhRPmWpc
初心者は「ぼくちんのコードが長くなるからこの設計はクソ!」と言いがちなことが分かったので今後の教育の時に注意しようと思いました
139デフォルトの名無しさん
2020/10/14(水) 13:35:10.63ID:lJFXTbVx
>>136
ちなみにどっちが初心者だと考えているのか。
こっちはプログラミングのエキスパートだが。
140デフォルトの名無しさん
2020/10/14(水) 13:35:22.62ID:+cbHRaf/
引数に個数を指定するほうが洗練されていると初心者が言うけれど、設計の観点から言えば、事前に個数がわからなくても呼び出せるほうが汎用性がある。
つまり、ジェネリック。
141デフォルトの名無しさん
2020/10/14(水) 13:37:07.37ID:+cbHRaf/
STLごときでつまずいてたら、関数型なんかさっぱり理解できないだろな。
142デフォルトの名無しさん
2020/10/14(水) 13:40:26.69ID:+cbHRaf/
2chだった頃、このスレでもプッシュ型インターフェースが流行りかけてたんだよな。
5chになって若干質が落ちたんじゃないだろか。
143デフォルトの名無しさん
2020/10/14(水) 13:41:57.79ID:HhRPmWpc
初心者くんはこの世の全ての範囲のendが「先頭からの個数」で決まる場合しかないと思い込んでるみたいだけど
例えばfindの検索結果とか、GUIの現在カーソル位置とかで決まる場合もあって、その場合だと本質的でない「個数」という数字を求めるコードが結局長くなってしまうことに注意しよう
簡単な練習問題だよ
144デフォルトの名無しさん
2020/10/14(水) 13:44:01.55ID:ssGc8zMA
>>137
その配列のラッパークラスは作らんの?
145デフォルトの名無しさん
2020/10/14(水) 13:51:26.20ID:Z4l68xx0
>>127
マクロ変数(定数?)とかグローバル変数とか生配列とか、旧態依然としたCの作法が好きなら無理にC++やSTLを使わずに自分の好きな道具を使えばいいんでないの?
今でも(そして恐らくこれから先も)変わらず使えるのだから。

自分の好みに合わないものを他人が嬉しそうに使ってるのが気に入らないの?
146デフォルトの名無しさん
2020/10/14(水) 13:54:48.00ID:OK1/udlE
配列が個数を持ってるなら
fill(配列, 値);
で良くね?
147デフォルトの名無しさん
2020/10/14(水) 14:08:57.43ID:lJFXTbVx
>>141
いや、数学的ならむしろSTLより理解できる。
148デフォルトの名無しさん
2020/10/14(水) 14:35:28.55ID:fAfIBrSZ
>>146
常に全要素ならな
149デフォルトの名無しさん
2020/10/14(水) 14:38:31.07ID:fAfIBrSZ
> こっちはプログラミングのエキスパートだが。

にーしちゃ恥ずかしいミスしてたね、さっき
fill(dim, 2, 98, 0); //引数4個
fill(dim + 2, dim + 98, 0); //引数3個
fill(dim +2, 98, 0); //伝統的にはCでは、(中略)と書ける。 ←これw
150デフォルトの名無しさん
2020/10/14(水) 14:39:14.81ID:fAfIBrSZ
引数4個と3個の違いは有耶無耶にしたいのかな?
151デフォルトの名無しさん
2020/10/14(水) 15:03:45.73ID:d5S3+KHs
GCC9で-std=c++2aが使えるんだけど…C++20です…これってさぁ…
実験的にサポートみたいな事行ってるけど、使ってもOKなの?
experimental supportって言ってるけど…みんなどうしてるの?
152デフォルトの名無しさん
2020/10/14(水) 15:07:19.79ID:ssGc8zMA
>>151
「腕に自信のある奴は無償デバッグ要員になってくれ」という委員会からのお願い
見つけたバグやあやしい挙動の個数に応じて名を上げることも出来る
153デフォルトの名無しさん
2020/10/14(水) 15:14:57.44ID:lJFXTbVx
>>149
あなた、話の流れを理解して無いですよ。
154デフォルトの名無しさん
2020/10/14(水) 15:15:36.27ID:d5S3+KHs
C++17で行きます…17でも十分新しい…。
155デフォルトの名無しさん
2020/10/14(水) 15:16:35.85ID:fAfIBrSZ
>>153
で、終点アドレスではなく個数にすると
引数が少なく済むの?
156デフォルトの名無しさん
2020/10/14(水) 15:37:35.37ID:+cbHRaf/
https://isocpp.org/std/status
157デフォルトの名無しさん
2020/10/14(水) 15:41:12.49ID:lJFXTbVx
>>155
今回は、引数の個数は議題にはして無い。
158デフォルトの名無しさん
2020/10/14(水) 15:45:10.45ID:lJFXTbVx
>>157
つまり「引数の個数が多くなるからSTLが問題」などとは全く言って無いということ。
別に個数方式にしても引数が少なくなると言うことではない。
引数の個数ではなく、コーディングする時の引数の記述量を減らせることが多い。
+演算子も使わなくて済むのでケアレスミスも減らせる。
またtopとbtmで重複する事を書かなくて済む。
そしてそれは安全性に繋がる。
なぜなら同じであるべきところを誤って異なるように書く可能性がなくなるから。
159デフォルトの名無しさん
2020/10/14(水) 15:51:28.70ID:+cbHRaf/
お前の考える正しいライブラリがSTL以上に使われるなら、お前の意見にも一理あるのかもしれないけど。

ここで見た分には、初心者が使い方わからんと騒いでるだけに見える。
160デフォルトの名無しさん
2020/10/14(水) 15:53:12.69ID:fAfIBrSZ
>>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みたいなプリティ発言するほど墓穴がでかくなるだけだぜ
ミスはミスで潔く認めたほうが被害拡大を防げると思うよ
161デフォルトの名無しさん
2020/10/14(水) 15:54:50.74ID:lJFXTbVx
>>160
逃げたりとかじゃなく、あなたの言っている意味がこちらには伝わってないから
混乱が生じているだけ。
あなたの説明は言葉が足りて無いから。
162デフォルトの名無しさん
2020/10/14(水) 16:07:49.07ID:lJFXTbVx
>>160
>しかもだよ、これインタプリタ方式とコンパイラ方式でどんな違いが出るの?
インタプリタ方式だと必ずそうなると言う意味ではなく、arr + 2
が「3番目の要素のアドレス」の意味で使えるのは、大体コンパイラ系の言語の仕様。
その意味で、
xxx(arr + 2,...) ではなく、xxx(arr, 2,...) のように書くのはインタプリタ言語
に多い書き方だから。
163デフォルトの名無しさん
2020/10/14(水) 16:49:10.93ID:fAfIBrSZ
>>161
いや伝わってるよ
配列と個数で渡す方式と、始点と終点で渡す方式で
引数の個数に違いが出るという100におまえさんは反応してて
しかも引数の個数を減らす例を示そうとしてた(そしてミスった)

>>162
コンパイラ方式というよりCの影響を受けた言語ってことだね
そうでない言語では配列+整数はSYNTAX ERRORかvalarrayのような話で
164デフォルトの名無しさん
2020/10/14(水) 16:53:34.15ID:lJFXTbVx
>>163
あなたの言っていることは、理解できないので議論を終えることにします。
逃げているのではなく、意味が分からないので。
165デフォルトの名無しさん
2020/10/14(水) 17:07:55.33ID:fAfIBrSZ
結局、配列と個数で渡す方式が、始点と終点で渡す方式よりも
優位であることを示すのを諦めたわけだね

示せるわけがないという俺の予想どおりだわ
166デフォルトの名無しさん
2020/10/14(水) 17:14:10.14ID:lJFXTbVx
>>165
いや、十分に示せているはずなのに、このスレでは頑なに理解して貰えないだけです。
167デフォルトの名無しさん
2020/10/14(水) 17:15:40.91ID:+cbHRaf/
「我はSTLを超える者なり!!」などと初心者が言い出してビックリしたわ。
168デフォルトの名無しさん
2020/10/14(水) 17:32:06.99ID:EoVZjJO9
これだけくだらない問題に白熱してる時点でセンスがない
169デフォルトの名無しさん
2020/10/14(水) 17:36:09.65ID:fAfIBrSZ
>>166
で、配列と個数で渡すことで、始点と終点より引数の個数は減ったのか?
170デフォルトの名無しさん
2020/10/14(水) 17:37:36.44ID:RddNL28g
だよね
どの話題に食いつくかでそいつの能力がわかる
このスレの老害はどうでもいいレベルの話を延々語る
171デフォルトの名無しさん
2020/10/14(水) 17:42:38.61ID:ZV1nncqg
>どの話題に食いつくかで

自称数学者の発想ですね判ります
172デフォルトの名無しさん
2020/10/14(水) 17:48:04.39ID:4qg33D8d
131見るとわかるけど
コピペや置換する発想すらない人がstlの利点とか理解できるわけないし
173デフォルトの名無しさん
2020/10/14(水) 17:55:52.69ID:lJFXTbVx
>>169
外国の人?
引数の個数が減るとは一言も言ってない。
引数の記述上の長さが減り、分かり易さや間違いにくくなるといっている。
さんざん同じ事を言っているのに、全く違うことを言ったことになってしまっている。
174デフォルトの名無しさん
2020/10/14(水) 18:23:42.32ID:lJFXTbVx
機械翻訳して、長さと個数が混乱して訳されてしまっているのだろうか。
175デフォルトの名無しさん
2020/10/14(水) 18:53:52.73ID:qpMvVLdo
>>147
数学で言う関数は関数型じゃないよ。
写像とか勉強したら?
176デフォルトの名無しさん
2020/10/14(水) 19:16:14.41ID:fAfIBrSZ
>>173
> fill(dim, 2, 98, 0); //引数4個
> 98は個数だと認識して書いた。

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

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

言うまでもないが、俺は間違えずにコード示してて
間違えたのはおまえさんだけだぞ
それを一般論として優位ということにはできんだろ
177デフォルトの名無しさん
2020/10/14(水) 19:16:18.40ID:qpMvVLdo
この手の配列の話でrangeが出てこないのはなんで?
最近の標準には疎いけど、この手の問題のほとんどがboost::rangeで解決しない?
178デフォルトの名無しさん
2020/10/14(水) 19:18:22.41ID:d5S3+KHs
@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>*だけで大丈夫なのかメモリアドレスまでは
僕は把握してません…参照の値渡しだけで行くだろうけど…なぜ大丈夫なのか説明できません…。

誰か…。
179デフォルトの名無しさん
2020/10/14(水) 19:19:42.63ID:fAfIBrSZ
>>174
長さと個数の混同は「先頭アドレスを渡す」って前提で起きることだよな
dim + 2という例を示したら見事に思う壺にハマるやつがいてワロタ
180デフォルトの名無しさん
2020/10/14(水) 20:10:37.92ID:qrfIlgcS
>>178
日本語でどうぞ
181デフォルトの名無しさん
2020/10/14(水) 20:23:03.09ID:j1TiW1+l
伝統的なバッドノウハウ
「ニワカなやつほど語りたがる」
ID:lJFXTbVxのことね
182デフォルトの名無しさん
2020/10/14(水) 20:37:36.49ID:fAfIBrSZ
俺も本当はもっとおとなしく話すつもりだったのに
エキスパートとかプリティ発言するから予定外にいじめっちゃうのを余儀なくされたのよ
183はちみつ餃子 ◆8X2XSCHEME
2020/10/14(水) 20:49:16.68ID:+PdAwU8N
Go や Rust でスライスを言語の基本要素として取り入れたのは
ポインタでやりくりするのが (少なくとも今となっては) あまりイケてない方式
という判断があってのことなんだろうな。
184デフォルトの名無しさん
2020/10/14(水) 20:55:00.69ID:j1TiW1+l
ポインタこそが大事
ポインタこそが肝心
Cで一番大事なのはポインタ
C++は知らん
185デフォルトの名無しさん
2020/10/14(水) 20:55:45.47ID:z3Ys6y55
>>178
俺はお前さんの文章が「なんか気持ち悪い」よ。
話し言葉もそんな感じなのか?
186デフォルトの名無しさん
2020/10/14(水) 21:04:32.42ID:EoVZjJO9
>>178
https://ideone.com/x1NTqd
std::list<Path>& pathList
でいいじゃん.なぜ
std::list<Path>* pathList
なんだ?
187デフォルトの名無しさん
2020/10/14(水) 21:27:18.64ID:eS9CcskG
>>116
なんじゃそりゃ;;
>>116は周りが死ね言うたら死ぬんか…?
188デフォルトの名無しさん
2020/10/14(水) 21:35:17.95ID:4qg33D8d
>>178
ポインタの値自体はコピーされるけどその指してる先は同じだから
189デフォルトの名無しさん
2020/10/14(水) 23:24:35.72ID:ssGc8zMA
>>137
aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx[aXxxXxxXxxXxxXxxXxxXxxXxxXxxXxx_NUM]

これのラッパークラスとかは作らんの?
190デフォルトの名無しさん
2020/10/15(木) 00:28:14.53ID:ecxFi3He
begin, lengthでなくてbegin、endになっているのは
具体的に言えばNULL終端の文字列みたいなものにでもゼロコストで対応できるからでしょ
わかりやすさ〜とかそういう感覚的なもの以前の話として、
length案は共通インタフェースを定める目的にあってない
既に上に何人かが同じ内容を書いてるけどなぜわからんかな
191デフォルトの名無しさん
2020/10/15(木) 01:29:04.51ID:z3OAjGAN
>>ID:+cbHRaf/
>>120には言い返して来ないんだなww
192デフォルトの名無しさん
2020/10/15(木) 06:05:35.87ID:qGtCPYoD
>>187
で、おまえさんの周りには値引数にconstつけてるバカはいたのか、いなかったのか、どっちだ?
193デフォルトの名無しさん
2020/10/15(木) 07:48:07.21ID:8g5pkzoR
初心者はぼくちんのコードさえ短くわかりやすくなればそれでいいしそれが正しいと考えがちなので
共通インターフェースの必要性とか重要性は理解以前に想像もできないんだよね
その辺を教え込むのはたいへんだ
194デフォルトの名無しさん
2020/10/15(木) 08:40:54.84ID:Rskl+IBz
STLは共通インターフェースの策定の失敗例。
195はちみつ餃子 ◆8X2XSCHEME
2020/10/15(木) 09:24:37.63ID:vnecXNks
配列ではポインタがイテレータとして機能するし、イテレータとしての要件を満たしてもいる。
そうなるようにデザインされたのは自明だな。

ポインタに合わせて統一したのが全面的に良いとは言えないのかもしれないが、
イテレータの枠組みに配列やポインタを含まないデザインにするというのは
C++ の立場からするとありえない選択でもあるし、
要するに「仕方ない」としか言えんわ。
196デフォルトの名無しさん
2020/10/15(木) 14:12:18.99ID:kscRf0sZ
autoないときはイテレータめんどくさかったけど今は別になあ
197デフォルトの名無しさん
2020/10/15(木) 14:25:43.71ID:btt8eLo1
もうautoなしでは書けんわ
198デフォルトの名無しさん
2020/10/15(木) 15:41:54.19ID:qGtCPYoD
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);
}
199デフォルトの名無しさん
2020/10/15(木) 17:12:09.30ID:lq1gR0YQ
lengthなんて数行で実装できるじゃんw
自分用のテンプレに入れときゃ解決w
200デフォルトの名無しさん
2020/10/15(木) 17:13:29.26ID:ecxFi3He
std::distance
201デフォルトの名無しさん
2020/10/15(木) 17:23:04.67ID:qGtCPYoD
ワロタ
202デフォルトの名無しさん
2020/10/15(木) 18:27:46.64ID:ZxgioYKc
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
↑この時点で手遅れレベルで腐ってるのは誰も指摘してやらないんだなw

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

お題スレで答えてるやつにおったわ
みんなに空気として扱われてたけど
203202
2020/10/15(木) 18:29:24.72ID:ZxgioYKc
俺は>>187じゃなくて横からね
いちおう断っておく
204デフォルトの名無しさん
2020/10/15(木) 19:32:56.49ID:o1whfqB0
思ったほど落ちてなかった
205デフォルトの名無しさん
2020/10/15(木) 19:51:50.58ID:o1whfqB0
>>202
手遅れだからそっとしといた
206デフォルトの名無しさん
2020/10/15(木) 20:52:33.99ID:qGtCPYoD
>>203
はいはい横ねー
207デフォルトの名無しさん
2020/10/15(木) 21:25:48.32ID:+lHmSCSK
エディタでは中核のデータであろう文字列の配列が
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
っていう名前で、しかもそれとは別に
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
みたいな、また別の文字列配列が存在する世界観なんでしょ

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

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

ダメと言うためにわざわざ作られたダメな例なんだから、そのリクツの中ではSTLがダメなように見えるのは、彼の中では当然だよ
だってダメになるように作られたダメな例だもん
209デフォルトの名無しさん
2020/10/15(木) 22:14:19.51ID:LO3W6bS9
頭おかしいのがまた湧いてるな
210デフォルトの名無しさん
2020/10/16(金) 05:15:42.21ID:3AzgsKTP
値引数にconstつけてても別にいいと思うけどね
コピーで渡してなおかつconstであることを明示したいなら
むしろconstで引数渡さないって言いはるのは思考停止のバカ
211デフォルトの名無しさん
2020/10/16(金) 06:18:41.00ID:y0b2R3Tf
同意
自分はそれ思いつつも、文法上の、狭い関数内だけでのバグ抑止以上の価値は無いだろうと考えて、やってないけど
あえてやってる人が居てもバカにしようとは思わない
212デフォルトの名無しさん
2020/10/16(金) 06:43:39.95ID:5553rdQz
>>210
仮引数は変更しないって前提で思考停止してるのはお前だよ
void fill(int* first, int n, int val)
{
while (n--) *first++ = val;
}
関数の定義を別の翻訳単位に分離したら
それこそ定義かくやつだけの問題で
const付けろ付けるなと騒いでも他人の仕事に口出すなってだけ

おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
213デフォルトの名無しさん
2020/10/16(金) 06:57:04.56ID:3AzgsKTP
>>212
関数定義について言ってるに決まってるだろ
変更しないっていう前提で固定してるわけじゃないし
妄想激しいね
214デフォルトの名無しさん
2020/10/16(金) 07:10:15.57ID:5553rdQz
日本語でおk
215デフォルトの名無しさん
2020/10/16(金) 07:21:08.18ID:3AzgsKTP
そうやって僕ちゃんが正しいんだ!
あいつはくそだ!
って一生逃げ回ってろカス
216デフォルトの名無しさん
2020/10/16(金) 07:35:25.34ID:5553rdQz
捨て台詞にしちゃ迫力も何もねえなw
217デフォルトの名無しさん
2020/10/16(金) 09:55:58.36ID:6oF3ghE4
>>211
同感。いうほど意味はないけどまあ悪いことではないよな、みたいな感覚
218デフォルトの名無しさん
2020/10/16(金) 10:02:26.25ID:hiR4Fq2K
>>216
小学生が「やーい、おまえのかーちゃん出べそ」って言うのと似たような感じだな。
昭和の漫画の中にしか存在しないけどw
219デフォルトの名無しさん
2020/10/16(金) 12:45:32.25ID:5553rdQz
絵に描くとこんな感じだなw
C++相談室 part153 YouTube動画>6本 ->画像>3枚
220デフォルトの名無しさん
2020/10/16(金) 13:05:10.30ID:E37X09wd
今ゲーム開発に向いてるライブラリってなんですか?
これまでdxlibとsiv3dは使ったことありますが今の主流が知りたいです
221デフォルトの名無しさん
2020/10/16(金) 13:42:16.84ID:CKS46Mg3
UE4
222デフォルトの名無しさん
2020/10/16(金) 13:45:36.97ID:RKtFr9bS
2次元で良ければ
ama損.co.jp
dp/4899774451
dp/4899775067
dp/4899774117
223デフォルトの名無しさん
2020/10/16(金) 14:02:19.57ID:oFLj+i8c
EASTL
224デフォルトの名無しさん
2020/10/16(金) 15:10:49.53ID:y0b2R3Tf
>>223
本気で言ってんの?
225デフォルトの名無しさん
2020/10/16(金) 15:15:51.65ID:3AzgsKTP
SFML
226デフォルトの名無しさん
2020/10/16(金) 15:18:07.81ID:3AzgsKTP
SDL2 + OpenGL
227デフォルトの名無しさん
2020/10/16(金) 16:22:38.33ID:5553rdQz
>>220
ゲームの内容による
Xウイングでタイファイターと戦うようなのもあれば
将棋やウォーゲームみたいのもある
228デフォルトの名無しさん
2020/10/16(金) 17:53:05.24ID:y0b2R3Tf
>>227
dxlibとsiv3dに代わるものはあるかと聞かれてんのに的外れ
知ったか乙とでも言って欲しいのか
229デフォルトの名無しさん
2020/10/16(金) 17:53:07.57ID:gzagFIoh
>>224
冗談で言ってるとでも?使ったこともないくせに。


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

てか、この手の質問がでてきたということは、現状の開発に限界を感じているということでは?
231デフォルトの名無しさん
2020/10/16(金) 17:58:03.44ID:y0b2R3Tf
知ったかこいてマウント取るしか出来ないアホばっかだな
EASTLがレンダリングとか担ってくれるのかよ
232デフォルトの名無しさん
2020/10/16(金) 18:00:30.56ID:gzagFIoh
冗談か通じない奴だな…
233デフォルトの名無しさん
2020/10/16(金) 18:04:19.22ID:y0b2R3Tf
嘘つけ

>>220
てかDirectXスレかゲ制作技術板行った方がいいよマジで
ここに住み着いてるのはまともにソフト書き上げたことすら無い奴ばっかだから
234デフォルトの名無しさん
2020/10/16(金) 18:14:08.55ID:8wgq9mv1
DirectXって...
ゲーム作る以前に、車輪の再発明して終わりそう。
235デフォルトの名無しさん
2020/10/16(金) 18:14:09.24ID:+fSNMqF3
>>228
よく読めよ。
「主流が知りたい」だろ。
代わるものじゃない。
236デフォルトの名無しさん
2020/10/16(金) 18:21:09.26ID:y0b2R3Tf
ライブラリの主流は何か=dxlib等に代わるもの、だと思ったんだが
まぁそもそもC++で一から作りたいのか勉強がしたいのか、単に趣味でゲーム作りたいのかわからんから
何とも言えないけど
237デフォルトの名無しさん
2020/10/16(金) 19:19:09.58ID:a9PKFHNt
これ以上話も続かなそうだからボカすけど
俺はそれこそがすっごいアホっぽいと思う
C++で言うとイテレータのインクリメントをi++で書いちゃってるのより
必要も無いのにnewしてdeleteしてるのより
それよりももっと恥ずかしいと思う
238デフォルトの名無しさん
2020/10/16(金) 20:16:18.37ID:VgjMdtJh
C++/WinRTやってる人いる?
ここの人達はあまりWindows好きじゃないかな
239デフォルトの名無しさん
2020/10/16(金) 20:17:19.97ID:YHv0PA1W
winはやまほどいるだろうけどrtは全然おらんのじゃないか
240デフォルトの名無しさん
2020/10/16(金) 20:45:00.91ID:VgjMdtJh
だよね
ちょっと自力でがんばってみる!
241デフォルトの名無しさん
2020/10/17(土) 01:31:18.67ID:P3PLPttw
>>227
バカのくせに思慮深さを見せようとしてんじゃねえよw
結局オナニーしかできないんだな
242はちみつ餃子 ◆8X2XSCHEME
2020/10/17(土) 01:53:28.92ID:EbfBq8oa
>>220
dxlib や siv3d (OpenSiv3d) は十分に主流の一翼を担っているように思うが……。
C++ 的には dxlib は設計が古臭い感じはあるかな。

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

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

Twitter とかで流れてきた話題の中で面白そうなのをちょっとブックマークしていた
という程度なんで具体的に利用してみたことはないんだが、
話題になる程度にはまともな完成度なんだと思う。
243デフォルトの名無しさん
2020/10/17(土) 06:29:23.89ID:U3N3/O+C
>>228
235の指摘もそうだが
知ったかって「内容による」と言ったのが
お前さんにはそんなに高度な指摘に聞こえたのか?
手加減しきれねえ相手だなw
244デフォルトの名無しさん
2020/10/17(土) 06:31:19.72ID:U3N3/O+C
>>241
バカ?
おまえさんにだけは言われたくねえな

昨日までいじめっちゃったやつだろ
悔しいそうだなw
245デフォルトの名無しさん
2020/10/17(土) 06:31:47.44ID:U3N3/O+C
訂正 悔しそうだなw
246デフォルトの名無しさん
2020/10/17(土) 06:40:29.09ID:P3PLPttw
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
このあと逆に論破されて小学生みたいな煽りしてたなw
247デフォルトの名無しさん
2020/10/17(土) 06:41:48.98ID:P3PLPttw
悔しかったら反論してみろ
248デフォルトの名無しさん
2020/10/17(土) 06:51:39.36ID:foE/glNf
>>243
いつものアホだろうから相手したくないんだが
「内容によらない」と言われてんだよ気付けよ
249デフォルトの名無しさん
2020/10/17(土) 06:53:17.86ID:P3PLPttw
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ

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

論破されて怒っちゃったかな?初心者くん
250デフォルトの名無しさん
2020/10/17(土) 07:23:58.19ID:U3N3/O+C
>>246
ねえねえ斉藤さん、どれのこと?
具体的なレス番とフレーズ教えてw
251デフォルトの名無しさん
2020/10/17(土) 07:25:38.64ID:U3N3/O+C
>>248
うわ、内容によらないって主張か
なるほど、俺の手に負えない超アホだな
252デフォルトの名無しさん
2020/10/17(土) 07:27:40.09ID:lpP9BTeB
将棋に向いてるライブラリと向いてないライブラリを具体的に言えばばいいんじゃないの
253デフォルトの名無しさん
2020/10/17(土) 07:36:13.01ID:foE/glNf
いやいや、質問者が書いてるのはどちらも3Dの(2Dでも使えるけど)"グラフィックス周りの"ライブラリだぞ
254デフォルトの名無しさん
2020/10/17(土) 07:46:35.47ID:lpP9BTeB
いや適当なこと抜かすから将棋に向いたゲームライブラリあるなら上げてみればって言っただけだけど
255デフォルトの名無しさん
2020/10/17(土) 08:08:27.37ID:U3N3/O+C
>>254
ゲーム用である必要全然ないね
shogiguiとか中覗いたことある?
256デフォルトの名無しさん
2020/10/17(土) 09:39:14.14ID:XiAEb7KG
なんだこのスレ
257デフォルトの名無しさん
2020/10/17(土) 09:58:55.16ID:U3N3/O+C
マウント取ろうとして返り討ちに遭ったカブトムシがいるスレです
258デフォルトの名無しさん
2020/10/17(土) 10:03:40.12ID:foE/glNf
>>255
ググってみたが既製のソフトやんけ
>>257
自己紹介乙ww
259デフォルトの名無しさん
2020/10/17(土) 12:55:56.00ID:6mBaBAeI
C++のメンターは半年で精神を害してやめるか廃人になる
260デフォルトの名無しさん
2020/10/17(土) 13:03:03.95ID:rUSQx6JP
そりゃお前さんの会社がブラックなだけだろ
261デフォルトの名無しさん
2020/10/17(土) 14:30:06.82ID:bl1AtnqD
まあ江添みたいな輩といっしょに働いてたらメンタル壊れるだろうな。
まともに話ききやしねーし。
262デフォルトの名無しさん
2020/10/17(土) 14:47:43.15ID:/Ip3Dsod
奇貨居くべし
263◆QZaw55cn4c
2020/10/17(土) 15:07:46.75ID:fHznvt//
>>261
>>259 をよく読め
>>259 は「メンター」と付き合うとメンタルが壊れる、と言っているのではなく
「メンター」自身がメンタルが壊れて、結果、メンターという存在が皆無になる、と言っているのだよ、事態はより深刻なんだ
264デフォルトの名無しさん
2020/10/17(土) 16:52:45.52ID:U3N3/O+C
>>258
既成のソフト以外の何だと思ったの?

マウント取り損なったのが誰かは、誰の目にも明らかなので
安っぽいネットスラングで返しても無駄だよw
265デフォルトの名無しさん
2020/10/17(土) 17:20:58.06ID:l+Syhppg
もはやC++でゲーム開発は向いていないのでは
今時型安全なんて時代遅れだよ
266デフォルトの名無しさん
2020/10/17(土) 18:39:57.56ID:P3PLPttw
>>264
ID:U3N3/O+C
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ

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

論破されて怒っちゃったかな?初心者くん
267デフォルトの名無しさん
2020/10/17(土) 19:10:46.71ID:RsKDaYmq
>>265
1つくらい正しいこと言えよ。
今でも重量級ゲームはC++が主流。rustに流れる可能性はあるけど
あとC++は型安全ではない
268デフォルトの名無しさん
2020/10/17(土) 19:18:55.82ID:U3N3/O+C
>>266
アフィサイトのNGワード程度の「解析」に依存しちゃってる自分恥ずかしくないの?
269デフォルトの名無しさん
2020/10/17(土) 19:39:08.06ID:U3N3/O+C
2回も繰り返しちまって可哀想にw
270デフォルトの名無しさん
2020/10/17(土) 20:06:45.56ID:P3PLPttw
縁起悪いから黙ってろ バカが伝染る
271デフォルトの名無しさん
2020/10/17(土) 20:20:21.84ID:U3N3/O+C
あっ、斉藤!!
272デフォルトの名無しさん
2020/10/17(土) 20:24:53.10ID:/XplsXfZ
ごめんだけど、他でやってくれないかな。
273デフォルトの名無しさん
2020/10/17(土) 22:54:56.13ID:vimxgZ9f
相談です。C++を完全に理解するにはどうすればいいですか?
C++相談室 part153 YouTube動画>6本 ->画像>3枚
274デフォルトの名無しさん
2020/10/17(土) 23:06:18.54ID:7I8BM+av
神に近い存在になること
275デフォルトの名無しさん
2020/10/18(日) 00:28:03.87ID:oU6L/1KQ
大学生起業家が設立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
276デフォルトの名無しさん
2020/10/18(日) 01:40:34.70ID:/Z/JZuKT
twitterで
C++完全に理解した!
って呟けばOK
277デフォルトの名無しさん
2020/10/18(日) 06:35:44.42ID:e/dVAB4j
コンパイラを実装してみれば嫌でもワカル
278デフォルトの名無しさん
2020/10/18(日) 07:44:07.32ID:+ySY8JLF
そんな極端なキチガイみたいなこと言うな!
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい
279デフォルトの名無しさん
2020/10/18(日) 09:07:32.28ID:CqLBM1Q2
>>273
この人達>>277>>278の言う事を真に受けるのなら、組み込み開発をやるといい。
アセンブラレベルでC++が理解できる。
コンストラクタ、デストラクタがどのようなタイミングで呼ばれるのか、グローバル変数、ローカル変数はどのようなメモリ領域を使うのか、ヒープ領域の挙動...経験を積むと自然にC++の細かい挙動が理解できる。

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

そういえば質問内容は完全に理解したいだったな。じゃあ、どっちもやれ。
280デフォルトの名無しさん
2020/10/18(日) 10:13:18.70ID:e/dVAB4j
完全に理解と型安全には正直ゴールがあるかどうか疑わしい
281デフォルトの名無しさん
2020/10/18(日) 11:52:18.14ID:H1xH1BRx
>>279
そういう話になるから結局C++じゃなくてCからやれって話になるんだよ
C++は有害
282デフォルトの名無しさん
2020/10/18(日) 11:54:54.20ID:CqLBM1Q2
>>281
どこに有害要素があるのかわからん。
283デフォルトの名無しさん
2020/10/18(日) 14:45:22.41ID:5IG+e1ti
>>279
そうしてソフト構築能力皆無な
C++博士ができあがったのだった
284279
2020/10/18(日) 15:23:40.89ID:Erm+FeMo
> そうしてソフト構築能力皆無な
> C++博士ができあがったのだった

まぁ、C++を完全に理解したところでっていうね。
そんな暇あれば別言語を学んだり、フレームワークの使い方を学んだりDDDやTDDとか学べって話だわな。
285デフォルトの名無しさん
2020/10/18(日) 20:08:20.51ID:347vI+AY
オブジェクト指向プログラミングと言っても、各コンポーネントというかプログラムの最小単位は多くの場合手続き型で記述することになるよな?
どこからどこまでを「最小単位」と見なすか、という問に対する基準というかガイドラインを知りたいな(筆者の主観が混じるとしても)
286デフォルトの名無しさん
2020/10/18(日) 21:04:28.67ID:oU6L/1KQ
この時代に生きててSNS発信を頑張らないやつはアホだ。


【事例付き】YouTuberは最強の副業である件について。

;t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!


【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!


YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】


【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】

287デフォルトの名無しさん
2020/10/18(日) 21:05:46.61ID:e/dVAB4j
ソフトウェアの良い設計というのは
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス
288デフォルトの名無しさん
2020/10/18(日) 21:10:04.50ID:N2+RrN1t
>>287
あらゆる仕事はスーパーマンがやれば全て解決という
結局何も言ってない空論

現場でマジこれ言ってるやつは求人にクリプトン星人と書いている
人事屋としての究極の無能
289デフォルトの名無しさん
2020/10/18(日) 21:13:31.38ID:OvLc2vD2
>>285
正直言うと、当たり前のように使われる手続き型という言葉がピンと来ない。

オブジェクト指向におけるソースコードの適切な分割方法を知りたいってこと?
290デフォルトの名無しさん
2020/10/18(日) 21:20:59.62ID:OvLc2vD2
抽象レイヤーから具象レイヤーまで順番に話を進めていく方が俺は好きだがな。
一言目で無能呼ばわりするのはどうかと。
291デフォルトの名無しさん
2020/10/18(日) 21:26:52.52ID:e/dVAB4j
>>288
早くうまく書けた奴に次の仕事もやらせるのが一番弊害が少ない
理解や気づきの機会は外から与えることはできるが
それがどう理解や吸収につながるかとなると当人の資質や性向のファクターが大きいすぐる
292デフォルトの名無しさん
2020/10/18(日) 21:36:12.84ID:OvLc2vD2
>>287

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

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

自分はOOP、TDDあたりのノウハウが身につけば余裕だと思っているが。
293デフォルトの名無しさん
2020/10/18(日) 21:42:13.49ID:e/dVAB4j
OOPは物事を整理する仕組みは提供してくれるが
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略

んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、
294デフォルトの名無しさん
2020/10/18(日) 22:21:54.75ID:OvLc2vD2
>>293

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

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

結局のところ、個々のセンスを磨かせないと駄目だが...センスを磨かせる環境を整えるのはリーダーの役割だと思う。
何もない状態でセンスで何とかせよ、よりは改善が期待できるよ。
295デフォルトの名無しさん
2020/10/19(月) 00:20:11.11ID:lLBStDOZ
コンパイラの都合というよりかはcとの互換性とランタイム速度優先のための仕様によるものだろう。
てかむしろもっとコンパイラの都合考えたらもう少しまともな仕様になっとるわ。
296デフォルトの名無しさん
2020/10/19(月) 05:23:08.92ID:f5AfjsGE
スーパーマンはある種の天才で、体系的に天才を教育する方法はないと思う。特に今現在の教育は全体の平均値を上げる事に主眼を置いているから。

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

天才を見つけておいて必要な時に協力してもらうしかないんじゃないかな。全てにおいて天才はいないし来てもくれないので、得意分野では天才的みたいな奴と仲良くしておくぐらいか
297デフォルトの名無しさん
2020/10/19(月) 11:06:36.21ID:4f6/Swqm
体系的に天才を教育する方法
ってのは実は簡単で、C++をやらせればいい
298デフォルトの名無しさん
2020/10/19(月) 11:15:17.99ID:8zry6OWB
それは教育する方法ではなく
多数の中から天才を見つける方法なのでは?
299デフォルトの名無しさん
2020/10/19(月) 11:37:24.11ID:VFLM6HTy
選ばれても来るかどうかは天才次第
300デフォルトの名無しさん
2020/10/19(月) 12:11:42.92ID:0OpHGeV7
プログラムの才能のある人材を発掘する方法は、以前だとLispかHaskellをやらせるのが定番だったけど今はどうなのかね?
301デフォルトの名無しさん
2020/10/19(月) 12:44:51.59ID:QMGC8XAt
まずクソ企業で天才が居座るメリット無くね?
誰かが頑張ってくれるだろうみたいな雑魚集団と仕事したくねーわ。
302デフォルトの名無しさん
2020/10/19(月) 13:49:59.16ID:asy7wTux
>>296
天才とは言っていない
http://equallove-2017.blog.jp/archives/24499215.html
http://equallove-2017.blog.jp/archives/24508935.html
https://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白
303デフォルトの名無しさん
2020/10/19(月) 15:44:35.47ID:99pu8OZG
>>301
誰かが頑張ってくれるだろうみたいな雑魚がいない企業をおまえさんは知っているの?
304デフォルトの名無しさん
2020/10/19(月) 20:56:03.32ID:lLBStDOZ
残念ながらGAFAでもその種の馬鹿はいる。
305デフォルトの名無しさん
2020/10/20(火) 00:14:11.70ID:0Qd32UHv
君たち C++ の話をしろ
306デフォルトの名無しさん
2020/10/20(火) 03:00:21.68ID:C47XLKZf
deleteで解放しようとするとたまに落ちるバグがあるのですが
try〜catchで囲っても、やっぱ落ちます。
これって例外で処理することはできないんでしょうか?
それともやばいバグ過ぎてつかまえられないだけなのでしょうか?
307デフォルトの名無しさん
2020/10/20(火) 03:05:40.63ID:U9bI1hKI
投げない例外は捕まえられないのでは?
308デフォルトの名無しさん
2020/10/20(火) 03:09:48.67ID:C47XLKZf
>>307
これじゃダメなんでしょうか?
すみませんC++よくわかってなくて…

try{
delete p;
}catch(...){
std::cerr << "error!" << std::endl;
}
309デフォルトの名無しさん
2020/10/20(火) 03:14:10.05ID:U9bI1hKI
>>308
pのデストラクタの中で何かが起きていて、そこで例外が投げられないから補足できないのでは?

それと経験的に、再現性の無いバグは、十中八九、未定義の記憶域を読むことで発生する。
310デフォルトの名無しさん
2020/10/20(火) 03:23:38.12ID:NaQDrxzK
丼なスパゲティーコードをメンテしてるか気になる
311デフォルトの名無しさん
2020/10/20(火) 03:27:44.66ID:C47XLKZf
>>309
デストラクタは何もないので
どこかでメモリ処理がおかしくなってるんでしょうね…
一旦、動くようにしてみたかったのですが、もうちょっと調べてみます。
ありがとうございました。
312デフォルトの名無しさん
2020/10/20(火) 03:36:12.53ID:NaQDrxzK
そういうときに役に立つのがprintfデバッグだろ
どの工程で起こったのかある程度目星がつく
313デフォルトの名無しさん
2020/10/20(火) 04:45:58.59ID:C47XLKZf
>>321
継承元の親クラスを何個も辿ってよく調べたら
コンストラクタの中で怪しいポインタにアクセスしている個所がありました。
おそらくこれが原因だと思います。
皆さん有難うございました。
314デフォルトの名無しさん
2020/10/20(火) 07:34:58.90ID:OBwoowsU
デストラクタとdelete演算子はデフォルトでnoexceptなんで、
例外発生時点で異常終了してしまい、try〜catchじゃ捕まえられないそうだ。
https://cpprefjp.github.io/lang/cpp11/noexcept.html
315デフォルトの名無しさん
2020/10/20(火) 07:48:57.86ID:wzOsKsv0
そういう問題じゃねえよ
不定のポインタは検出不能だ
316デフォルトの名無しさん
2020/10/20(火) 08:40:05.01ID:OBwoowsU
いや、今回の問題の解決のために書いたわけではなくて、
>>308のように書いても無駄だと伝えるために書いた。
そのあたり明示せずに書き込んですまん。
317デフォルトの名無しさん
2020/10/20(火) 11:34:12.27ID:pHiz9StD
atexit()
exit()
で捕捉出来ないかな
318デフォルトの名無しさん
2020/10/20(火) 11:51:22.81ID:uu0FmVn9
デバッガに頼るのは甘え
プロはprintfだけで正しくデバッグする!
319デフォルトの名無しさん
2020/10/20(火) 11:56:25.10ID:pHiz9StD
プロは logger 使うし
百歩譲っても使うのは fprintf の方
320デフォルトの名無しさん
2020/10/20(火) 13:10:32.17ID:wzOsKsv0
printfが使える環境ならな
そうでない場面がごまんとあるから
選択肢は多いに越したことはない
321デフォルトの名無しさん
2020/10/20(火) 13:21:42.91ID:NaQDrxzK
シリアルモニタくらいは用意できるだろ
322デフォルトの名無しさん
2020/10/20(火) 13:21:52.61ID:vcQhkuUZ
基本的にprintfデバッグの延長
制度化体系化されたprintfデバッグがログ取り

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

loggerの出力先が10万キロ離れたプリンタなこともある
323デフォルトの名無しさん
2020/10/20(火) 13:23:45.82ID:wzOsKsv0
オシロ使ったりもする
324デフォルトの名無しさん
2020/10/20(火) 13:26:30.76ID:C+6cO9mm
路地穴は使うよね
325デフォルトの名無しさん
2020/10/20(火) 13:28:29.10ID:56eYC1pE
スペアナくらいは普通使うよね
326デフォルトの名無しさん
2020/10/20(火) 14:24:10.56ID:wzOsKsv0
無線屋さん?
327デフォルトの名無しさん
2020/10/20(火) 14:27:50.64ID:Y3GT62kx
C#を作ったアンダース・ヘルスバーグもデバッガのステップ実行よりもprintfを使うってインタビューで言ってたな
328デフォルトの名無しさん
2020/10/20(火) 14:34:50.28ID:kixGkAna
尻穴は使うよね
329デフォルトの名無しさん
2020/10/20(火) 17:41:32.21ID:AdA8N6MK
C++23のdraftが公開されてた
http://wg21.link/n4868
330デフォルトの名無しさん
2020/10/20(火) 17:48:19.32ID:wzOsKsv0
>>329
情報ありがとう
331◆QZaw55cn4c
2020/10/20(火) 22:08:32.52ID:glKVTYwZ
>>300
C のポインタ、特に関数ポインタ、とか
リカーシブ、とかで十分でしょう
332デフォルトの名無しさん
2020/10/21(水) 00:07:59.13ID:HJxHMNRz
尻カーブ?
333デフォルトの名無しさん
2020/10/21(水) 11:15:30.61ID:xBgAWF1Y
シッタカブリ
334デフォルトの名無しさん
2020/10/21(水) 11:18:26.05ID:F4fghCXJ
printfデバッグなんてあり得んけどな。
335◆QZaw55cn4c
2020/10/21(水) 11:45:48.97ID:SYSvovlW
>>334
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね
336デフォルトの名無しさん
2020/10/21(水) 11:52:32.13ID:xBgAWF1Y
printf デバッグは完成後に printf の行を消すと動かなくなったりするω
337デフォルトの名無しさん
2020/10/21(水) 12:15:19.02ID:EPxGxCCv
関数化やクラス化でプログラムを小さくするわけで、あんまり関係ないな
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下
338デフォルトの名無しさん
2020/10/21(水) 12:41:52.63ID:BgzupaSs
デバッグOffして弊害残すヤツは動作の仕組み把握出来てないだけだろ
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才
339デフォルトの名無しさん
2020/10/21(水) 23:09:27.50ID:oE8Yb73v
非同期で動くブツ同士の通信はprintfデバッグ大活躍なのでは…
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル

printf消去忘れについては条件コンパイルを使えば良いし、
Ad-hocな追加ならいかに大量にやってもソースコード管理システムで安全に消すこともできるわけやし、
340デフォルトの名無しさん
2020/10/22(木) 00:49:05.87ID:VEHOj23m
未定義動作踏んでるときとかにprintfを呼び出すことでたまたま動くようにできたりする
ということか
341デフォルトの名無しさん
2020/10/22(木) 10:43:36.11ID:vPWH9GQz
>本当に受け取ったのかがすぐワカル

buffer flush しないと判らんし
flush すると勝手に改行する環境とかあるし
そこまで便利ってほどでもなくね
nonbuffered しろってか
342デフォルトの名無しさん
2020/10/22(木) 10:47:06.06ID:ZfML18uZ
ここまでの話をまとめると
やはりprintfデバッグが最強、ということですね
343デフォルトの名無しさん
2020/10/22(木) 12:25:12.96ID:QhFI+vyp
#ifdef DEBUG
 #define PUTCHAR(a) (putchar(a), fputc(a, _fpDbg))
#else
 #define PUTCHAR(a) (putchar(a))
#endif
PUTCHAR(*ptr++);
みたいなことをやれば デバッグ時だけ*ptr++ が二回評価されて結果は変わってしまう。
344デフォルトの名無しさん
2020/10/22(木) 12:29:38.65ID:PrgepFj3
>>343
インライン関数に置き換えられるだろ
少しは頭使え
345デフォルトの名無しさん
2020/10/22(木) 12:30:03.14ID:Pdn6awLx
デバッグ関係ねーじゃん
346デフォルトの名無しさん
2020/10/22(木) 12:31:48.09ID:QhFI+vyp
>>344
そんなことは当たり前。
IQが低い人と話すとこれだから困る。
347デフォルトの名無しさん
2020/10/22(木) 12:34:55.42ID:PrgepFj3
>>346
わかってるならインラインで書けよ池沼
348デフォルトの名無しさん
2020/10/22(木) 12:38:34.09ID:QhFI+vyp
>>347
駄目な例を敢えて書いたんだ。
どうしてそれが分からないの、あなた達には?
IQが高い人には駄目な例が単なる例として出されたのだと分かるのに
ここの人達にはそれがわからない。
349デフォルトの名無しさん
2020/10/22(木) 12:39:39.22ID:3l9/RVrp
>>339
非同期なアプリでprintf使うとタイミングが変わることがあるから安心できんな
デバッガよりは遥かに良いけど
350デフォルトの名無しさん
2020/10/22(木) 12:41:58.22ID:QhFI+vyp
>>336
「printf デバッグは完成後に printf の行を消すと動かなくなったりするω」
と書いていたが、>>340が指摘した理由だけではないので、
そうなる他の理由の1例を>>343で書いた。
351デフォルトの名無しさん
2020/10/22(木) 12:45:00.97ID:QhFI+vyp
これが考える力なんだよ。
マスコミを含めて「知識知識」と言う人が多いが、生まれつきの頭が悪いと
>>344 >>347 のような馬鹿な発想しか出来ないのでどうにもなら無い。
俺に比べれば、おまえが池沼の癖に。
352デフォルトの名無しさん
2020/10/22(木) 12:48:35.56ID:t0UpjLw/
マクロを使う必要性が全く感じられなくてリアリティがない
353デフォルトの名無しさん
2020/10/22(木) 13:11:57.24ID:PrgepFj3
>>351
おまえ自分のこと頭おかしいと思わないならかなり進んだ病気だな
354デフォルトの名無しさん
2020/10/22(木) 14:13:12.96ID:+Chcwfvy
>>353
精神病院に行け。
355デフォルトの名無しさん
2020/10/22(木) 16:17:21.51ID:t0UpjLw/
C++の話しねえやつは出てけ
356デフォルトの名無しさん
2020/10/22(木) 17:13:27.21ID:Ztx90rC8
C++ラーメン次郎うめえ
357デフォルトの名無しさん
2020/10/22(木) 18:56:55.19ID:N0tQIHiY
>>350
たぶんみんなは
そりゃマクロ使えば何でもありありだろ
そんなことでドヤるとかバカじゃねーの
って思ってる…
358デフォルトの名無しさん
2020/10/22(木) 19:00:31.57ID:wCIm4hGG
>>335
printfデバッグを肯定するとは
ロートルの吹きだまり感かなりある
359デフォルトの名無しさん
2020/10/22(木) 19:08:50.28ID:lftkiv5C
printfごときで騒いでる方が精神いかれてんだろ。。
360デフォルトの名無しさん
2020/10/22(木) 19:11:08.49ID:dQkQeqlj
今はJTAGがあるので、そんなにお金がかからない。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。
361デフォルトの名無しさん
2020/10/22(木) 19:15:22.48ID:dQkQeqlj
お前たちは農民に戻れ。
ハイ解散。
362◆QZaw55cn4c
2020/10/22(木) 20:52:46.17ID:RiQFyYLu
>>360
私のマザーボードの JTAG/IEEE1149.1 はどれですか?
363デフォルトの名無しさん
2020/10/22(木) 21:09:21.98ID:dQkQeqlj
>>362
OS開発の場合は、専用のボードを用いることを視野に入れる。
それが無理なら、中韓に任せて撤退するべし。
364デフォルトの名無しさん
2020/10/22(木) 23:42:23.12ID:PrgepFj3
#ifdef DEBUG
 #define PUTCHAR(a) do{auto b=a;putchar(b), fputc(b, _fpDbg);}while(0)
#else
 #define PUTCHAR(a) (putchar(a))
#endif
死ねザコw
365デフォルトの名無しさん
2020/10/23(金) 08:10:45.22ID:DuAJkWLf
センズリマクロ
366デフォルトの名無しさん
2020/10/23(金) 12:27:51.26ID:mEDgqyfG
>>364
else節もコピーしろザコw
367デフォルトの名無しさん
2020/10/23(金) 12:34:55.69ID:wQpWPNJn
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。
368デフォルトの名無しさん
2020/10/23(金) 12:38:30.14ID:DuAJkWLf
教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」
369デフォルトの名無しさん
2020/10/23(金) 12:48:55.12ID:wQpWPNJn
inline関数や、>>364のやり方が分かった上で教師は言っている。
それとも、おまえらの通った学校の教師はそんなことも分からない
くらい程度が低かったのか?
どこの学校だよ。
370デフォルトの名無しさん
2020/10/23(金) 13:33:06.99ID:g1Zoxl1Q
ここは教室じゃねぇんだよバカが
とっととキエロ
371デフォルトの名無しさん
2020/10/23(金) 13:52:00.54ID:DuAJkWLf
俺が通った学校の教師か
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな
372デフォルトの名無しさん
2020/10/23(金) 15:17:01.62ID:vvEFmscd
へー、Cにはマクロないんだ?
373◆QZaw55cn4c
2020/10/23(金) 16:10:04.88ID:HRhvOpQY
>>372
#define マクロはありますが、lisp 様仕様マクロはありません
374デフォルトの名無しさん
2020/10/23(金) 16:52:36.06ID:GtGn5ZF1
c++の文句をいって
cの話を延々はじめる
そしてどっちも言い尽くされた話

printfデバッグやってるじじいの特徴
375デフォルトの名無しさん
2020/10/23(金) 16:57:39.47ID:DuAJkWLf
>>372
C++が世に出る前っていつ頃かわかってる?
その頃のCを化学のおじいちゃん先生がやってると思ったの?
おまえさんでさえK&R Cなんか使えるのか?
376デフォルトの名無しさん
2020/10/23(金) 17:12:38.69ID:2f10zgGH
DxLib は printfDx で printf 推奨ω
377デフォルトの名無しさん
2020/10/23(金) 17:55:43.35ID:vvEFmscd
>>371 ではC++はまだ世に出てなかったからマクロの使い方は知らなかっただろうと言ってるのに
>>375 では化学のおじいちゃん先生がCなんてやってるわけないだろうと言っている

それではC++が世に出ててもその頃のC++なんておじいちゃん先生はやらなかったのでは。
だとすると >>371 はいったい何が言いたかったのか…
378デフォルトの名無しさん
2020/10/23(金) 20:21:43.75ID:DuAJkWLf
>>377
同一人物なんだが君は何に見えたのかな??
379デフォルトの名無しさん
2020/10/23(金) 20:22:37.35ID:DuAJkWLf
で、君はK&R Cは使えるのか?
380◆QZaw55cn4c
2020/10/23(金) 20:23:29.32ID:IQ0Nf1Vk
>>379
K&R1 か K&R2 かを指定してください
381デフォルトの名無しさん
2020/10/23(金) 20:32:42.02ID:DuAJkWLf
もちろん1よ
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは
382デフォルトの名無しさん
2020/10/24(土) 00:28:14.62ID:5I5noegP
>>341
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い
383はちみつ餃子 ◆8X2XSCHEME
2020/10/24(土) 02:46:57.76ID:yf0wmlMH
非同期な処理を観察するってのは非同期な処理が「失敗しているかもしれない」のを見つけ出さなきゃいけないってことだよね。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。

信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。
384デフォルトの名無しさん
2020/10/24(土) 06:18:58.62ID:S/SsQhb2
printfが再入可能でないってどゆこと? strtokみたいに状態を持つのか?
385デフォルトの名無しさん
2020/10/24(土) 08:34:42.41ID:H3Ix9ZgH
スレッドセーフとリエントラントってどう違うの?
386デフォルトの名無しさん
2020/10/24(土) 08:40:39.80ID:VP+yyMyu
単一スレッドでも再帰なんかで再入は発生しうる
関数内でクリティカルセクションなどを使ってスレッド同期するようにしていても状態を持つ作りだと同一スレッドからの再入で異常になることはある
387デフォルトの名無しさん
2020/10/24(土) 08:44:50.93ID:VP+yyMyu
Cランタイムは通常スレッドセーフだよね
だから複数スレッドでprintfを読んだりerrnoを参照してもよい
Windowsの場合、_beginthreadで作成したスレッドはCランタイム安全、CreateThreadで作成したスレッドはCランタイム安全ではないとかいう話もあった
388デフォルトの名無しさん
2020/10/24(土) 11:13:00.25ID:aZOaF4i3
>>385
今、リエントラント(再入可能)という言葉は余り聞かなくなっているが、
ハードウェアに密着したプログラムを書くときに、ハードウェア割り込みの
割り込みルーチンがまだ終わってないタイミングで、同じ割り込みが生じ、
同じルーチンが再帰的に呼び出されることがあり、そのような呼び出しに
対応しているものを「リエントラント」と呼ぶことがあった。
ただし、そのようなプログラムは複雑になりがちなので、ハードウェア
割り込みが生じ、割り込みルーチンがまだ終わってないタイミングで、
同じ割り込みを発生させる原因がもう一度発生しても、割り込みルーチン自体を
呼び出さないようにする手法が使われることが多かった、というか、
その様にプログラムすることが標準とされ、そのためにプログラマブル割り込み
コントローラなるものが、その役割を果たすモードを持っており、それが通常、
有効な状態にされていた。
389デフォルトの名無しさん
2020/10/24(土) 11:21:13.53ID:aZOaF4i3
>>388
一方、単一スレッドプログラムの場合、mallocの中からmallocが再帰的に呼び出される
ことはそもそもない。printfも同様。
なので、複数スレッドが動作している場合でも、各スレッドにおいては、
mallocやprintfが再帰的に呼び出されることはない。
そして、mallocを作る場合、Heapに関する重要データを読み書きする時、クリティカルセクション
のようなもので囲って、1つのスレッドだけが読み書きできるようにするような手法が使われる。
この場合、その区間を実行しているのは、最大で1スレッドのみであり、複数スレッドが
同時に実行することはない。
もちろん、malloc自体は同時に複数のスレッドが呼び出しても良いが、malloc内部で重要データ
の読み書きが行なわれるのは、必ず1スレッドのみで、それ以外のスレッドは待機させられる。

割り込みハンドラをリエントラントにする場合には、このようなクリティカルセクション的な
やり方は絶対に使えない。
まず、割り込みハンドラは、実際に実行しているのは1スレッドと言えば1スレッド。
割り込み自体が、1コアしかなかったZ80などにおいても有った概念でもあるし、それは当然であるが。
390デフォルトの名無しさん
2020/10/24(土) 12:26:35.65ID:w2qFem8L
おじいちゃん
スレタイ読もうか
391デフォルトの名無しさん
2020/10/24(土) 12:29:55.83ID:+GevKgJx
coutデバッグと言うべきってか
392デフォルトの名無しさん
2020/10/24(土) 12:34:34.81ID:UCFHvZt3
>>388
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった
393デフォルトの名無しさん
2020/10/24(土) 14:30:45.75ID:ZbhxKyMw
ちゅうことはスレッドセーフなloggerが全部同じファイルにログを書き込むんだろ
これもうそのまんま出力に逐一印字させた方がいいんじゃね
394デフォルトの名無しさん
2020/10/24(土) 15:33:28.19ID:H3Ix9ZgH
>>391
いや、厳密にはstd::coutデバッグというべき(ドヤ
395デフォルトの名無しさん
2020/10/24(土) 15:35:14.21ID:LXBNuCv6
printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ

もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
396デフォルトの名無しさん
2020/10/24(土) 15:37:01.80ID:LXBNuCv6
ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
397デフォルトの名無しさん
2020/10/24(土) 15:38:11.89ID:cYR5fjBG
保障にはならないが〜
実際にはたいていのケースで〜

こういうの一番困る
398デフォルトの名無しさん
2020/10/24(土) 17:06:18.74ID:ZbhxKyMw
printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる
399デフォルトの名無しさん
2020/10/24(土) 17:47:23.40ID:H3Ix9ZgH
非同期シグナル安全な関数のリストにprintfがない・・・
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html
400デフォルトの名無しさん
2020/10/24(土) 17:57:44.41ID:lGAQOfIr
自前でロックすりゃいいだろ
401デフォルトの名無しさん
2020/10/24(土) 18:01:02.56ID:H3Ix9ZgH
printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
402デフォルトの名無しさん
2020/10/24(土) 18:10:47.63ID:lGAQOfIr
なら自前のprintf作ればいいだろ
標準に頼りきるバカが
403◆QZaw55cn4c
2020/10/24(土) 18:13:44.58ID:sM3RwuUT
>>402
>自前のprintf作ればいい
こういう台詞は、その能力の欠けたものが得てして言いがちなことだよなあ‥‥と
404デフォルトの名無しさん
2020/10/24(土) 18:32:15.74ID:lGAQOfIr
己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
405デフォルトの名無しさん
2020/10/24(土) 18:55:26.18ID:W2/6It6m
>>404
ワイらがジャップだとしたら
お前はいったい何なんだよ
406デフォルトの名無しさん
2020/10/24(土) 19:34:38.35ID:kvu4j0jg
>>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
407デフォルトの名無しさん
2020/10/24(土) 19:40:13.77ID:LXBNuCv6
割り込みルーチンの中からprintfを読んだら危険なのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;

OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
408デフォルトの名無しさん
2020/10/24(土) 19:44:20.88ID:LXBNuCv6
割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
409384
2020/10/25(日) 08:15:28.48ID:B8Qi0Gue
聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
410デフォルトの名無しさん
2020/10/25(日) 08:36:53.97ID:fEg6VUML
stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
411デフォルトの名無しさん
2020/10/25(日) 10:46:14.61ID:zd7LSfWt
printfデバッグでダメならputデバッグでいいじゃん
412デフォルトの名無しさん
2020/10/25(日) 11:40:46.63ID:luVqTFHx
printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ
413デフォルトの名無しさん
2020/10/27(火) 20:01:20.88ID:9N87g439
こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。
414デフォルトの名無しさん
2020/10/27(火) 23:03:02.20ID:1nczmGPR
お金払われればやるよ
415デフォルトの名無しさん
2020/10/27(火) 23:23:32.01ID:2LDrYrw3
金もらわないとデバッグしないの?
つまらない人生だね
416デフォルトの名無しさん
2020/10/27(火) 23:25:33.33ID:IA9V1GzZ
そんなに楽しい事ならお前がやれば?
417デフォルトの名無しさん
2020/10/28(水) 13:38:51.49ID:6icraQaZ
やらないならクソみたいなこと言ってないで黙ってりゃいいのに
418デフォルトの名無しさん
2020/10/28(水) 14:00:21.64ID:a3TqMSUE
普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前

お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
419デフォルトの名無しさん
2020/10/28(水) 14:20:56.34ID:XBU5yUok
1レスの中で矛盾していくスタイル嫌いじゃない

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

時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
420デフォルトの名無しさん
2020/10/28(水) 14:50:59.10ID:K+lW0Fsg
いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
421デフォルトの名無しさん
2020/10/28(水) 21:57:28.94ID:bY6aZzj9
つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
422デフォルトの名無しさん
2020/10/28(水) 22:56:44.64ID:a3TqMSUE
ここってサラリーマンが多いのね
423デフォルトの名無しさん
2020/10/28(水) 23:22:28.00ID:58wSuA1P
そんなん公然と拒否するか
0から作り直すかの二択だろ
424デフォルトの名無しさん
2020/10/29(木) 05:18:26.87ID:A02IsQiB
>>421
そういう状況はママあるけど
> お金払われればやるよ
って言う状況とは違うだろ
425デフォルトの名無しさん
2020/10/29(木) 08:31:38.61ID:VBEUGOAK
>>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
426デフォルトの名無しさん
2020/10/29(木) 15:25:24.71ID:wtO1e/xm
>>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
427デフォルトの名無しさん
2020/10/30(金) 00:03:30.35ID:Wx+7ZgRN
C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
428デフォルトの名無しさん
2020/10/30(金) 00:17:54.24ID:V+g0QAOl
まずPython処理系を書きます
429デフォルトの名無しさん
2020/10/30(金) 00:26:39.96ID:XbvTe/rK
内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない
430デフォルトの名無しさん
2020/10/30(金) 08:18:43.66ID:ooe1U4VR
つtransform & lambda
431デフォルトの名無しさん
2020/10/30(金) 09:52:48.93ID:5giIBuWJ
std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });

きっとforのほうが読みやすくて速いと思う
432デフォルトの名無しさん
2020/10/30(金) 10:04:53.11ID:73xlUHi2
あとはvalarrayとかな
433デフォルトの名無しさん
2020/10/30(金) 10:06:43.70ID:uffCAw9U
表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね

むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
434デフォルトの名無しさん
2020/10/30(金) 10:22:13.62ID:73xlUHi2
インタープリターよりは速いよ
435デフォルトの名無しさん
2020/10/30(金) 11:34:39.85ID:7MkyV1Cp
https://cpprefjp.github.io/reference/tuple/apply.html
436デフォルトの名無しさん
2020/10/30(金) 11:37:53.83ID:7MkyV1Cp
https://www.fluentcpp.com/2020/02/07/transform-adaptor-equivalent-in-cpp/
437デフォルトの名無しさん
2020/10/30(金) 11:41:09.18ID:7MkyV1Cp
>>433
ループ分解されて要素分コード増えてる可能性もあるな
438デフォルトの名無しさん
2020/10/30(金) 13:24:53.40ID:Z0VCec0D
forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
439デフォルトの名無しさん
2020/10/31(土) 00:26:11.33ID:T4Ek6w2r
ヒエッ…、、OpenMPし放題…!
440デフォルトの名無しさん
2020/11/01(日) 15:21:18.11ID:iuijWT2g
競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
441デフォルトの名無しさん
2020/11/01(日) 15:26:15.37ID:Ncbqgsya
>>440
それの速度が競プロで問題になることなんてないだろう。
そんなこと気にするよりアルゴリズムの計算量のオーダーを小さくするとか枝刈りをしっかりするとか有意義な方に頭を使った方がいい。
442デフォルトの名無しさん
2020/11/01(日) 15:26:18.66ID:BdB3gM+x
unsignedですか?
443デフォルトの名無しさん
2020/11/01(日) 15:36:25.10ID:f5GbRfBo
simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない
444デフォルトの名無しさん
2020/11/01(日) 15:38:18.92ID:Lkejt9vc
>>440
数値のビット数が解っているなら高速化できる
445デフォルトの名無しさん
2020/11/01(日) 15:49:40.49ID:Lkejt9vc
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
return i>1?i-1:0;
446デフォルトの名無しさん
2020/11/01(日) 15:50:59.41ID:Lkejt9vc
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
ちょっと間違えた
return i>0?i-1:0;
447デフォルトの名無しさん
2020/11/01(日) 16:00:31.30ID:Lkejt9vc
>>440
elifのあとはなにを返すんだや?
モロに中途半端やないかいワレ
448デフォルトの名無しさん
2020/11/01(日) 17:02:44.45ID:h5xlMYDq
つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
449デフォルトの名無しさん
2020/11/01(日) 17:10:40.93ID:h5xlMYDq
SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…
450デフォルトの名無しさん
2020/11/01(日) 19:21:41.23ID:PTqWSgE4
>>440
アセンブラだったら、
 sub eax,1
 jnb lab1
 xor eax,eax
lab1:
 ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
 i = 0;
}
return i;
とか。
451デフォルトの名無しさん
2020/11/01(日) 21:20:20.31ID:f5GbRfBo
クロック数は蛇足でしょ
452デフォルトの名無しさん
2020/11/01(日) 23:07:30.49ID:gRIt+Ld+
減算が必ず実行されるのはもったいない

... and eax,eax
... jz f@
... dec eax
@@:
... ret
453デフォルトの名無しさん
2020/11/01(日) 23:12:12.57ID:gRIt+Ld+
test ってあったかな...
454デフォルトの名無しさん
2020/11/01(日) 23:32:16.35ID:h5xlMYDq
and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費

ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
455デフォルトの名無しさん
2020/11/02(月) 00:26:45.06ID:dW4oDZpY
そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
456デフォルトの名無しさん
2020/11/02(月) 01:48:22.41ID:U5Xnw0i6
sub eax,1
adc eax,0
でなんとかなんないの?
457デフォルトの名無しさん
2020/11/02(月) 14:18:33.78ID:WhiKrslV
>>450
一瞬でも < 0 になったらまずい環境なら
if(--i < 0) はダメ
458デフォルトの名無しさん
2020/11/02(月) 15:41:23.80ID:OFRBeKTl
>>452
減算を行う場合の方が頻度が高いと予想されるので、>>450の方がその場合に
命令数が少なくなるので平均速度は速い。
459デフォルトの名無しさん
2020/11/02(月) 15:44:36.12ID:OFRBeKTl
>>456
そのコードは凄い。
460デフォルトの名無しさん
2020/11/02(月) 16:02:50.72ID:sYYC+nm2
>>456
キャリーちゃんか
461デフォルトの名無しさん
2020/11/04(水) 00:22:15.96ID:eR5jspY1
Macで環境構築どうすればいいですか
適当に記事あさればいいですか
462デフォルトの名無しさん
2020/11/04(水) 00:32:44.91ID:pJnXfGcc
yes
463デフォルトの名無しさん
2020/11/04(水) 08:22:43.71ID:3PEz6xa2
>>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
464デフォルトの名無しさん
2020/11/04(水) 20:11:40.32ID:X2fHUOCE
自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
465デフォルトの名無しさん
2020/11/04(水) 20:26:01.44ID:X2fHUOCE
464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。
466蟻人間 ◆T6xkBnTXz7B0
2020/11/04(水) 20:30:16.22ID:tdZ4i2Gl
thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実体だと思う。
467デフォルトの名無しさん
2020/11/04(水) 20:50:15.92ID:H9SHlq4g
難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
468デフォルトの名無しさん
2020/11/04(水) 21:35:20.66ID:rY/M/1xY
struct S1;

using V1 = std::variant<S1>;

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

これ合法?
469デフォルトの名無しさん
2020/11/04(水) 21:39:36.00ID:occL3fQ7
ダメ
470デフォルトの名無しさん
2020/11/04(水) 21:44:35.56ID:rY/M/1xY
主要3コンパイラでコンパイル出来るうえ
https://python5.com/q/djlpoyyw
紹介してる人が居る。
471デフォルトの名無しさん
2020/11/04(水) 22:56:42.61ID:rY/M/1xY
駄目な根拠わかりませんか?
472デフォルトの名無しさん
2020/11/05(木) 00:49:04.74ID:WV05kVNu
>>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.
473デフォルトの名無しさん
2020/11/05(木) 01:14:10.93ID:E+L4EB1M
C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。

これはどう解釈すればいいのかな?
474デフォルトの名無しさん
2020/11/05(木) 01:20:36.91ID:E+L4EB1M
これが合法なら良かったんだけど、どうも無理っぽいな。
475デフォルトの名無しさん
2020/11/05(木) 01:46:23.37ID:E+L4EB1M
using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。

ってことでいいよね?
476デフォルトの名無しさん
2020/11/05(木) 01:54:08.91ID:E+L4EB1M
boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?
477デフォルトの名無しさん
2020/11/05(木) 02:27:49.98ID:tM7hzUED
>>463
ありがとうございます。
Mojaveあたりです。
478デフォルトの名無しさん
2020/11/06(金) 16:04:48.24ID:cCU0l/b0
コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?

こんなん
: apple(apple)
479はちみつ餃子 ◆8X2XSCHEME
2020/11/06(金) 16:58:12.08ID:O5a96eYY
>>478
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。
480デフォルトの名無しさん
2020/11/07(土) 17:39:09.77ID:gsFmAuV5
Foo::Foo(const Fruit& apple)
: apple(apple),
 banana(apple),
 orange(this.apple) // できない
{

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

いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…
481デフォルトの名無しさん
2020/11/07(土) 17:53:59.86ID:gsFmAuV5
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
482はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 17:56:49.27ID:24XfCTPm
>>480
普通に出来るやで。 this->apple の間違いじゃろ。

メンバの初期化順は (初期化リストの順序と関係なく) クラス定義内でデータメンバを書いた順序なので気を付けてな。
483デフォルトの名無しさん
2020/11/07(土) 17:57:34.44ID:CPm1qeuk
this
javascriptのやりすぎで脳が壊れたか
484はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 18:00:03.51ID:24XfCTPm
>>481
名前を同じにしてもうたらまずいケースがあるやないけということを >>480 は言ってるので、
名前変えればいいよってのは的外れ。
485デフォルトの名無しさん
2020/11/07(土) 18:13:54.67ID:gsFmAuV5
>orange(this->apple)
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳
486デフォルトの名無しさん
2020/11/07(土) 18:30:43.14ID:2NiwF/8v
みなさまthx
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…
487デフォルトの名無しさん
2020/11/07(土) 20:28:30.69ID:CTlV0YTN
>>485
いや、エラーだろ
488デフォルトの名無しさん
2020/11/07(土) 22:09:33.18ID:gsFmAuV5
warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
やもーん
489デフォルトの名無しさん
2020/11/07(土) 22:24:32.33ID:CdQvP3Xl
みんなC++でなにしてるの
490デフォルトの名無しさん
2020/11/07(土) 22:24:57.26ID:9rEAH6th
polymorphic_allocator対応ですね。
491デフォルトの名無しさん
2020/11/07(土) 22:55:56.65ID:8rmSPqJO
>>489
c++仕様のお勉強。マウントかますためだけにお勉強。
492デフォルトの名無しさん
2020/11/07(土) 23:11:57.20ID:yroa9NTK
ジョークに聞こえるがまじでそういうやつがいるからな
493はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 23:39:31.38ID:24XfCTPm
>>485
念のため規格の当該箇所を探してみたら this についてわざわざ脚注で書いてあったわ。
https://timsong-cpp.github.io/cppwp/n3337/class.base.init#12
初期化順序はくれぐれも気を付けんとあかんけど、this が駄目ということはないのは間違いない。
494デフォルトの名無しさん
2020/11/07(土) 23:42:39.92ID:9rEAH6th
おせーな。
5分で探して来い。
495デフォルトの名無しさん
2020/11/14(土) 18:09:43.36ID:FszncLid
VC++って今でも最先端のシステムでも使われていますか?
496◆QZaw55cn4c
2020/11/14(土) 18:57:11.05ID:ovQs8svh
>>495
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど
497◆QZaw55cn4c
2020/11/14(土) 18:58:45.49ID:ovQs8svh
mfc42.dll
の内部バージョン違いに、ほとほと懲りたらしいです……
498デフォルトの名無しさん
2020/11/14(土) 19:03:42.05ID:liKT9ZZB
あれはひどかったな
499デフォルトの名無しさん
2020/11/14(土) 19:21:56.26ID:IHUe5vhA
>あれはひどかったな
ちょっなんで??
DLLにstd::vector<T>やstd::string<T>とか渡そうとした???
500デフォルトの名無しさん
2020/11/14(土) 19:23:33.64ID:liKT9ZZB
仕様が違うものを同じファイル名にするなって話
ISO/IEC14882のライブラリは全く無関係
501デフォルトの名無しさん
2020/11/14(土) 19:25:17.74ID:IHUe5vhA
手製DLLへのデータ渡しににはchar[]とか基本型onlyとして
CRTをスタティックリンクしたらランタイムのインストールすら不要
で完全解決…!

全要素手製でコントロールできればの話ではある
502デフォルトの名無しさん
2020/11/14(土) 19:37:00.66ID:liKT9ZZB
なんか話になってないな
つまらんからやめる
503デフォルトの名無しさん
2020/11/14(土) 19:41:20.95ID:wQlu6eHI
std::string<T>て
504デフォルトの名無しさん
2020/11/14(土) 19:56:02.78ID:IHUe5vhA
CRTではなくてこの場合MFCをスタティックリンクしたらやったスマンコ、
505デフォルトの名無しさん
2020/11/15(日) 12:36:52.05ID:YXN+C+qx
>>496
ありがとうございます
506デフォルトの名無しさん
2020/11/15(日) 12:45:20.15ID:z250o8Kw
VC++ってことはプラットフォームはWindows固定か
Windows前提ならC++使い続ける理由は特にないね
507デフォルトの名無しさん
2020/11/15(日) 14:27:41.73ID:1NoBqfO6
MFCなんか使うからだろ
自己責任
508デフォルトの名無しさん
2020/11/15(日) 15:39:12.99ID:ZF6xjL9s
webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?
509デフォルトの名無しさん
2020/11/15(日) 16:01:31.41ID:fUqPXTtq
ツールはReactかVueですね。
510デフォルトの名無しさん
2020/11/15(日) 16:32:14.80ID:U+/Dwi3J
マルチ禁止
511◆QZaw55cn4c
2020/11/15(日) 21:02:27.25ID:XnBy/n8J
>>510
そのマルチポスト禁止っていうのは fj の時代ならまだしも、2ch に当てはまるのですか?
マルチポストとクロスポストの違いはなんですか?
512デフォルトの名無しさん
2020/11/15(日) 21:29:20.86ID:UQYtdYHl
自分の頭で考えることを放棄したマニュアル人間
513デフォルトの名無しさん
2020/11/15(日) 21:57:12.59ID:9LlY7wvz
いまは2chは無いんだよおっさん
514デフォルトの名無しさん
2020/11/15(日) 22:32:36.77ID:UQYtdYHl
くだらねえ突っ込みだな
それで誰かはっとする奴がいるとでも思っているなら
どうしようもねえバカ野郎だ
515デフォルトの名無しさん
2020/11/15(日) 23:02:36.34ID:QB7zB470
なんにせよスレチなんで
516デフォルトの名無しさん
2020/11/15(日) 23:22:10.25ID:AQ/HY5jp
>>511
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ
517◆QZaw55cn4c
2020/11/15(日) 23:35:29.19ID:XnBy/n8J
>>516
確かにその感情は理解できます
518デフォルトの名無しさん
2020/11/16(月) 00:15:05.39ID:tkpwZn9D
>>508
windowsだけで動けば満足ならメモリ読み書き関連はwinapi
デバッガ、逆アセ関連は pythonによるバイナリ解析技法 とかそれに似たような本読めば少しは載っていると思います。
519デフォルトの名無しさん
2020/11/16(月) 04:42:45.86ID:tkpwZn9D
スレを全く読まないで反射で答えてしまいました。
今気付きました、すみませんでした。
520デフォルトの名無しさん
2020/11/16(月) 06:44:11.49ID:OL16ghBV
>>516
心が狭い、というかてめーの都合だろそれ
勝手にイラついてろよ、こっちにゃ関係ねえわ
521デフォルトの名無しさん
2020/11/16(月) 07:50:58.47ID:u3jXok4q
>>520
マルチするのはお前の都合だろ。人の時間を無駄に使わすな
522デフォルトの名無しさん
2020/11/16(月) 07:59:26.89ID:OL16ghBV
互いにてめーの都合だからな
知らん馬の骨に命令すんな
何様のつもりだ
523デフォルトの名無しさん
2020/11/16(月) 08:01:26.23ID:QRq3yxwv
時間を無駄に使うって>>516みたいな話?
他で解決済みだったら無駄になるって意味がよくわからん。回答したらちゃんと感謝してほしいとか?
524デフォルトの名無しさん
2020/11/16(月) 08:05:45.08ID:OL16ghBV
ここは技術板なのに
クロスポストできるシステムを作ろうともしない
フリーライダーが吠えてるだけだ
525デフォルトの名無しさん
2020/11/16(月) 08:26:08.12ID:GdRLcc7O
bool GoToHell(bool gotoTravel, bool gotoEat)
{
return (gotoTravel || gotoEat);
}
526デフォルトの名無しさん
2020/11/16(月) 09:04:54.68ID:T8j9su4c
>>522
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw
527デフォルトの名無しさん
2020/11/16(月) 10:24:06.29ID:OL16ghBV
>>526
だからどうした?
ぐうの音も出なくてそんなくだらんことぬかしたか?
528デフォルトの名無しさん
2020/11/16(月) 11:03:12.40ID:2ijHHLJY
ぐう😪
529デフォルトの名無しさん
2020/11/16(月) 11:23:44.07ID:hTDmnJOp
腹ペコかよ
530デフォルトの名無しさん
2020/11/16(月) 11:36:22.45ID:OL16ghBV
勝負あったな
これからもマルチであろうが何であろうが
どこにどんな投稿をしようが口出しは無用だ
収穫ゼロでご苦労だったな
531デフォルトの名無しさん
2020/11/16(月) 12:57:31.91ID:sF1WJXNT
仮に百歩万歩譲ってクロスポストの機能が無いからマルチを許すとしても
マルチ投稿にはオリジナルのスレとレス番へのリンクの同時投稿を義務付けるべき
532デフォルトの名無しさん
2020/11/16(月) 13:00:20.03ID:OL16ghBV
義務違反したらどうなるんだ?
実効性のない俺ルールを勝手に吠えてろセンズリこき野郎
533デフォルトの名無しさん
2020/11/16(月) 13:07:05.30ID:BvdXplQc
義務ではないよ
答えの付かない質問だけが残ってるのって寂しくない?
質問に答えが付かないって認識が定着しちゃうとコミュニティの衰弱にも繋がる
悲しいね
534デフォルトの名無しさん
2020/11/16(月) 15:15:24.81ID:OL16ghBV
どう書けば回答が付きやすいかなんて
みんなそれぞれ考えてることだ

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

俺様が自分の頭で考えてるのはまだマシなほうで、
fj時代で頭の更新が止まったままの化石か
古代遺跡から発掘した碑文に洗脳されたバ…若者か知らんが
おおかたそういう手合いのマニュアル人間だろどーせ
535デフォルトの名無しさん
2020/11/16(月) 16:33:15.96ID:MWCEXPaa
誰か教えてほしい。データベースの基本中の基本だと思うけどよくわからんです
数万の部品の名前があるとして簡単に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しないといけないです
もっとスマートないい方法はないでしょか
536デフォルトの名無しさん
2020/11/16(月) 17:09:54.39ID:OL16ghBV
a4,b3,c2,d1,e5
↓わざわざこんなことしなくていいと思う
a3,b2,d1,e4

a4,b3,c0,d1,e5 さらには
43015 でいいじゃないか
537デフォルトの名無しさん
2020/11/16(月) 17:40:46.63ID:hTDmnJOp
データベースは空き時間にデータをソートするからな
登録したてのデータはライトバックデフォだろ
で、参照数の多いデータを頭に持ってくる
木というかハッシュを何個かに分けて参照数の差で管理すればやり易い
538デフォルトの名無しさん
2020/11/16(月) 18:17:01.54ID:uQizIpoB
そもそも既製RDBを使う話?それともデータベース的なものを自分で作る話?
そこハッキリしないと平行線だぞ
539デフォルトの名無しさん
2020/11/16(月) 18:43:02.87ID:MWCEXPaa
>>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 みたいのを上手に使って出来ないかなあって
540デフォルトの名無しさん
2020/11/16(月) 19:00:52.03ID:uQizIpoB
単に順序の管理用と名前検索用の赤黒木かなんかを作っとけばいいだけの話じゃないの?
違うの?
541デフォルトの名無しさん
2020/11/16(月) 19:00:58.93ID:Jgt25IWR
例えば
map<id,parts> master; // パーツマスター
list<id> seq; // パーツの並び
map<id, list<id>::iterator> lookup// 各パーツのseq中の位置の参照テーブル
ってしておいて、seqに突っ込んだ要素はlookupに参照用の登録をする。
542デフォルトの名無しさん
2020/11/16(月) 19:32:53.88ID:Z6yFFWiy
>>540
そう言うことやね
そもそも配列で要素削除したら詰める処理にめっちゃ時間かかるし
543デフォルトの名無しさん
2020/11/16(月) 19:36:29.66ID:oSwqK6E+
>>535
「間に入れる」という操作が少ないのなら、ソート用のシリアル番号を項目に用意する。
頻繁に挿入操作するとしてもシリアル番号を有理数化して調整すればいい。
544◆QZaw55cn4c
2020/11/16(月) 20:21:10.58ID:K6OrqUDY
>>537
RDBS はデフォではソートなんかしないし、ソートされたデータが欲しかったら INSERT/UPDATE/DELETE 時にすでにインデックスを張っておくように、あらかじめわざわざ指定するものだと思いますが
空き時間にバックグラウンドでソートする DB なんて聞いた事がないですね
よろしかったら、そういう DBS が何か教えていただけませんか?
545デフォルトの名無しさん
2020/11/16(月) 20:33:56.43ID:hTDmnJOp
ソートじやねぇ
デフラグだ
546デフォルトの名無しさん
2020/11/16(月) 21:12:03.78ID:BvdXplQc
>>544
ソートという言い方はちょっとおかしいけどそれに近いことをRDBはしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね

といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ
547◆QZaw55cn4c
2020/11/16(月) 21:16:37.23ID:K6OrqUDY
>>546
コメントありがとうございます!
でも「インデックスを再配置する」タイミングは、やっぱり update/insert/delete のタイミングなんじゃないでしょうか?
548デフォルトの名無しさん
2020/11/16(月) 21:25:44.06ID:BvdXplQc
充填率100%ならトランザクション中にリアルタイムで再配置するしかないけど
充填率100%未満ならその場でインデックスを再構築したりはしない
最近のRDBは行バージョンに対応してるからトランザクションログさえ書ければガンガンいくよ
実データファイルの書き換えは後回しにしても整合性保てるので
549デフォルトの名無しさん
2020/11/16(月) 21:33:03.21ID:hTDmnJOp
だからそれがライトバックだろバカもんが
550デフォルトの名無しさん
2020/11/16(月) 21:34:06.52ID:OL16ghBV
>>539
フルスペルからエントリ番号を引ける辞書か数学関数があればいいだろ
551デフォルトの名無しさん
2020/11/16(月) 22:10:00.49ID:2ijHHLJY
エネルギー充填率120%!!
552デフォルトの名無しさん
2020/11/17(火) 00:16:25.08ID:UNFUL2Kr
主キーでB-treeを構成する
PostgreSQLは明示的にバキュームする(B-treeの調整だけではないが

ところでB-treeってなんですか(・∀・)?
553デフォルトの名無しさん
2020/11/17(火) 12:40:30.03ID:PuHDpULa
二分木、binary tree

b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い
554はちみつ餃子 ◆8X2XSCHEME
2020/11/17(火) 12:52:49.72ID:lifPo1s+
B木 (B-tree) は二分とは限らないよ。
ところでこのBはバランスのBかと思ってたんだけど
考案者とか関連会社の頭文字という説もあるみたいだね。
555デフォルトの名無しさん
2020/11/17(火) 13:16:51.60ID:XfP96roT
BinaryかBalanceかどっち?
556デフォルトの名無しさん
2020/11/17(火) 13:40:13.56ID:LFLSoNm5
binaryじゃ二分になっちまうから違うな
557デフォルトの名無しさん
2020/11/17(火) 13:40:16.49ID:KFJ2cj0W
発祥はわからんけど今となってはBalanced/Balancing Treeだろうな
日本語訳も平衡木だしね
558デフォルトの名無しさん
2020/11/17(火) 17:31:51.25ID:gGBQNTu8
定期的に最小完全ハッシュ関数を求めて置き換える。
559デフォルトの名無しさん
2020/11/17(火) 19:20:00.69ID:Tiv5/dm/
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.
560デフォルトの名無しさん
2020/11/17(火) 21:21:24.35ID:LFLSoNm5
完全ハッシュって、衝突が起こりえないってこと?
ハッシュの使い方の基本がわかってねえやつが考えることの典型だが
561デフォルトの名無しさん
2020/11/17(火) 23:48:10.65ID:UNFUL2Kr
PostgreSQLのハッシュは衝突したら線形リストに収める的なやつだったはず…
562デフォルトの名無しさん
2020/11/18(水) 10:04:24.66ID:fvU2iODC
完全ハッシュ関数は簡単に作れる。

auto hash(auto a) { return a; }

最小であることが重要。
563デフォルトの名無しさん
2020/11/18(水) 10:11:34.00ID:fvU2iODC
constexprでコンパイル時に最小ハッシュ関数が静的に解決される。

これぞ神言語。
564デフォルトの名無しさん
2020/11/18(水) 10:11:37.19ID:hkPPdx4I
まあIdentityも定義には嵌まるかな
565デフォルトの名無しさん
2020/11/18(水) 10:57:38.49ID:+eOywhWF
>>562
ぷw
566デフォルトの名無しさん
2020/11/18(水) 13:28:57.32ID:oGkGNlvA
確か、ハッシュが衝突した所を、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 になる
567デフォルトの名無しさん
2020/11/18(水) 16:06:44.89ID:fvU2iODC
C++も結構風呂敷広げる系言語だけど、Haskellには負けてしまうなあ。
568デフォルトの名無しさん
2020/11/18(水) 20:57:21.43ID:v8HWKopj
ハッシュ関数とハッシュテーブルの話がごっちゃになってる
569デフォルトの名無しさん
2020/11/18(水) 21:45:14.61ID:m5UtHFcK
わてほんまによー言わんわ♪
570デフォルトの名無しさん
2020/11/18(水) 21:47:58.74ID:fvU2iODC
上げ。
571デフォルトの名無しさん
2020/11/18(水) 21:51:25.76ID:fvU2iODC
完全最小ハッシュ関数は、Nginxで使われてたんじゃなかったかな。
前に調査した時見たと思うわ。
572デフォルトの名無しさん
2020/11/20(金) 16:43:55.07ID:WhXHGWda
Windows環境のVC++2010でマクロプログラムを作ってます。
CapsLock状態をプログラム上から直接変更する手段はありますか?
最悪仮想キーコードでシフト押下、Caps押下、離す、離すの4手で実現はできるのかなとは思いますが
573デフォルトの名無しさん
2020/11/20(金) 16:49:03.01ID:JmNduuKf
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setkeyboardstate
574デフォルトの名無しさん
2020/11/20(金) 17:05:17.17ID:KM6YfWXc
>>572
できなかったと思う
できたとしてもやるべきではない
CapsLock状態かどうかを調べることはできる
プログラムでAを入力するときCapsLock状態ならaを送る
CapsLock状態でないならShift+aを送る
なんてことをやったことある
575デフォルトの名無しさん
2020/11/20(金) 17:48:13.50ID:2Xtms9kk
質問するときくらい、あげていきましょうや。
576はちみつ餃子 ◆8X2XSCHEME
2020/11/20(金) 18:07:40.81ID:QATBBV0x
専用ブラウザでお気に入りスレを巡回するし、
スレ一覧を見るときもタイトルで検索かけるから
上がってるか下がってるかなんて見てないな。
見てる人ってそんなにいる?
577デフォルトの名無しさん
2020/11/20(金) 18:39:27.79ID:2Xtms9kk
専ブラってなんすか?
578デフォルトの名無しさん
2020/11/20(金) 20:09:54.73ID:8HnFa960
むかし2chが検索からガンガン流入してた時代は意味あったけど
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の5chではほとんど意味ない文化だなage/sage
579デフォルトの名無しさん
2020/11/20(金) 23:20:16.49ID:2Xtms9kk
だったら、上げていきましょうや。
580デフォルトの名無しさん
2020/11/20(金) 23:36:24.04ID:tRQ7sQvu
だが断る
581デフォルトの名無しさん
2020/11/21(土) 08:35:59.33ID:beyH0yOT
LINEで既読スルーがどうたらと一喜一憂してるバ…若者をうらやましいと思ったことは只の一度もない
やたら何たら離れしまくり四六時中ゲームしかしなくなる廃人化傾向は嘆かわしい限りだ
老害で結構だ、言わせておくさ てめーらより人生楽しいぜ
582デフォルトの名無しさん
2020/11/21(土) 09:06:30.33ID:gA6oFLIj
べつに老害とかいうてませんがな
たんじゅんに皆年寄なりましたな、いうてるだけで
583デフォルトの名無しさん
2020/11/21(土) 09:09:50.16ID:beyH0yOT
ワード1つに噛みつく以外に言うことが何もねえってことか
少しくらいあれよ、これ以上絶望させてくれるな
584デフォルトの名無しさん
2020/11/21(土) 09:12:51.55ID:kTU0dCRJ
おじいちゃん、こんなクソスレで何をそんなに息巻いてるのよ
お体に障りますよ
585デフォルトの名無しさん
2020/11/21(土) 09:14:58.42ID:R3A7NkyC
>>581
マ板の40代スレに変なポエム書いてる奴がいたが、同じ臭いがする
586デフォルトの名無しさん
2020/11/21(土) 09:18:51.83ID:beyH0yOT
ゴミばっか
ここム板だぜ
らしい話しろよ
587デフォルトの名無しさん
2020/11/21(土) 13:02:47.48ID:t4UXk0gp
したがって、上げていきましょうや。
588デフォルトの名無しさん
2020/11/22(日) 01:10:01.54ID:mIY2Yy/p
>>573-574
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えがCapsLock状態なので、そこを制御したかったんですよね。
Shift押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます
589デフォルトの名無しさん
2020/11/22(日) 14:11:14.57ID:3aKbbyVM
RTTIってどんな原理で実装されてるんですか?
590デフォルトの名無しさん
2020/11/22(日) 14:26:33.97ID:KUPbiAdd
>>589
仮想関数と同じように、クラスごとにコンパイラがデータ生成して個々のオブジェクトから辿れるように埋め込む。
591デフォルトの名無しさん
2020/11/22(日) 14:33:39.46ID:gdEBKvV8
どんな高度なことをやってるように見えてても結局はC言語で実装してんの?
592デフォルトの名無しさん
2020/11/22(日) 15:03:04.61ID:h+lYxto0
>>591
CPUが直接理解できるのはマシン語のみ。
そのマシン語に一対一に近い対応関係があるのはC言語。
だからどんな高度なことをやっているように見えてもほとんど全ての場合が
C言語で書ける。
593デフォルトの名無しさん
2020/11/22(日) 15:51:20.82ID:o/Js7Lov
>>590
RTTI有効にしたらパフォーマンス落ちるっていうのをみたことあるけど
ただデータ(プログラム領域?)が増えるだけなら落ちなくない?
594デフォルトの名無しさん
2020/11/22(日) 17:19:17.03ID:LCd15qeF
仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない
595デフォルトの名無しさん
2020/11/22(日) 17:29:03.52ID:2nm5SjZ0
多態するならデストラクタが仮想のはずだから事実上は追加コストないんだよね
596デフォルトの名無しさん
2020/11/22(日) 20:02:41.94ID:L/uQBHM9
ダイナミックにやりたいヤツ用
597デフォルトの名無しさん
2020/11/22(日) 20:07:55.27ID:BvpndlWI
>>593
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。
598デフォルトの名無しさん
2020/11/22(日) 23:24:02.57ID:LCd15qeF
RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る
599デフォルトの名無しさん
2020/11/23(月) 06:50:21.21ID:SrPyOTC6
nested_exceptionで普通に使う
600デフォルトの名無しさん
2020/11/23(月) 06:52:19.04ID:SrPyOTC6
単純にexceptionで捕獲した例外をsystem_errorとかで場合分けとかね
catchをオーバーロードするよりこっちのほうが融通が利く
601デフォルトの名無しさん
2020/11/23(月) 21:12:23.11ID:gAkTmGSN
そんなコストを気にするほどランタイム速度要求の厳しいソフトなんかお前ら書かんだろ
602デフォルトの名無しさん
2020/11/23(月) 22:39:23.22ID:ryjND0ia
多重ループの中のif文一個でも結構変わるしなあ
603デフォルトの名無しさん
2020/11/24(火) 01:19:31.94ID:IV+MkG/a
>>602
確かに変わる。
大量のテキストファイルをパースする際の字句解析など、
今でもコードの1クロックの差で体感速度が現実に変わってくる。
604(u_・y) ◆e6.oHu1j.o
2020/11/24(火) 16:34:51.81ID:qTKKRlIf
(u_・y)最近C++で作られた出来の良いアプリって存在するの?
(u_・y)もう世の中のほとんどがブラウザーとそのブラウザー上で動作するスクリプトで完結してる気するんだけど
605デフォルトの名無しさん
2020/11/24(火) 16:55:08.02ID:p7TzmKlx
そのブラウザがC++製だろうがwwwww
606デフォルトの名無しさん
2020/11/24(火) 17:52:32.94ID:18TBNzSS
サーバを増やすんじゃなくて、時代はもうクラウドなんですよ!
607デフォルトの名無しさん
2020/11/24(火) 18:12:54.60ID:zMf11be4
やめなよ
608デフォルトの名無しさん
2020/11/24(火) 21:44:11.65ID:+m+UL9CA
>>603
どんなストレージ使ってんの?
609デフォルトの名無しさん
2020/11/24(火) 23:18:43.39ID:EBaS3Lgi
何色のパンツはいてんの?w
610デフォルトの名無しさん
2020/11/25(水) 14:30:01.10ID:yb7Sfyoy
やめなよ
611デフォルトの名無しさん
2020/11/25(水) 18:03:06.30ID:GXxyf9BA
噂によると、メモリモデルに辟易していた、りーぬす先生が、NEW見た瞬間メモリモデルこれでよくねー?病にかかったと聞いた。
612デフォルトの名無しさん
2020/11/25(水) 20:24:34.76ID:OwYFbtHk
あんなにC++はfuckでshitだって言ってたのに?
613デフォルトの名無しさん
2020/11/25(水) 20:27:03.84ID:0vRedS2N
>>611
抜かせや証拠出せ
614デフォルトの名無しさん
2020/11/26(木) 20:31:56.32ID:rfhyh3I2
今からC++勉強しようと思ってるんだけど江添本って評判いいの?
615はちみつ餃子 ◆8X2XSCHEME
2020/11/26(木) 21:31:52.07ID:aL88M1qg
>>614
「江添亮のC++入門」のことだよね。
評判は悪くはないと思うよ。
太っ腹なことに全文が github に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。

序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。
616デフォルトの名無しさん
2020/11/26(木) 21:36:26.77ID:A1DZUd8N
>>615
どこのhubよ?
617はちみつ餃子 ◆8X2XSCHEME
2020/11/27(金) 11:50:52.05ID:TefhHHJS
>>616
ググれば上位に出てくるやん
https://ezoeryou.github.io/cpp-intro/
618デフォルトの名無しさん
2020/11/27(金) 12:25:02.43ID:4rNXQ0cM
ほう
619デフォルトの名無しさん
2020/11/28(土) 02:48:58.01ID:G8gGytn9
へー
620デフォルトの名無しさん
2020/11/28(土) 03:32:38.65ID:W53VNNYA
ふーん
621デフォルトの名無しさん
2020/11/28(土) 08:49:49.77ID:/IOgDWl9
可変引数テンプレートのコンストラクタだとコピーコンストラクタやムーブコンストラクタより優先順位高い事ある?
622デフォルトの名無しさん
2020/11/28(土) 09:11:22.92ID:KmyDCzB4
template <class... aho>
boke(aho&&...);
boke(boke&&);
これでどっちが優先てこと?
623デフォルトの名無しさん
2020/11/28(土) 11:55:46.81ID:/HPnbUmI
非テンプレ版→テンプレ特殊化→テンプレの順に優先
624621
2020/11/28(土) 13:44:25.19ID:/IOgDWl9
これを実行すると可変引数が優先されてAhoが出る

https://ideone.com/ExRunF
625デフォルトの名無しさん
2020/11/28(土) 14:33:28.98ID:/HPnbUmI
そのAhoはムーブじゃなくてbokeを作る時のデフォルトコンストラクトで出てる
626はちみつ餃子 ◆8X2XSCHEME
2020/11/28(土) 14:35:42.94ID:gUqAhKBc
>>624
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。
627デフォルトの名無しさん
2020/11/28(土) 16:18:43.35ID:/IOgDWl9
ではこれで1が出るのは何故?

https://ideone.com/zW676W
628はちみつ餃子 ◆8X2XSCHEME
2020/11/28(土) 16:41:08.52ID:gUqAhKBc
>>627
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。
629デフォルトの名無しさん
2020/11/28(土) 17:23:45.26ID:/IOgDWl9
>>628
可変引数の方をconst&にしたら解決した!ありがとうございます。
630デフォルトの名無しさん
2020/11/28(土) 21:09:45.69ID:2t4HVeMH
またアホみたいな流れかおもたら
意外とちゃんとした質問応答の流れでビビった
631デフォルトの名無しさん
2020/12/01(火) 15:54:55.38ID:V2eyqU/t
gdbのプロンプトでシェルの文法使う方法ある?
具体的にはfor文で配列を走査しながら内容をprintしたりしたい
632デフォルトの名無しさん
2020/12/01(火) 21:49:00.34ID:1uVg5H0L
>>631
配列自体をprintするんじゃだめ?
633デフォルトの名無しさん
2020/12/02(水) 01:32:17.93ID:cCR9MlfF
>>632
添字番号を併記したりかんたんな演算を行ったりしたかった
634デフォルトの名無しさん
2020/12/02(水) 05:03:16.50ID:OLoYTJfY
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つになってしまいましたがよろしくお願いします
635デフォルトの名無しさん
2020/12/02(水) 11:08:47.58ID:3dB9NeQy
>>634
「上記のよう」と言われても、どの挙動に疑問を感じてるのかわからない。
「clangとg++」の質問も、ここで誰かに「ある」とか「ない」とか言われて何の意味があると思ってるのかわからない。
636デフォルトの名無しさん
2020/12/02(水) 11:20:44.01ID:CcFfxv7q
>>634
まず君がemplace_backとpush_backの違いをどう理解しているのか、自分の言葉で説明してみよう
話はそれからだ
637はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 11:59:18.46ID:wCsCmSK2
>>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 でも問題は起きない。
たまには処理系のバグってことも無くはないが、
どちらかで問題が起きるなら書いたプログラムのどこかが間違ってる疑いのほうが濃い。

個別の事情によってはコンパイラをどちらかに固定することもあるかもしれないが、
理想としてはどちらでも良いようになっているほうが好ましくはある。
638はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 15:48:13.91ID:wCsCmSK2
>>631
シェルというか Python か Guile は使える。
https://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html#Python-API
639デフォルトの名無しさん
2020/12/02(水) 21:51:44.10ID:3RyObk2q
プログラミング初心者でC++で競馬予想ソフトを作ってみたいんだけどC++はそういうのに向かないんですかね?
スクレイピングってやつはC++でできないのか?
640デフォルトの名無しさん
2020/12/02(水) 22:26:25.03ID:FHuLcrq8
できるけどC++はWebやテキスト処理が得意とはいい難いから別の言語の方がいいかも
641デフォルトの名無しさん
2020/12/02(水) 22:45:20.94ID:9+QNoiNo
テキストはc♯のが向いてる
642デフォルトの名無しさん
2020/12/02(水) 22:49:07.36ID:1SGYvOuK
>>638
対話モードのPythonインタプリタ上でgdbを動かせるということですか?
643はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 22:59:56.90ID:wCsCmSK2
>>642
gdb のコマンドとして Python スクリプトが使えるという話。
644デフォルトの名無しさん
2020/12/02(水) 23:31:37.18ID:3RyObk2q
ありがとうございました!
645デフォルトの名無しさん
2020/12/02(水) 23:51:03.60ID:1SGYvOuK
>>643
スクリプトかぁ
対話的にやりたいですけどわかりました
ありがとうございます
646はちみつ餃子 ◆8X2XSCHEME
2020/12/02(水) 23:55:00.77ID:wCsCmSK2
>>645
対話的にもできるよ。
647デフォルトの名無しさん
2020/12/02(水) 23:56:36.23ID:9+QNoiNo
pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ
648デフォルトの名無しさん
2020/12/03(木) 00:11:32.72ID:MFKNATAf
>>646
ありがとうございます
なんか便利さの割にドキュメント少ない気がしますけど勉強します
649デフォルトの名無しさん
2020/12/03(木) 06:42:09.17ID:w/MpdpQO
勉強するぞ!勉強するぞ!勉強するぞ!


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

どれ?
651デフォルトの名無しさん
2020/12/03(木) 22:01:01.64ID:anyYWQoy
「ブラック企業社員」のお助けアプリが誕生 開発したのは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/
652デフォルトの名無しさん
2020/12/04(金) 14:40:55.75ID:rp0tCaVB
>>637
返信遅れて申し訳ありません、読んで色々試したら何となくですが理由見えてきました
一番為になった回答です…本当にありがとうございました
653はちみつ餃子 ◆8X2XSCHEME
2020/12/05(土) 00:49:53.38ID:rsyXPWsW
>>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
654デフォルトの名無しさん
2020/12/05(土) 08:56:44.63ID:F3hjf/ak
最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず
655デフォルトの名無しさん
2020/12/05(土) 10:34:50.44ID:T+MIshnP
C++11以降はSTL前提で学んだほうが理解しやすい
656デフォルトの名無しさん
2020/12/05(土) 11:14:52.77ID:pZ+vMW1v
STLとそうじゃないものの境界ってなに?
657デフォルトの名無しさん
2020/12/05(土) 11:17:08.79ID:i8LYHGeY
そんなの意識する必要ない。"STL"なんて定義曖昧な言葉を使わなければよい。
658デフォルトの名無しさん
2020/12/05(土) 11:41:24.32ID:f0cq7ZxN
C++を使わなくてもSTLを学ぶほうが良い。
それどころか、およそ学問というものに携わる者はSTLを学ぶべきだ。
なぜなら20世紀における抽象化最大の功績だからだ。
659デフォルトの名無しさん
2020/12/05(土) 11:42:36.00ID:f0cq7ZxN
STLは宇宙人が教えた説があるほどクレバー、クレバー、そしてクレバーだ。
660デフォルトの名無しさん
2020/12/05(土) 11:47:59.12ID:f0cq7ZxN
目からうろこですよ。
まじ鱗。
661デフォルトの名無しさん
2020/12/05(土) 11:53:54.60ID:f0cq7ZxN
ムーブセマンティクスも感動したなあ。
あいつら本物の天才だな。
まじ鱗ですよ。
662デフォルトの名無しさん
2020/12/05(土) 12:09:38.13ID:WVFX1CVk
unique_ptrとかthreadとかnumeric_limitsとかも"standard template library"だけどSTLとは呼ばれない
よく理解してないC++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象
663デフォルトの名無しさん
2020/12/05(土) 12:15:33.65ID:f0cq7ZxN
なんじゃそりゃ。
664デフォルトの名無しさん
2020/12/05(土) 12:22:29.71ID:pZ+vMW1v
コントかよ
665デフォルトの名無しさん
2020/12/05(土) 18:59:09.68ID:ynooL14Y
>>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は出てこない
666デフォルトの名無しさん
2020/12/05(土) 19:10:24.03ID:F+hw3W9u
>>662
御意
667デフォルトの名無しさん
2020/12/06(日) 03:41:22.30ID:hI81p89D
>>665
違うと思うぞ
668デフォルトの名無しさん
2020/12/06(日) 08:19:51.08ID:tzyWxjgm
じゃあ、多数決で決めましょうや。
669デフォルトの名無しさん
2020/12/06(日) 11:09:55.43ID:sjTPCZjA
>>667
違うんだったら何が正解だ?
670デフォルトの名無しさん
2020/12/06(日) 13:55:38.68ID:hI81p89D
>>669
単純にemplace_backはコンストラクタに渡す引数を、push_backは生成済みの実体を受け取るという違いを
>>634が分かってないだけだろ

ついでに言えば、pairにinitializer_listを受け取るコンストラクタがあっても
emplaceは可変長テンプレート引数だから、推定に失敗してどっちにしてもエラーになる
多分。
671デフォルトの名無しさん
2020/12/08(火) 20:44:18.72ID:efO/t6By
visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
672デフォルトの名無しさん
2020/12/08(火) 21:02:15.62ID:O6ovwbXJ
上の方に
#include<filesystem>
と書く
673デフォルトの名無しさん
2020/12/09(水) 01:24:22.81ID:WuZTb4kZ
なんだそりゃあ?!
674デフォルトの名無しさん
2020/12/09(水) 06:50:42.80ID:OrjjObtT
>>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
675デフォルトの名無しさん
2020/12/09(水) 08:05:49.03ID:TKgHvdMy
>>671
脱線の話だがappleのclangでfilesystem使おうと思ったら、
OSを10.15以降にしないと動かない上にビルドしたバイナリもそれ以降。
macだとintel版はhomebrewでgcc落としてビルドすれば旧いのでも動く。

日本語などのファイル名の扱いは、自分の試した範囲で、mac,linux,winで微妙に違ってた。
「wstring」、「stringでutf-8」のどっちかしか出来ん処理系があって、
複数機種用のコードは結局ifdefで分けるしかなかった。
そのうちライブラリが整備されるとは思うけど。
しかし「ハ゜」→「パ」のmacの仕様には参った。
676デフォルトの名無しさん
2020/12/09(水) 09:04:33.91ID:bCzZQrOf
脱線路運動。
677デフォルトの名無しさん
2020/12/13(日) 02:22:39.32ID:1g8P/X2h
c++でRSSリーダー作れましゅか?
678デフォルトの名無しさん
2020/12/13(日) 04:12:37.43ID:64ZS/1bZ
はい
679デフォルトの名無しさん
2020/12/13(日) 11:52:25.92ID:83or1IML
RSSなんてもう誰も使ってないだろ
フィードしてるサイトなんてありゅ?
680はちみつ餃子 ◆8X2XSCHEME
2020/12/13(日) 13:34:03.99ID:hv54fxHN
ブログホスティングサイトの系統だと RSS を提供してないところとかあんまりないと思うが。
681デフォルトの名無しさん
2020/12/14(月) 16:01:14.17ID:WlKHswnl
ていうかあちこちの言語スレで同じ事聞くのやめなさい
682デフォルトの名無しさん
2020/12/14(月) 19:00:34.80ID:mjvV58cu
std::vectorのメンバ関数にfind()とかrfind()がないのはなんでですかね?
string::find()みたいにあってもよさそうな気がするんですが・・・
683デフォルトの名無しさん
2020/12/14(月) 19:10:08.09ID:iTp2tyae
>>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?
684デフォルトの名無しさん
2020/12/15(火) 09:25:27.40ID:rqj48Chi
>>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい
685デフォルトの名無しさん
2020/12/15(火) 13:10:21.94ID:qBOs25Ot
UTF8とかだと単純に同じバイト値探せばいいわけじゃないからstringは特殊化してるんだよ
686デフォルトの名無しさん
2020/12/15(火) 13:19:55.29ID:PHBBuZ6n
>何でもかんでもメンバに突っ込むのは悪い設計だからだ
こういう考え方いかにもCから入りましたって感じだな
687デフォルトの名無しさん
2020/12/15(火) 13:21:51.75ID:gbeRTgGG
UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた
688デフォルトの名無しさん
2020/12/15(火) 13:36:54.46ID:8mWx/Grk
>>687
短い系列は特に、部分列が一致したからといっても、
デコードした時にその文字かどうかは保証出来ないんじゃ?
689デフォルトの名無しさん
2020/12/15(火) 14:01:10.21ID:gbeRTgGG
std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring
690デフォルトの名無しさん
2020/12/15(火) 14:23:23.61ID:rqj48Chi
>>686
kwskしていいか?
それともやめとくか?
691デフォルトの名無しさん
2020/12/15(火) 16:06:36.42ID:cCubMtK6
>>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ
692デフォルトの名無しさん
2020/12/15(火) 16:37:15.21ID:pcemzeew
>>690
質問主ですが、是非ともkwskしてくだしあ
693デフォルトの名無しさん
2020/12/15(火) 16:39:59.71ID:4y27nUGT
utf16はサロゲートペアちょんぎらないようにしないとな
694デフォルトの名無しさん
2020/12/15(火) 20:33:42.18ID:DseQeO8W
合字とか異体字セレクタとかもな
文字を扱うというのは大変なんだ
695デフォルトの名無しさん
2020/12/15(火) 21:47:00.55ID:F7+1e89x
>>688
1バイト目とそれ以降は重ならないからそういうことは起こらないはず
696デフォルトの名無しさん
2020/12/15(火) 22:25:44.23ID:jc1ZwvrK
そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈
697デフォルトの名無しさん
2020/12/16(水) 06:17:15.68ID:vxgFSXGy
>>696
だよね
std::stringのfindは要素を探すんじゃなくて、
要素(char)の連なり=部分文字列を探すもので
vectorとかのコンテナのそれとは異質だし蛇足とは思えない
698デフォルトの名無しさん
2020/12/16(水) 08:58:52.32ID:O+yPS5En
>>692
了解

>>686
kwsk
699デフォルトの名無しさん
2020/12/16(水) 09:05:13.62ID:9tcp04F0
まぁ汎用的というか、stlのアルゴリズムはほとんどが全コンテナに対して共通のコードに出来るからそうしてる(グローバルな関数にしてる)んじゃないかね
実際問題、共通のインターフェースを継承によって表現するのでない限り、同じコードをあちこちメンバ関数にするのは不自然
逆に共通のインターフェースにすべきクラスの機能を無理に普通の関数にするのも馬鹿げてる
700はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 10:59:12.23ID:zkq7HUY5
アドホック多相とパラメトリック多相の違い。
701デフォルトの名無しさん
2020/12/16(水) 11:28:07.30ID:Hv+rjawS
データ構造とアルゴリズムを合わせたものがクラスでありオブジェクト指向言語の特徴の1つと教わった
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型Tに対する操作を外部化しておいたほうが汎用的で型Tを実装するすべてのクラスが操作を個別に持つのは無駄ってことか
702デフォルトの名無しさん
2020/12/16(水) 11:50:27.11ID:uK3tjXUx
beginとendをペアで指定しないといけないポインタ的iteratorのせいで外部化せざるを得なかったという方が正しいんじゃないですかね
703デフォルトの名無しさん
2020/12/16(水) 11:58:03.72ID:cXvwu3qd
↓のサイトでも外人が同じ議論してるね
誰か要約してください
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?
704はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 13:09:55.17ID:zkq7HUY5
>>701
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
C++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。
705デフォルトの名無しさん
2020/12/16(水) 13:27:14.81ID:j60AFdVm
C++ってカプセル化できるんでしたっけ?
706デフォルトの名無しさん
2020/12/16(水) 13:34:22.28ID:KCK/bj61
抜け道があるかって意味なら、java等もカプセル化できないってことになるけど
707デフォルトの名無しさん
2020/12/16(水) 13:45:31.91ID:O+yPS5En
>>701
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ

C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある
708デフォルトの名無しさん
2020/12/16(水) 13:50:56.36ID:j60AFdVm
>>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ
709デフォルトの名無しさん
2020/12/16(水) 13:54:21.41ID:vzlQaAwm
>>708
古い知識ですまんが、素直に抽象基底クラス被せるでだめなん?
710デフォルトの名無しさん
2020/12/16(水) 13:55:52.62ID:KCK/bj61
なる。
そういうことならpmplかインターフェースクラスを定義するかしか思い浮かばないな
711デフォルトの名無しさん
2020/12/16(水) 14:40:21.32ID:O+yPS5En
> 内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないと

これ、そんなに深刻な問題か?
ライブラリの更新なんてリポジトリ決めてバージョン管理して
あとは勝手に落とせで運用できてるやん
712はちみつ餃子 ◆8X2XSCHEME
2020/12/16(水) 15:35:04.62ID:zkq7HUY5
現実的な部分では運用でなんとかしてる部分はあるのも確かだが、
現実に対する妥協なのでパラダイム的な話とは区別が必要じゃない?
まあ不可分なところもあるんで微妙な話ではあるけども。
713デフォルトの名無しさん
2020/12/16(水) 16:36:11.97ID:uK3tjXUx
>>708
それってモジュール使えば解決できる問題じゃないんでしたっけ
714デフォルトの名無しさん
2020/12/16(水) 18:14:53.45ID:O+yPS5En
>>712
運用できていても、いささかでも無理があれば
まだ余裕があるうちでも将来を見据えて
議論する価値が出てくるね

問題は無理を全く感じていないことを
空想論的に問題視することだ
個人的に問題視するのは勝手だが
他人が付き合ってくれないときにしつこくすることだ
715デフォルトの名無しさん
2020/12/16(水) 18:54:24.56ID:G781YURu
意義深い議論が展開されてるな
716デフォルトの名無しさん
2020/12/16(水) 22:51:18.04ID:IUrbfkPB
C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
プログラミングパラダイムを論じるにはいまいちに思はるる、

やっぱヘッダファイルとか批判者にとってかっこうの餌食でありその光景がまさに展開された、
717デフォルトの名無しさん
2020/12/16(水) 22:58:46.39ID:IUrbfkPB
きちんとオブジェクト指向するんなら継承は全部virtualであるべきや
といってもC++だけにあてはまる批判ではないが

Base::Foo()とDerived::Foo()が異なる振る舞いで定義されているときに、
func(Base&)にDerivedを渡したらfunc()の中ではBase::Foo()が呼ばれるとか
危険極まりない
この基準で言ったらたいていの似非オブジェクト指向言語はNG
718デフォルトの名無しさん
2020/12/16(水) 23:05:40.32ID:L6k9APCP
不毛な宗教戦争よ
719デフォルトの名無しさん
2020/12/16(水) 23:25:11.55ID:2c+prgNQ
クラスベースオブジェクト指向はすべて似非オブジェクト指向
アランケイ「C++のオブジェクト指向?知らない子ですね…」
720デフォルトの名無しさん
2020/12/17(木) 01:05:17.90ID:X4tT/GwL
>>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。
721デフォルトの名無しさん
2020/12/17(木) 01:10:53.36ID:YFuWJYb1
>>717
え、その場合仮想関数ならDerived::Fooやろ?
非仮想とか値渡しならそうだけど
722デフォルトの名無しさん
2020/12/17(木) 07:05:17.82ID:iG8ucCJK
非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど
723デフォルトの名無しさん
2020/12/17(木) 07:08:07.45ID:4VSV+Zch
>>717
仮想継承の話かと思ったら
そうじゃないようだな
724デフォルトの名無しさん
2020/12/17(木) 08:15:27.96ID:61mx8GyZ
>>720
「使った機能にあったコスト」だよ。
ゼロコストはあくまで機能を使わなかった場合の話。
cの機能しか使わなかったらcのコストしかかからないのが基本方針だろ。
725デフォルトの名無しさん
2020/12/17(木) 11:41:30.12ID:YFuWJYb1
>>722
あぁそういうことか・・
ちょっと自分の常識からかけ離れてるから理解できんかった
726デフォルトの名無しさん
2020/12/17(木) 14:49:46.67ID:4VSV+Zch
#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がおかしいんだよな?
バグレポ上がってたりする?
727デフォルトの名無しさん
2020/12/17(木) 14:50:46.30ID:4VSV+Zch
バージョン書き忘れた
Visual Studio: 19.28.29334
GCC: 10.2.0
728デフォルトの名無しさん
2020/12/17(木) 15:56:08.03ID:UR7Dc4KD
>>726
整数型だけしかサポートしてないよ
729デフォルトの名無しさん
2020/12/17(木) 17:33:27.07ID:4VSV+Zch
>>728
23.20.1 Header <charconv> synopsisにはfloat, double, long doubleが挙がってるんだけど・・・
ああ、GCCがってことねthx
730デフォルトの名無しさん
2020/12/17(木) 22:56:50.01ID:mqVedE2Y
gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。
731デフォルトの名無しさん
2020/12/18(金) 01:08:57.52ID:CTNkAd3G
>>726 「ダメ」がコンパイルエラーの意味ならエラーメッセージも挙げてよ。
732デフォルトの名無しさん
2020/12/18(金) 01:16:51.95ID:UPU6Cu+L
ダメコンは、ダメージコントロールの略ですよ。
733デフォルトの名無しさん
2020/12/18(金) 05:02:08.68ID:t+i2XnfT
継承使うと密結合になり変更に弱くなるし(実行時のオーバーヘッドにもなりそう)
規約で縛るというSTLの実装には好感が持てる
734デフォルトの名無しさん
2020/12/18(金) 06:51:33.39ID:TZi3wQJw
>>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]':

まだまだ延々続くけど、こんくらいでいい?
735デフォルトの名無しさん
2020/12/18(金) 09:49:45.23ID:/2PllW9k
>>727
vsでも2017update7は同様のエラーみたいだなぁ
736デフォルトの名無しさん
2020/12/18(金) 11:01:15.84ID:nIUIWdb5
>>733
何言ってんだ継承使いまくりだぞ
737デフォルトの名無しさん
2020/12/18(金) 11:36:27.07ID:YAPYqYIf
>>734
ココに上げろよ
https://pastebin.com/
738デフォルトの名無しさん
2020/12/18(金) 12:09:40.31ID:opBsRLFO
オプションは無しなんだ
739デフォルトの名無しさん
2020/12/18(金) 13:23:30.53ID:2eIYLdZu
n要素のvectorをm要素に変えたいときって中身はどうでも良いって思ってれば
vec = vector<int>(m);

vec.assign(m);

vec.resize(m);
もコスト変わらない?
740デフォルトの名無しさん
2020/12/18(金) 13:30:32.59ID:4UaQE5Dn
バグバグ言語ランキングで見事PHPに勝利!
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/
741デフォルトの名無しさん
2020/12/18(金) 13:40:56.80ID:TZi3wQJw
>>737
何がしたいの?
元ソース貼ってるからそっちでコピペして
手元のGCCでコンパイルしてみれば再現するはずだよ
742デフォルトの名無しさん
2020/12/18(金) 13:47:38.37ID:YAPYqYIf
>>741
邪魔くさいからココに貼るなってんだよ
743デフォルトの名無しさん
2020/12/18(金) 14:07:04.35ID:TZi3wQJw
それは731に言ってくれ
俺は知らん
744デフォルトの名無しさん
2020/12/18(金) 14:33:16.19ID:kYvjoJp5
>>729
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。
745デフォルトの名無しさん
2020/12/18(金) 15:35:36.73ID:A9pQAhpY
>>729
23.20.1がHeader <charconv>のドラフトってどれだ?
746デフォルトの名無しさん
2020/12/18(金) 15:37:59.88ID:TZi3wQJw
>>745
N4713
747デフォルトの名無しさん
2020/12/18(金) 15:50:56.91ID:A9pQAhpY
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は未実装なんだなぁ」と思考停止して終わる
748デフォルトの名無しさん
2020/12/18(金) 17:24:37.67ID:TZi3wQJw
>>747
そうか、思考停止するのか
よかったね

何だか色々と前提置いてるけど
俺は知らんよ、おまえさんの前提なんぞ
イヤミ口調のくせに脇が甘いな
749デフォルトの名無しさん
2020/12/18(金) 17:28:32.84ID:Mxkr6hqK
priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<int> は別にデフォルトのままで良いし書くのが面倒なので省略したいです
可能ですか?
750デフォルトの名無しさん
2020/12/18(金) 18:26:15.74ID:Xk0olBJ3
template <typename T>
using my_priority_queue = priority_queue<T, vector<T>, greater<T>>;
751デフォルトの名無しさん
2020/12/18(金) 18:41:07.57ID:UPU6Cu+L
gccの場合、未実装でもスタブだけ存在する場合があるんですよね。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。

ここまでの流れでもお気づきでしょうが、gccの熱烈なファンは、gccが後れを取ることが許せないんですよ。

ですから、gccの熱烈なファンサイトより、GNUのマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。
752デフォルトの名無しさん
2020/12/18(金) 19:45:59.90ID:PzyTX7K9
始皇帝氏
753デフォルトの名無しさん
2020/12/18(金) 19:59:32.56ID:A9pQAhpY
>>748
ここ以外に各コンパイラでの実装具合が上手い事まとまってるサイトとかあんの?
754デフォルトの名無しさん
2020/12/18(金) 20:30:00.87ID:A9pQAhpY
コンパイラのサポート状況 (C++17) - cppreference.com
https://ja.cppreference.com/w/cpp/compiler_support/17

こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな
755デフォルトの名無しさん
2020/12/18(金) 20:48:34.81ID:A9pQAhpY
>>746
N4713のpdfとかどこをどう漁れば出てくんだ?
全然見つからないんだけど
756デフォルトの名無しさん
2020/12/18(金) 20:52:41.57ID:2rT2nv7x
>>755
N4713 c++で検索したらトップに出てきたぞ。
普段どんな検索しているんだよ。
757デフォルトの名無しさん
2020/12/18(金) 20:53:49.00ID:UPU6Cu+L
https://github.com/cplusplus

ここで検索すればドラフトならみられますよ。
向こうも見てるだろうけど。
758◆QZaw55cn4c
2020/12/18(金) 21:01:49.42ID:ivKQNPRV
>>751
関係ないけれども、gcc って今は C++ で記述されているんですよね
長い間私はそれをとても残念に思っています
オプティマイズは苦手であってもいいから C で記述されている C++ 処理系って存在するのでしょうか?
759デフォルトの名無しさん
2020/12/18(金) 21:12:10.66ID:A9pQAhpY
>>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のドラフトに行きついたんだ?
760デフォルトの名無しさん
2020/12/18(金) 21:20:36.71ID:UPU6Cu+L
おーけーぐーぐるえぬよんなないちさん、と言いました。
761デフォルトの名無しさん
2020/12/18(金) 21:37:45.97ID:A9pQAhpY
行き着いた、ってのは>>746の彼がだよ
どういう経緯で彼が「これこそが勉強すべきドラフトである」と結論したんだ?
762デフォルトの名無しさん
2020/12/18(金) 22:07:42.21ID:TZi3wQJw
俺がN4713を見ていたことが、えらい気に入らない人がいるようだね
知らんがな
仮にwebページ見られなかったとして、どうやってN4713を落とせたのかとか
いちいち開陳せにゃならんの?
763デフォルトの名無しさん
2020/12/18(金) 22:09:31.45ID:XdXLiWO3
>>722 >>725
差分プログラミングとかいう腐りきったプログラミングパラダイムでは
ハイディング上等なんだ、
そう思っていた時期が(ry
764デフォルトの名無しさん
2020/12/18(金) 22:11:14.08ID:UPU6Cu+L
こちらから見えるということは、向こうからも見えてるということです。
気を付けなされよ。
765デフォルトの名無しさん
2020/12/18(金) 23:08:30.12ID:A9pQAhpY
>>762
「ドラフトはこれを見ましょう」と大々的に紹介されてるわけでもなし、
落としたDLしたじゃなくて、どうしてそれを『選んだ』のかが不思議なんだよ
普通の経路じゃまず選べない
766デフォルトの名無しさん
2020/12/18(金) 23:26:57.29ID:yxlBLqeq
c++ってやたうんちくばっか言う人多いよね
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある
767デフォルトの名無しさん
2020/12/18(金) 23:29:15.18ID:zfI8p5qO
プログラマがうんちく言わないで何やるんだ?
768デフォルトの名無しさん
2020/12/18(金) 23:48:52.19ID:A9pQAhpY
これの話の続きなのか
なら不思議は解消だ
謎は全部解けた


C++相談室 part151
http://2chb.net/r/tech/1589424805/20

20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ
769デフォルトの名無しさん
2020/12/19(土) 00:02:31.33ID:yZxXMpJa
そんな昔のスレは関係ないのでは?
770デフォルトの名無しさん
2020/12/19(土) 00:20:03.02ID:0cb9HLXb
>>766
こういうとこでの情報提供や議論はともかく、うんちくでマウント取りたがるのは自信の無さの裏返しだからねぇ
771デフォルトの名無しさん
2020/12/19(土) 00:23:06.73ID:sq702jvD
うんちくがうっとおしくて、仕事なら自分が勝ってる!って思い込みたいだけなんじゃないの
772デフォルトの名無しさん
2020/12/19(土) 00:26:01.61ID:yZxXMpJa
図星つかれたからうんちくと言ってるのでは?
773デフォルトの名無しさん
2020/12/19(土) 00:38:15.56ID:x1EY5aRu
スカトロスレ
774デフォルトの名無しさん
2020/12/19(土) 00:42:57.09ID:0cb9HLXb
爆釣ww
775デフォルトの名無しさん
2020/12/19(土) 03:34:46.64ID:yZxXMpJa
この野郎。
ウンチクンめ。
776デフォルトの名無しさん
2020/12/19(土) 06:01:48.82ID:u3YcA1fK
>>765
だから何?
俺がどのドラフトをDLするかを
いちいちあんたの承認とらにゃいかんの?
こっちゃ不思議がられても関係ないんで
いちいち申告してもらわなくていい
777デフォルトの名無しさん
2020/12/19(土) 08:07:11.10ID:vl/1bKki
まあお茶でも飲んでカルシウム取ろう
778デフォルトの名無しさん
2020/12/19(土) 10:17:03.91ID:M1Nera9i
お茶にはカルシウム入ってないだろほとんど
779デフォルトの名無しさん
2020/12/19(土) 10:18:39.16ID:dTYT78ol
お茶とカルシウム入りウェハースでも食えばええやん
780デフォルトの名無しさん
2020/12/19(土) 10:25:15.46ID:cik2rIYa
何のはなしやねん
781デフォルトの名無しさん
2020/12/19(土) 13:23:01.76ID:biviwPkb
Ca++
782デフォルトの名無しさん
2020/12/19(土) 13:26:14.15ID:biviwPkb
正式版は有料だがドラフトはタダで手に入るからヒジョーに得がたいが、
やっぱドラフトの内容は随時変わるから、
居丈高に相手を論破してなじり倒すにはやっぱ最新のドラフトでないとイマイチ、
783デフォルトの名無しさん
2020/12/19(土) 13:50:09.89ID:B7wez7Ce
よくわかりませんが、Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソというのと似た話ですか?
784デフォルトの名無しさん
2020/12/19(土) 14:02:30.06ID:biviwPkb
Chromeで実装されてるお試し機能がSafariで実装されてないからSafariはクソとなじったら
ドラフトの版が変わったらChromeの方がクソだった、みたいな
785デフォルトの名無しさん
2020/12/19(土) 14:41:50.09ID:+cK8B71a
ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか
786デフォルトの名無しさん
2020/12/19(土) 18:35:13.01ID:dM4VNuuI
C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?
787デフォルトの名無しさん
2020/12/19(土) 18:41:15.86ID:5blMWj9s
>>786
まあその方がメモリ管理をミスを防ぎやすいからな
C++11以降だとまた世界が違うが
788デフォルトの名無しさん
2020/12/19(土) 18:42:49.16ID:x1EY5aRu
どう世界が違うの?
いじわるしないで教えてよ
789デフォルトの名無しさん
2020/12/19(土) 18:46:00.09ID:dM4VNuuI
メモリ管理の文化的な作法なのね。
790デフォルトの名無しさん
2020/12/19(土) 18:47:02.46ID:5blMWj9s
>>788
スマートポインタが実用になったから、それでメモリ管理する方が文字通りスマートになった
だから、必要なら関数内部でメモリ確保する方法でもメモリ管理ミスが起こりにくい
791デフォルトの名無しさん
2020/12/19(土) 19:25:11.20ID:p4OhEmVF
>>786
c++というかcの伝統だわな。
オブジェクトをヒープに置かなくていいという性能的なメリットもある。
792デフォルトの名無しさん
2020/12/19(土) 19:59:05.03ID:HGWooSzm
Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束

vectorやstringをゴロッと返せば済む今はいい時代になったと思う
793デフォルトの名無しさん
2020/12/19(土) 20:17:48.73ID:vl/1bKki
消費者が買い物袋用意するなんてレジ袋有料化みたいだな
794デフォルトの名無しさん
2020/12/19(土) 20:19:43.48ID:yZxXMpJa
右辺値参照のおかげですよ。
795デフォルトの名無しさん
2020/12/19(土) 21:06:02.20ID:ISt3uDJM
質問@:
例えば…std::vectorで配列を確保したとします…push_backで追加した時に…アロケーター??が…
アドレスの再割当てをしたとします…この時…vectorは要素のアドレスは連続である事は保証されますが…
この時のアドレスの再割当てって…同期?非同期?どうなるの?
つまり…push_back時に同期で行うのか…非同期でロジック流れて行っちゃうか…って所…。
非同期だと怖いんだけど…。

質問A:
std::vector<char>とやった場合…data()でchar*を取れますが…std::vector<char>に'\0'の概念って
あります?どうなんでしょうねぇ…。'\0'のために+1多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。
796デフォルトの名無しさん
2020/12/19(土) 21:33:09.17ID:HGWooSzm
普通に質問しろ
797デフォルトの名無しさん
2020/12/19(土) 22:28:27.67ID:yZxXMpJa
>>795
アロケータの内部実装がどうなっていようとも、push_back()から戻った時にはデータは追加されているので、問題ないのでは?

std::vectorは末尾に0を追加したりしません。
798デフォルトの名無しさん
2020/12/19(土) 22:39:50.71ID:u3YcA1fK
>>782
- 最新のドラフト
+ 正式版の規格票
799デフォルトの名無しさん
2020/12/19(土) 22:59:41.56ID:vl/1bKki
確かにCだと必要メモリの問い合わせの為に二度呼び出したり面倒でしたわ…
800デフォルトの名無しさん
2020/12/19(土) 23:18:45.05ID:biviwPkb
>>798
正式版の規格票は金かかるやんけヽ(`Д´)ノ
801デフォルトの名無しさん
2020/12/19(土) 23:20:05.98ID:biviwPkb
>std::vectorは末尾に0を追加したりしません。
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…
802デフォルトの名無しさん
2020/12/20(日) 00:32:15.85ID:zH6cQZTj
誰もstringの話してないと思うが
803デフォルトの名無しさん
2020/12/20(日) 07:06:06.65ID:u5Xjtcw/
>>801
msys64/mingw64/include/c++/10.2.0/bits/basic_string.h
ここに書いてあるぞ
804デフォルトの名無しさん
2020/12/20(日) 09:47:23.01ID:C7ljP8CG
>>799
でも「直接メモリいじってる」て感覚があって好みだったなぁ
まあ自己満足でしかないのだけれど
805デフォルトの名無しさん
2020/12/20(日) 10:51:49.27ID:KSHt8d36
今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで
806デフォルトの名無しさん
2020/12/20(日) 11:14:31.35ID:IFRd5RXQ
>>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。
807デフォルトの名無しさん
2020/12/20(日) 11:16:20.77ID:B3eFXD1J
RAIIなんて今どきでもないだろ
808デフォルトの名無しさん
2020/12/20(日) 11:27:39.08ID:KSHt8d36
そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど
809デフォルトの名無しさん
2020/12/20(日) 11:52:43.58ID:mkiVvOjR
Finalizeが失敗する可能性があってエラーハンドリングしないといけない場合はあえてそうしているかもね
810デフォルトの名無しさん
2020/12/20(日) 13:25:24.04ID:8M1CEzDz
あえてね!
811デフォルトの名無しさん
2020/12/20(日) 13:31:53.40ID:1w6q/2mK
というかスコープ内で完結しない、グローバルな状態を持つものならそうするやろ
812デフォルトの名無しさん
2020/12/20(日) 13:48:55.12ID:KSHt8d36
グローバルバカかな?
813デフォルトの名無しさん
2020/12/20(日) 13:52:50.85ID:BqPIIXKk
お前が挙げてたそういうライブラリがInitialize/Finalizeの中で何やってるか考えれば自ずと答えはでるだろ
814デフォルトの名無しさん
2020/12/20(日) 14:05:47.98ID:S1Ae4PMu
グローバルな初期化と後始末ならInitialize/Finalizeとか明示的に呼ぶ設計のが一番闇が少ない
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれInitializeとFinalizeでも良いが(呼び忘れ対策は完璧になるが
InitializeやFinalize自体のエラーハンドリングを考えるとやっぱビミョー
815デフォルトの名無しさん
2020/12/20(日) 21:00:32.48ID:POdM0+je
変数名で対象変数のポインタを取得してくる実装(リフレクション?)をしたいんですけど
対象変数をポインタテーブルとかに書き下すことなくコンパイル時に変数名リテラルと対応するポインタを自動生成することってできますか?
816デフォルトの名無しさん
2020/12/20(日) 21:02:59.13ID:POdM0+je
対象変数はstructかclassのメンバ変数を想定しています
817デフォルトの名無しさん
2020/12/20(日) 21:23:18.64ID:B3eFXD1J
直接には無理
目的次第だけど基本的にはプリプロ駆使して頑張るしかない
818デフォルトの名無しさん
2020/12/20(日) 22:39:57.26ID:pIq+bOjP
まずC#処理系を書きます
819デフォルトの名無しさん
2020/12/20(日) 22:49:36.29ID:ZSjgwNod
車輪がでかすぎる
820デフォルトの名無しさん
2020/12/20(日) 23:37:12.93ID:XnWb8UXr
マップファイルから生成
821デフォルトの名無しさん
2020/12/21(月) 02:47:40.73ID:HVkDagg+
数値計算に興味がある方に聞きたいのですが、ベクトル演算はどのように実行していますか?
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです
822デフォルトの名無しさん
2020/12/21(月) 03:43:19.44ID:tQs5NvLs
>>821
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い
823デフォルトの名無しさん
2020/12/21(月) 12:49:04.92ID:h5UrY03S
>>821
時と場合による
824デフォルトの名無しさん
2020/12/21(月) 12:49:33.35ID:h5UrY03S
ベクトル演算
ていうだけじゃ広すぎて
825デフォルトの名無しさん
2020/12/21(月) 12:52:20.80ID:XzTX0Cyb
SVDとかするなら自前実装なんか無駄だからeigen使う。それ以外なら>>822 の通りだな。
826デフォルトの名無しさん
2020/12/21(月) 19:14:50.06ID:5SN4/ItM
みなさんありがとうございます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます
827デフォルトの名無しさん
2020/12/21(月) 20:22:43.20ID:94n2fENi
そりゃそうだろな
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う

そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある

後発の方が簡単に出来るというのは幻想
828デフォルトの名無しさん
2020/12/21(月) 21:07:13.89ID:HyYYfsZ0
簡単なことは簡単に言え

既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな

あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー

こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い
829デフォルトの名無しさん
2020/12/21(月) 23:35:19.34ID:5SN4/ItM
ヘッダファイルに
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?
830デフォルトの名無しさん
2020/12/21(月) 23:51:47.03ID:3sOyVj6l
大昔(40年ぐらい前?)とかもんのすごい特殊な環境用のコンパイラはしらんが
今の普通のコンパイラではそれはコンパイル時に計算される
831デフォルトの名無しさん
2020/12/22(火) 00:34:06.43ID:M/dL4DYR
>>829
コンパイル時に解決されてると思います
832デフォルトの名無しさん
2020/12/22(火) 00:35:40.93ID:M/dL4DYR
すみません、830で回答されてましたね
畳み込み、とかで検索してみては
833デフォルトの名無しさん
2020/12/22(火) 02:07:17.74ID:bzbnZ90n
>>826
Fortranでも基本的にblasとかlapackに投げるだけじゃないの?
しかもC/C++からFortranルーチン呼べるし

「FortranではやりやすかったがC/C++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい
834デフォルトの名無しさん
2020/12/22(火) 06:36:52.20ID:GAvzsgv/
blasとかlapackがfortanで記述されてるからね
中身いじるような人がどれほどいるかはわからんけど
835デフォルトの名無しさん
2020/12/22(火) 08:38:11.38ID:+a9RX7vJ
>>829
翻訳時
なぜなら1.0/3.0は定数式だからだ
これは昔とか今どきとか関係ない
836デフォルトの名無しさん
2020/12/22(火) 09:08:43.07ID:z2CQLL3J
翻訳(interpret)ですか?
C++はコンパイル言語ではないのですか?
837デフォルトの名無しさん
2020/12/22(火) 09:23:29.08ID:Yt10VcGs
翻訳(translate)でしょ。
838デフォルトの名無しさん
2020/12/22(火) 09:26:00.82ID:AY4u6Qzg
コンパイラと構文解析とオートマトンって大学の授業でやったなぁ
839デフォルトの名無しさん
2020/12/22(火) 10:18:51.71ID:hq0fof4K
Cコンパイラ作ったよね。
840デフォルトの名無しさん
2020/12/22(火) 12:04:28.60ID:GAvzsgv/
constexprとか中身がどうなってるのかもうわけわからん
841デフォルトの名無しさん
2020/12/22(火) 16:28:31.76ID:cQdMNR1v
>>834
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが
842デフォルトの名無しさん
2020/12/22(火) 23:28:55.02ID:cWduRySe
constexprともなるとどこまでコンパイル時計算してくれるかは
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが
843デフォルトの名無しさん
2020/12/22(火) 23:41:36.57ID:Yt10VcGs
>>842
constexpr にまつわるルールはコンパイル時計算してくれる最低ラインを定めるもの。
どこまでコンパイル時計算してくれるかが処理系依存なのは初期のC言語から変わりないよ。
844デフォルトの名無しさん
2020/12/23(水) 00:29:07.29ID:0vtm2rCB
constexpr指定したものはコンパイル計算でしょう?
845デフォルトの名無しさん
2020/12/23(水) 01:06:37.35ID:BffjS4vY
>>844
コンパイル時評価可能(コンパイル時に評価するとは言っていない)
846はちみつ餃子 ◆8X2XSCHEME
2020/12/23(水) 02:19:42.25ID:wEQUKH0P
>>844
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。

定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。

実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。
847デフォルトの名無しさん
2020/12/23(水) 06:16:15.13ID:ZPrNOuha
C++はまだ色々と足し続けてるのか
constexprはともかくconstinit, constevalて...
848デフォルトの名無しさん
2020/12/23(水) 06:17:06.41ID:ZPrNOuha
まるで言語開発屋のおもちゃじゃねえか
849デフォルトの名無しさん
2020/12/23(水) 08:41:53.85ID:iOQdV6uo
今頃気づいたのw
850はちみつ餃子 ◆8X2XSCHEME
2020/12/23(水) 09:20:18.63ID:wEQUKH0P
自動で呼び分けて欲しいと思うこともあれば
コンパイル時に限って欲しいことだってあるだろう。
851デフォルトの名無しさん
2020/12/23(水) 19:37:56.48ID:lj5PdyQr
1秒間に1万回くらい数値判定の計算をしてるのですが
Xが3桁の時のみTrueを返すようなコードで一番速いのってどんなコードですかね?
愚直にif(1000>X>=100)でやるのと
if(10>X/100>=1)ではどっちが速いんでしょうか
852デフォルトの名無しさん
2020/12/23(水) 19:39:04.22ID:PgZc4XsV
前者
853デフォルトの名無しさん
2020/12/23(水) 19:43:53.01ID:PgZc4XsV
多くのコンパイラは以下に変形しそうな気がする
if (X-100u<900u)

後者をコンパイラが最適化するかどうかはコンパイラ次第
854デフォルトの名無しさん
2020/12/23(水) 19:47:49.74ID:PgZc4XsV
PCなら1秒に1万回程度なら気にしなくて良い
8bitマイコンだとこの判定だけでも10個以上の命令になったり
855デフォルトの名無しさん
2020/12/23(水) 20:03:20.62ID:rWjdGSAm
長さ数十億のbool型配列用意すれば早いんじゃね
isDigit3[x] だけで出るじゃん
856デフォルトの名無しさん
2020/12/23(水) 20:04:42.24ID:psZzhFw3
>>851
それ条件式が間違ってるだろ
857デフォルトの名無しさん
2020/12/23(水) 21:04:06.12ID:oO0RWe4j
根本的には、速度って環境依存の性質だから、本当に重要な話なら実測で確かめるしかない。

一般論としては、現代のコンパイラはそこらの人間より賢いから、やりたいことを素直に書いて最適化を任せるのがいい。
わかってない人が余計なことをやると、かえって遅くなる可能性が高い。

計算量のオーダーを変えるような、アルゴリズムレベルの最適化なら意味があるんだけど。
小手先のテクニックは通用しないと思っていい。
858デフォルトの名無しさん
2020/12/23(水) 22:00:42.78ID:p3n5tJou
>>850
いうてほんとに定数式になってくれないと困る場面で定数評価してくれない事態に出くわしてないんだよなぁ・・
constexprなクラスとか作ってればあるのかもしれんが
859デフォルトの名無しさん
2020/12/23(水) 22:21:55.80ID:JqE6cd4a
最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
860デフォルトの名無しさん
2020/12/23(水) 23:11:04.90ID:pgaSoeQc
typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?
861デフォルトの名無しさん
2020/12/23(水) 23:12:13.58ID:pgaSoeQc
ヘッダーに渡しても同じことか…相互参照してるんだった…
862デフォルトの名無しさん
2020/12/23(水) 23:13:21.42ID:pgaSoeQc
一応…間違えないように…ヘッダーに集約しておく…
863デフォルトの名無しさん
2020/12/23(水) 23:13:34.29ID:KqYWGLnc
Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、

1秒間に、1,000万回ループ出来るようになる
864デフォルトの名無しさん
2020/12/23(水) 23:43:55.33ID:iOQdV6uo
いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい
865デフォルトの名無しさん
2020/12/24(木) 06:19:28.22ID:TzdYJrci
サムソンを守るためのHuawei潰しという側面もある。
866デフォルトの名無しさん
2020/12/24(木) 06:55:00.49ID:fOK7nTKz
んあ?
867デフォルトの名無しさん
2020/12/24(木) 06:58:51.74ID:TzdYJrci
文大統領がトランプ大統領に、Huaweiを潰すよう勧めたそうです。
868デフォルトの名無しさん
2020/12/24(木) 07:53:25.30ID:X8ie3AzF
>>863
C++ならはじめから秒2000万回ループできるコードになる
869デフォルトの名無しさん
2020/12/24(木) 08:12:44.86ID:TzdYJrci
このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。
870はちみつ餃子 ◆8X2XSCHEME
2020/12/24(木) 10:18:24.14ID:ys2W6z1g
>>860
OK
https://timsong-cpp.github.io/cppwp/n3337/dcl.typedef#3
871デフォルトの名無しさん
2020/12/24(木) 11:16:41.02ID:h4Gph9I0
>>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p
872デフォルトの名無しさん
2020/12/24(木) 11:27:11.76ID:h4Gph9I0
>>871
途中で送ってもうたorz

((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。

単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz

つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。
873デフォルトの名無しさん
2020/12/24(木) 17:12:04.54ID:tg7gMCA8
>>872
if ((unsigned)v - 100u < 900u)
のが早くない?

テーブルは論外だ
アドレス計算コストの方が高そうだし
ROMサイズやキャッシュ汚染などの悪影響がある
874デフォルトの名無しさん
2020/12/24(木) 19:53:19.25ID:9+0irhfK
if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。
875デフォルトの名無しさん
2020/12/24(木) 19:56:18.95ID:VQIKvM0h
そのくらいなら最適化に任せた方がいい気がするが……
876デフォルトの名無しさん
2020/12/24(木) 21:38:01.43ID:B83YCBUh
比較がボトルネックってのは本当だろうかとは思わなくもない
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど
877デフォルトの名無しさん
2020/12/24(木) 21:38:20.67ID:X8ie3AzF
整数の減算は非常に高速
条件分岐は遅いし分岐予測を汚染する

コンパイラの最適化を見てると良い
範囲判定は大抵>>873のようなコードになる
878デフォルトの名無しさん
2020/12/24(木) 21:41:03.65ID:X8ie3AzF
コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い

コンパイラが最適化するから

x/100を比較するのは
意味的にも意味不明だし
速くなることもない
879デフォルトの名無しさん
2020/12/24(木) 21:51:18.77ID:X8ie3AzF
ISRの最適化なら

レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある

小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする
880デフォルトの名無しさん
2020/12/25(金) 14:04:51.84ID:L6KY61Ck
バンク切り替えテクニックですか。
むかしのインターフェース誌っぽいですね。
881デフォルトの名無しさん
2020/12/25(金) 17:40:14.36ID:j6GWo/XP
昔のテクニックが今でも有効
882デフォルトの名無しさん
2020/12/25(金) 20:23:57.32ID:KGl9PDWX
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>{});がどちらを呼ぶか規格で決まってる?
883デフォルトの名無しさん
2020/12/25(金) 22:18:37.12ID:9Tm+xBHp
テンプレート引数が少ないtmp<N, N>の勝ち
884デフォルトの名無しさん
2020/12/26(土) 00:14:55.00ID:biNpl0R5
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>

だとだめなのだろうか?
誰か教えて下しあ
885デフォルトの名無しさん
2020/12/26(土) 00:40:10.65ID:3VlCU3bq
>>884
上のコードと下のコードの RecursiveMapperType の定義はまったく同じに見えるんだけど、何が違うの?
886デフォルトの名無しさん
2020/12/26(土) 00:50:04.37ID:biNpl0R5
>>885 さん
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>
887デフォルトの名無しさん
2020/12/26(土) 03:46:58.69ID:fBIAR6pR
https://ideone.com/Ou2BZq
888デフォルトの名無しさん
2020/12/26(土) 15:10:58.71ID:3VlCU3bq
>>886
それじゃ全然機能が違うっていうかその RecursiveMap 何の役にも立たないでしょ。
元の RecursiveMapperType の機能が理解できてないだけか。
889デフォルトの名無しさん
2020/12/26(土) 16:40:20.18ID:vGzfsLf/
再帰的な構造を定義したくて自分自身の型を含めたものを継承してるわけで
それを実現するには前方宣言するしかない
というね
890デフォルトの名無しさん
2020/12/26(土) 17:13:57.40ID:UNoc468U
再帰的なコンテナは、フィールドが出来た時点で破綻するのでは?
891デフォルトの名無しさん
2020/12/26(土) 18:07:48.30ID:TLGOuMOF
https://cpprefjp.github.io/reference/vector/vector.html
>不完全型を要素にする例 (C++17)

これの亜種
892デフォルトの名無しさん
2020/12/27(日) 06:31:05.42ID:QkMmRpj8
C++23に持ち越された契約は何が変わるんだろね。
893デフォルトの名無しさん
2020/12/27(日) 17:59:23.18ID:wQ5c+q6H
ありがとうございます。なんとなくイメージできました。

コードの設計ってまだよくわからないのですが、
再帰処理のためにこうするのって比較的普通なことなんですか?
894デフォルトの名無しさん
2020/12/27(日) 18:23:25.49ID:tp3tetyk
>>893
知らんよ。
普通かどうかなんて気にしてどうするの?ここで名無しの誰かに yes/no 答えてもらって何か意味ある?
895デフォルトの名無しさん
2020/12/27(日) 18:33:52.26ID:7Rx7y5wp
>>893
STLのクラスを継承して階層構造を実現するテクは応用編って感じがする
もっと基本的なやり方をするならデザパタのcompositeパターンを使う
とかかね
896デフォルトの名無しさん
2020/12/27(日) 18:47:54.32ID:7Rx7y5wp
設計を学ぶならデザパタはひと通り見ておいて損はないぞ
897デフォルトの名無しさん
2020/12/27(日) 18:49:43.74ID:QkMmRpj8
ヘネパタ、パタヘネ、デザパタ。
898デフォルトの名無しさん
2020/12/27(日) 22:11:00.35ID:QkMmRpj8
newのコストは気にされますが、deleteのコストは見逃されがちです。
899デフォルトの名無しさん
2020/12/28(月) 02:23:23.12ID:ibU6N4ur
あるクラスのコンストラクタのデフォルト引数を変更するときってどうしたらいいの?
オーバーロードすれば良い?
900デフォルトの名無しさん
2020/12/28(月) 07:27:12.64ID:7Z4wU2qk
単純に変更じゃダメな理由は?
他のライブラリ?
901デフォルトの名無しさん
2020/12/28(月) 07:33:40.98ID:pesKZps1
stlコンテナを継承するのはアウトだろ。
うまくやらないとデストラクタが呼ばれなくなっちゃうぞ
902デフォルトの名無しさん
2020/12/28(月) 09:00:44.26ID:i4NtF28F
じゃあうまくやりましょうや。
903デフォルトの名無しさん
2020/12/28(月) 09:44:51.94ID:bVWPeYFg
そもそもC++ではデストラクタを仮想にしてないってことは「継承すんなよ」って宣言だからなぁ
904デフォルトの名無しさん
2020/12/28(月) 09:55:45.06ID:W/k+iOkV
なんで継承しないようにしたか意見表明文みたいなモンはどっかにあるのか?
905デフォルトの名無しさん
2020/12/28(月) 10:20:49.88ID:ErVwTltE
仮想関数化するとしない場合に比べて余分なコストがかかるから、必要な理由がない限り基本的にそれは避けるということじゃないかな
906デフォルトの名無しさん
2020/12/28(月) 10:32:20.80ID:4OiRlqvR
C++は1クロックでも速く動作させるために非仮想関数をデフォルトにしたのは理解できる
Javaは動作速度よりもオブジェクト指向の継承動作の一貫性を重視してすべて仮想関数にした、これも時代を考えれば理解できる
C#もJavaと同じくデフォルトを仮想関数にしておいて欲しかったのだが、C#はC++を尊重してデフォルト非仮想関数なんだよね
これはちょっと残念
907デフォルトの名無しさん
2020/12/28(月) 11:33:10.90ID:s2RdB6EU
継承して機能追加っていうのがオブジェクト指向的にもどうかと思うね
908デフォルトの名無しさん
2020/12/28(月) 12:34:23.27ID:QmdcnH/3
finalキーワードがこの時代にあれば間違いなく付けただろうな
文句言ってる奴はガイジ
909デフォルトの名無しさん
2020/12/28(月) 12:42:44.62ID:UEnoPUHl
>>903
継承すんな、は言いすぎ。
private継承なら問題ないと思うけど。実際たまに使われているし。
910はちみつ餃子 ◆8X2XSCHEME
2020/12/28(月) 13:19:25.85ID:N6A7dpOQ
デストラクタが仮想ではないものを継承したときの具体的な問題は
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。

設計的に綺麗かどうかはまた別の話だけど。

shared_ptr が (デストラクタが仮想でなくても) 元の型のデストラクタを呼んでくれたりするんで、
場合によってはそういう設計もアリということなんだと思う。
911デフォルトの名無しさん
2020/12/28(月) 14:12:57.70ID:02+J4aSB
>>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. ...
912デフォルトの名無しさん
2020/12/28(月) 17:31:09.93ID:V+A6vVBD
C++自由すぎてしんどいな
後方互換性と引き換えに払った代償か
913はちみつ餃子 ◆8X2XSCHEME
2020/12/28(月) 17:46:19.93ID:N6A7dpOQ
>>911
スライシング自体は起こるけど、それで予想外のことやメモリ管理の矛盾は起こり難い。
914デフォルトの名無しさん
2020/12/28(月) 17:50:37.04ID:i4NtF28F
自由に羽ばたける翼。
915デフォルトの名無しさん
2020/12/28(月) 18:06:08.49ID:V+A6vVBD
自由すぎて困る部分はLinterを併用することで勝手に回避しろってことかな
916デフォルトの名無しさん
2020/12/28(月) 18:37:15.29ID:v+s+VlFU
だってCの設計思想が「人間を信用する」だもん
セキュリティが重視される現代的な言語のベースとしては致命的に合ってないんだよね
917デフォルトの名無しさん
2020/12/28(月) 18:40:02.12ID:02+J4aSB
>>913
やっぱり関係がわからない。
デストラクタが仮想ではないものを継承したときに限ってスライシングが予想外のことや
メモリ管理の矛盾につがなる例をひとつでいいから見えてもらえない?
918デフォルトの名無しさん
2020/12/28(月) 18:40:41.01ID:02+J4aSB
s/見えてもらえない?/見せてもらえない?/
919デフォルトの名無しさん
2020/12/28(月) 19:07:39.46ID:bVWPeYFg
A <|- B, C みたいなときにB, CをnewしてA*として管理しようとすると破棄の時にAのデストラクタしか呼ばれない
920デフォルトの名無しさん
2020/12/28(月) 19:09:58.26ID:UEnoPUHl
>>911
仮想でないデストラクタが話題のスコープなのに、スライシングにスコープを移したら議論にならないでしょ。

911) デストラクタが仮想なものを継承する→スライシングになるものが存在する
という命題は
910) デストラクタが仮想ではないものを継承する→スライシングになるものが存在する
という命題と矛盾するわけではない(両立する)ので、その議論はあんまり意味がない。
921デフォルトの名無しさん
2020/12/28(月) 19:14:08.97ID:i4NtF28F
スライシング・オプティマイザーとかどうよ?
922デフォルトの名無しさん
2020/12/28(月) 19:36:49.42ID:02+J4aSB
>>910
> スライシングが起こらないように使う分には問題はない。
ここもおかしいんだよね。

デストラクタが仮想ではないものを継承して派生クラスのオブジェクトを new で作って
基底クラスのポインタを通して delete したら未定義動作になるわけだけど、
これはスライシングを起こしていなくても問題になる。

「派生クラスのオブジェクトを new で作って基底クラスのポインタを通して delete」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。
923デフォルトの名無しさん
2020/12/28(月) 19:43:43.44ID:592FfNkQ
>>900
変更ってどうやるの?
毎回好きな引数を与えよってこと?
面倒なので、自分の好きな引数を自分のコードの中ではデフォルトにできれば良いのにと思ったのだが、こういう考えは間違っていますか
924デフォルトの名無しさん
2020/12/28(月) 19:51:33.62ID:7Z4wU2qk
>>923
make関数作るのはダメなん?
925デフォルトの名無しさん
2020/12/28(月) 19:59:11.40ID:v+s+VlFU
デストラクタはpublic仮想かprotected非仮想かpublic非仮想finalのどれかにしろ
っていう一般的結論でよくね
926デフォルトの名無しさん
2020/12/28(月) 21:21:17.65ID:sYj4+JXZ
>>925
自分で書くときはそう
標準のコンテナのように既存のクラスがそうでなかったら?が発端だからなぁ

個人的には仮想デストラクタがなければ継承はしない
(一部のイディオムを除けば)private継承にするくらいなら委譲する。
927デフォルトの名無しさん
2020/12/28(月) 21:54:56.73ID:wzipnhb8
デストラクタがprotected:であっても非仮想なら継承したらアウトなんじゃ…
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で
928デフォルトの名無しさん
2020/12/28(月) 21:57:44.66ID:dWPs/bUX
>>924
オブジェクトを作るための関数を作ってはどうかという意味ですか?
確かにそれで良いのでそうします
929デフォルトの名無しさん
2020/12/29(火) 07:11:18.52ID:2gsaGKLd
相称型プログラミング。
930デフォルトの名無しさん
2020/12/29(火) 07:28:15.94ID:2gsaGKLd
いま私大事なこと言いましたよ。
931デフォルトの名無しさん
2020/12/29(火) 07:37:07.18ID:H8QGk97F
プログラミング学びには来ないだろ
こんな途上国に
932デフォルトの名無しさん
2020/12/29(火) 07:38:50.44ID:2gsaGKLd
【CSS規格、読書感想文】
CSSがアイデアであった段階からスクリプト言語で実装され、初の大規模採用であったネットスケープにおいてもJavascriptによって実装されていたため、規格そのものがC/C++で効率的になるよう設計されていない。※
現行の規格に対して効率的な実装を施したとしても、将来の規格バージョンで維持できると限らないため、結局、スクリプト言語と同様の非効率を許容することになる。
これはつまり、ほとんどのシンボルを動的に確保することを意味する。

※HTML5規格は、C/C++で効率的に実装できるように仕組まれている。
933デフォルトの名無しさん
2020/12/29(火) 07:48:03.75ID:UwKcs/oz
なるほどねー
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう
934デフォルトの名無しさん
2020/12/29(火) 07:49:27.20ID:oaU8v0Mt
>>927
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく
935デフォルトの名無しさん
2020/12/29(火) 08:05:44.29ID:vWMLZNcx
>>927
型消去とsmart ptr実装で調べるよろし。
936デフォルトの名無しさん
2020/12/29(火) 09:18:16.16ID:qLyTNuLW
定期的に話題になるけど、基底のデストラクタにvirtualが必要なのは
基底型のポインタでdeleteするときだけな
末端のデストラクタさえ呼べれば、次に呼ぶ基底の型は分かりきってるからね

別の言い方をすれば、常に末端の型のポインタをdeleteする分には、virtualなデストラクタなんか要らんということ
937デフォルトの名無しさん
2020/12/29(火) 11:55:36.33ID:So4DneUg
ポリモーフィズムの旨味が消えるw
938デフォルトの名無しさん
2020/12/29(火) 12:13:46.12ID:2gsaGKLd
ポリリズムから出汁をとったみたいないい方しますね。
939デフォルトの名無しさん
2020/12/29(火) 13:15:00.89ID:m86wB2y9
まあ普通は末端の型を意識しなくて済むからこそ派生の旨味がある訳で
940デフォルトの名無しさん
2020/12/29(火) 14:33:08.60ID:kdP0thHS
>>936
その点については誰もが一度は通る勘違いだよなw
最初はわけも分からず機械的にvirtualつけて回ってたわ
941デフォルトの名無しさん
2020/12/29(火) 20:19:15.83ID:EiaQ+UBu
うっせえ知っとったわ素でまちがえただけじゃわ!ヽ(`Д´)ノウワーン
942デフォルトの名無しさん
2020/12/31(木) 05:29:21.52ID:/Sdg/sCQ
struct A { virtual void Delete() { delete this; } };
struct B : A { void Delete() { delete this; } };
こうなってりゃ別にいらんな
943デフォルトの名無しさん
2020/12/31(木) 11:50:06.55ID:zS3i4lwe
>>795 の同期とか奇妙な質問に思うけど、Javaからくるとそうなるんだな。
944デフォルトの名無しさん
2020/12/31(木) 12:23:37.15ID:3Es5+lkr
javaにだって非同期でメモリ確保するコンテナなんてないでしょ
945デフォルトの名無しさん
2020/12/31(木) 13:41:11.66ID:lvvsunYH
>>942
おとなしく virtual ~A() とするのにくらべて何のメリットも無いな。
946デフォルトの名無しさん
2020/12/31(木) 13:43:11.73ID:zS3i4lwe
deleteのコストは、ほんと気にされないな。
947デフォルトの名無しさん
2020/12/31(木) 15:24:44.84ID:eCxLbtN/
「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?
948デフォルトの名無しさん
2020/12/31(木) 15:31:08.20ID:7G3T5w7B
>>947
母語で曖昧さの無い表記ができますか?
949蟻人間 ◆T6xkBnTXz7B0
2020/12/31(木) 15:40:19.22ID:+0BPso5e
>>950

> 「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

「「a=1 かつ b=1」以外なら実行」なら、
if (!(a == 1 && b == 1)) { 実行(); }

「a=1 かつ「b=1以外」なら実行」なら、
if (a == 1 && b != 1) { 実行(); }
950デフォルトの名無しさん
2020/12/31(木) 15:47:49.87ID:eCxLbtN/
>>949
THX
「a=1 かつ b=1」以外なら実行、でした。
私が950でレスするのもお見通しですか?w
951デフォルトの名無しさん
2020/12/31(木) 18:57:49.39ID:/Sdg/sCQ
>>945
ただの押しつけだな
うるせーバカ
952デフォルトの名無しさん
2021/01/01(金) 05:08:27.95ID:FlWhKtLF
CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。
953◆QZaw55cn4c
2021/01/01(金) 18:05:25.39ID:a5HWfmXn
>>792
それはちょっと古臭いお馬鹿な手法でしょう

正しいやりかたは、
・呼び出し側が呼び出され側に格納エリアを提供する‥‥@
・呼び出し側が確保するべきサイズは@の前に別途問い合わせする
954デフォルトの名無しさん
2021/01/01(金) 18:33:17.97ID:1DPP279V
いずれにしろ面倒
955デフォルトの名無しさん
2021/01/02(土) 00:08:04.41ID:f21yM1/d
CにはCで
#define APPBUFSZ (十分でかい整数値)
void foo() {
  char buf[APPBUFSZ];     // buf[]はスタック上にとられる配列(重要
  if (!func(buf, sizeof(buf))) {  // 第2引数は要素数の意味とするならsizeof(buf) / sizeof([0])
    バッファサイズ不足等のエラー
  }
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない
956デフォルトの名無しさん
2021/01/02(土) 00:11:12.76ID:f21yM1/d
CSSはDOMの一部でありかつ意味と表記の分離の必要からCSSになった
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象
957◆QZaw55cn4c
2021/01/02(土) 00:53:58.35ID:wp0Bo1A/
>>955
kwsk
ちょっとよくわからない‥
958デフォルトの名無しさん
2021/01/02(土) 02:21:09.41ID:dR/zQLwh
>>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな
959デフォルトの名無しさん
2021/01/02(土) 09:15:42.80ID:hdbwvBU0
>>955
何が黄金なのかさっぱりわからんが…
どこでそれが黄金パターンとされているかの出典だけでも頼む
960デフォルトの名無しさん
2021/01/02(土) 09:25:20.55ID:TBL/2gAq
定番は>>953だろう。
事前にサイズを求めるコストがバカにならないという場合だけ別案を検討するくらいで。
961デフォルトの名無しさん
2021/01/02(土) 10:59:35.93ID:dR/zQLwh
大抵の場合は「事前にサイズを求める」=やり直しになりそうなんだけど
962デフォルトの名無しさん
2021/01/02(土) 11:29:31.77ID:f21yM1/d
>>958
左様よほど意図しない事象でも起きない限りエラー処理に行かないぐらい大き目にとる
スタック上に領域をとる場合、時間コストも空間コストもゼロとみなせるからそれで構わない
再帰呼び出しのようなきわめて深い関数呼び出し階層になるときぐらいしか問題は生じない
というわけで、プログラミングしたいこと/すべきことに対するちょっとした洞察と
アーキテクチャーに関する理解さえあれば、言うほど非効率でも不合理でもないことがわかるはず…
963デフォルトの名無しさん
2021/01/02(土) 11:39:10.82ID:YOqoG5bU
>953
確保すべきサイズを問い合わせたときと確保して呼び出した時に必要サイズが変わっていないか気になって夜しか眠れない
(リトライしてもリトライ回数が適切かどうか気になって布団以外で眠れない)
964デフォルトの名無しさん
2021/01/02(土) 19:19:34.45ID:TRpAMVE2
std::make_sharedにインターフェースクラスを継承したクラスを渡したいんですがエラーになりました
これは生ポインタ使えと言うことでしょうか?
https://ideone.com/QUYTgX
965蟻人間 ◆T6xkBnTXz7B0
2021/01/02(土) 19:28:29.87ID:VBbIup1J
>>964
https://programming-place.net/ppp/contents/cpp/language/029.html#pure_virtual_destractor
966デフォルトの名無しさん
2021/01/02(土) 19:32:19.38ID:TRpAMVE2
>>965
デストラクタとコンストラクタの定義書いたらコンパイルできました
どうもありがとう
967デフォルトの名無しさん
2021/01/03(日) 08:55:49.95ID:tz0lNZPE
chromiumのソースみると全面的にstd::unique_ptrを使ってるので、少なくともC++11 以降。
968デフォルトの名無しさん
2021/01/03(日) 09:00:31.13ID:tz0lNZPE
レンダリングコアチーム29名中3名が日本人。
969デフォルトの名無しさん
2021/01/03(日) 14:01:40.32ID:A/6DePqP
newしたクラスをdeleteすればクラス内で保持した変数のメモリも自動的に解放されるのでしょうか? 
970デフォルトの名無しさん
2021/01/03(日) 14:08:46.33ID:I3Vvl19p
>>969
「クラス内で保持」の仕方による。
deleteに伴って各メンバ変数のデストラクタが呼び出されるので、自動的に解放されるようにすることはできる。
971デフォルトの名無しさん
2021/01/03(日) 14:31:09.41ID:A/6DePqP
ポインタの参照先は解放されないとかですかね?
972デフォルトの名無しさん
2021/01/03(日) 15:46:52.70ID:ytOMOpf7
所有してるメモリなら解放されて欲しいけど借用してるメモリは解放されちゃ困るででょ
973デフォルトの名無しさん
2021/01/04(月) 03:53:19.91ID:wIiDK2+4
借りてる金を誰かが返してくれるなら良いお話では?
974デフォルトの名無しさん
2021/01/04(月) 06:10:53.50ID:FFXfDp9J
>>971
スマポ使ったら?
975デフォルトの名無しさん
2021/01/04(月) 19:46:23.01ID:0C4iSsrn
めちゃくちゃ初歩的な質問で申し訳ないのですが文字で「"」を出力したい場合はどうするのですか?
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…
976デフォルトの名無しさん
2021/01/04(月) 19:50:08.29ID:0tciJGtx
えすけぇぷ
977蟻人間 ◆T6xkBnTXz7B0
2021/01/04(月) 19:52:06.94ID:RRkyDjZk
バックスラッシュor
半角の円記号
を使う
978◆QZaw55cn4c
2021/01/04(月) 19:53:04.44ID:SE/uzuCD
>>975
https://ideone.com/X6MCOB
979デフォルトの名無しさん
2021/01/05(火) 02:42:04.01ID:GBNfOfsJ
https://ideone.com/37sNvH
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!
980◆QZaw55cn4c
2021/01/05(火) 02:46:08.54ID:SOx0PxdD
>>979
https://ideone.com/pxsVp1
981デフォルトの名無しさん
2021/01/05(火) 07:30:58.94ID:rKfNNjQV
>>975
cout << R"(cout<<"これ→"←"<<endl;)";
982デフォルトの名無しさん
2021/01/05(火) 08:35:13.05ID:JJaPBKYs
cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な
983デフォルトの名無しさん
2021/01/05(火) 09:02:10.14ID:x+1hwr2M
>>979
macでよくハマるw
984デフォルトの名無しさん
2021/01/06(水) 09:32:04.26ID:UTmmPnLW
HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。
985デフォルトの名無しさん
2021/01/07(木) 01:07:21.92ID:DfoUdJtt
次スレ下さい。
986デフォルトの名無しさん
2021/01/07(木) 14:22:12.51ID:Oosx0PB6
c++で出力出来ない文字とかあるんですか?
>>981
この書き方ならなんでも出力出来るんですかね?
cout<<"これ→"←"endl;)と出力したい時
cout << R"(cout<<"これ→"←"<<endl;))";
でもいけるんですか?
)が気になりますが…
987デフォルトの名無しさん
2021/01/07(木) 15:10:50.98ID:9QJGSme0
>>986
それを言ってるのが>>982だよ
988デフォルトの名無しさん
2021/01/07(木) 19:34:55.01ID:5FPBrit1
>>987
すいません出来ました
fuckという単語なので嘘かと思ってスルーしていました
>>982
ありがとうございます
989デフォルトの名無しさん
2021/01/08(金) 03:01:05.78ID:cNGMO0JS
>>947
cppは論理演算子が少ないからに優しくないから先のレスのようにチマチマ等価な冗長な論理を書くしかないのが面倒だよね…
not-andなんだからnand演算子(=joint denial(↑)、論理用語)で書けりゃいいのに(もちろん裸cppで
990デフォルトの名無しさん
2021/01/08(金) 05:11:49.99ID:wkJPfkff
C++界隈のオッサンは普通に4文字とか猥語とかバンバン使ってちゃんとした説明するから気をつけろ
991デフォルトの名無しさん
2021/01/08(金) 05:14:48.68ID:gKD5AY0L
template <typename A, typename B>
inline constexpr
bool nand(A&& a, B&& b)
{
return !(A == 1 && B == 1);
}
992デフォルトの名無しさん
2021/01/08(金) 08:15:42.48ID:lmjqKHzd
プリプロセッサで演算子増やせないかな?
無理かな?
993デフォルトの名無しさん
2021/01/08(金) 08:24:11.24ID:gKD5AY0L
マクロの識別子は英数字下線だけだかんな
あ、でも英数字下線の演算子もどきならできるね

template <typename R, typename A>
R Static_cast(A&& a) { return a; }
994デフォルトの名無しさん
2021/01/08(金) 16:15:23.09ID:qfyOgjuE
プリプロセッサを自作すればいいんじゃないかな
995はちみつ餃子 ◆8X2XSCHEME
2021/01/08(金) 16:18:48.68ID:PuoTeu6a
そんなに演算子を増やしたいか?
関数でそんなに不都合には感じないが。
996デフォルトの名無しさん
2021/01/08(金) 17:33:21.91ID:z+YKoOzo
NANDが演算子で書けたからって別に理解しやすくもないので、いらない
997デフォルトの名無しさん
2021/01/08(金) 17:38:26.63ID:3K68IyDv
どもるがん知らない人がいると聞いて
998デフォルトの名無しさん
2021/01/08(金) 17:40:30.13ID:/42fFLGa
演算子は色々と使えると便利だぞ
999デフォルトの名無しさん
2021/01/08(金) 17:43:20.57ID:VopvKl3G
質問良いですか?
1000デフォルトの名無しさん
2021/01/08(金) 17:46:32.46ID:CQCRa+nu
1000
ニューススポーツなんでも実況



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

TOPへ TOPへ  

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


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

 ↓「C++相談室 part153 YouTube動画>6本 ->画像>3枚 」を見た人も見ています:
C++相談室 part154
C++相談室 part137
自営業 悩みごと相談室 16
自営業 悩みごと相談室 52
C#, C♯, C#相談室 Part93
自営業 悩みごと相談室 48
C#, C♯, C#相談室 Part95
【真剣相談】大阪市営住宅の浴室給湯器設置
シーバスなんでも相談室 17&#169;3ch.net
【ハゲ】髪の毛の悩み相談室 in DQO【彡⌒ミ】
アパートマンション経営なんでも相談室【151号室】
アパートマンション経営なんでも相談室【150号室】
アパートマンション経営なんでも相談室【137号室】
【名古屋】いじめ相談も「報復」恐れ学校側は直接指導せず…中1女子が下校後に自殺 2月から教室に行かず別室で授業 [ばーど★]
【ガルパン】マライ・メントラインの勝手にお悩み相談室「困っています。全力で『ガルパン』を推すために私は何を為すべきでしょう」 [鳥獣戯画★]
荒らし相談室
エイブル相談室
ハゲミン相談室
船乗りなんでも相談室・10
川瀬いにみの人生相談室
シーバスなんでも相談室70
シーバスなんでも相談室94
シーバスなんでも相談室85
シーバスなんでも相談室71
シーバスなんでも相談室62
シーバスなんでも相談室92
精神障害者の人生相談室
シーバスなんでも相談室39
Dr林のこころと脳の相談室17
アプローチの悩み相談室 14
病巣院クルリのお悩み相談室
初心者の為のボート相談室 Part1
鍼灸マッサージ質問相談室パート17
【本家】船乗りなんでも相談室 22【内航船】
鍼灸マッサージ質問相談室パート16
【本家】船乗り何でも相談室 20【本元】
【ノーワッチョイ】船乗りなんでも相談室 27【内航船】
初心者優先デジタル一眼質問・購入相談室 53
初心者優先デジタル一眼質問・購入相談室 103
初心者優先デジタル一眼質問・購入相談室 109
初心者優先デジタル一眼質問・購入相談室 157
■一級建築士設計製図試験相談室(180室)■
初心者優先デジタル一眼質問・購入相談室 101
■一級建築士設計製図試験相談室(183室)■
■一級建築士設計製図試験相談室(171室)■
【初心者優先】デジタル一眼質問・購入相談室 160
【初心者優先】デジタル一眼質問・購入相談室 163
【初心者優先】デジタル一眼質問・購入相談室 159
【初心者優先】デジタル一眼質問・購入相談室 162
必ず誰かが相談に乗ってくれる恋愛相談室Part604
必ず誰かが相談に乗ってくれる恋愛相談室Part601
必ず誰かが相談に乗ってくれる恋愛相談室Part607
【谷回り】パラレル初級者 滑り方相談室【カービング】
【初心者歓迎】デジタル一眼質問・購入相談室 181
【初心者歓迎】デジタル一眼質問・購入相談室 167
【スキー】初心・初級者 滑り方相談室7【目指せパラレル】
【即切りなさい】フレンド関係お悩み相談室【我慢しなさい】
【ハァテレビ も無エ】ageteoff茸 埋め立て荒らし はんなり相談室★29 [無断転載禁止]
小室圭さんが「ビザ問題」を外務省に相談 外務省は「内政干渉になる」と困惑  ★3 [愛の戦士★]
小室圭さんが「ビザ問題」を外務省に相談 外務省は「内政干渉になる」と困惑  ★5 [愛の戦士★]
【ハァテレビも無エ】ageteoff茸 埋め立て荒らし はんなり相談室 MANGO板分室★2[無断転載禁止]
【ワロタw】 朝日新聞が9月から新連載を開始w その名も、「前川喜平の“針路”相談室」ww
朝日新聞が新連載「前川喜平の“針路”相談室」を開始! ネット「相談者は「貧困女子」に限るw」「その前に文科省汚職について語れw」
ミニミニ(minimini)相談室
研究室配属について相談させてください
18:43:05 up 2 days, 18:56, 0 users, load average: 29.19, 44.88, 45.64

in 3.4939608573914 sec @[email protected] on 102007