https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/
テンプレおしまい
C++相談室 part153
レス数が1000を超えています。これ以上書き込みはできません。
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
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>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
環境によるだろ。
俺は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
乙。
乙。
2020/10/11(日) 07:49:37.39ID:eYoRN2yM
5デフォルトの名無しさん
2020/10/11(日) 07:52:39.24ID:2CDQ3L3B などと自画自賛。
6デフォルトの名無しさん
2020/10/11(日) 09:59:16.21ID:kZXFoyze stdafx.h include したら負け
2020/10/11(日) 13:02:31.31ID:sfgrEAk/
>>https://mevius.5ch.net/test/read.cgi/tech/1594528940/914
>普段から、馬鹿な応答が多かったし、
認めましょう
>「自分でコンテナクラス(リストなど)を作れるから天才」
>だとか、男だったら基本中の基本の出来て当たり前の事が出来るだけで天才と言っている
そんな発言はしていませんよ、確かにコンテナを自作する、というのはやったことはありますが、「自分でつくるとイマイチだよね」というのが私の実感です
https://mevius.5ch.net/test/read.cgi/tech/1434079972/33
>如何に周りのレベルが低いかが分かったから。
周り?
私はアマチュアだから、周りにプログラミングをする人はゼロですよ……
>普段から、馬鹿な応答が多かったし、
認めましょう
>「自分でコンテナクラス(リストなど)を作れるから天才」
>だとか、男だったら基本中の基本の出来て当たり前の事が出来るだけで天才と言っている
そんな発言はしていませんよ、確かにコンテナを自作する、というのはやったことはありますが、「自分でつくるとイマイチだよね」というのが私の実感です
https://mevius.5ch.net/test/read.cgi/tech/1434079972/33
>如何に周りのレベルが低いかが分かったから。
周り?
私はアマチュアだから、周りにプログラミングをする人はゼロですよ……
2020/10/11(日) 17:01:01.82ID:pM0zGshh
C++の規格以外の話はスレチ…
2020/10/11(日) 22:05:10.68ID:wjXte93n
規格の話限定だったの?ここ
2020/10/11(日) 23:00:26.64ID:pSezOgnt
>>8
わざわざ馬鹿な引きニート相手に真面目な返答しなくても
わざわざ馬鹿な引きニート相手に真面目な返答しなくても
2020/10/12(月) 02:50:13.21ID:+FLMYxu9
QZ数ヶ月前俺にスルースキルが無いとか偉そうに言ってなかったっけ
C++に関わる話なら個人的には荒れててもいいと思うが、お前のプロフィールなんか誰も興味ないぞ
C++に関わる話なら個人的には荒れててもいいと思うが、お前のプロフィールなんか誰も興味ないぞ
13デフォルトの名無しさん
2020/10/12(月) 09:52:20.31ID:941JO02h >>12
ttps://mevius.5ch.net/test/read.cgi/tech/1601271690/125
ttps://mevius.5ch.net/test/read.cgi/tech/1601271690/125
14デフォルトの名無しさん
2020/10/12(月) 09:57:09.05ID:O4GtI7oq2020/10/12(月) 10:00:39.31ID:rzm6EDrC
批判されたら自演する修正なんてC++関係ない
2020/10/12(月) 12:54:31.37ID:GHsqP2MR
今とあるOSSのライブラリの動きがあやしいのでデバッグしているんだけど
やっぱりいわゆるモダンなc++はデバッグがつらいわ
デバッガで見てもwrapの嵐でデータの中身になかなかたどり着けない
ステップ実行しててもRAIIをはじめ表面上見えない実装がノイズになってわけわかんなくなる
あとデバッグビルドは恐ろしくパフォーマンス落ちる(Cとかと比べてね)
やっぱりいわゆるモダンなc++はデバッグがつらいわ
デバッガで見てもwrapの嵐でデータの中身になかなかたどり着けない
ステップ実行しててもRAIIをはじめ表面上見えない実装がノイズになってわけわかんなくなる
あとデバッグビルドは恐ろしくパフォーマンス落ちる(Cとかと比べてね)
17デフォルトの名無しさん
2020/10/12(月) 14:12:21.06ID:941JO02h C++ より C が良いね
2020/10/12(月) 15:18:22.15ID:Z3Kcjb2S
STLの unique_ptr, shared_ptr, vector, list, forward, move
といった非常に基本的なものもソースを解読するのはとても難しく
strcmpが3行くらいしかなかったのが懐かしい。
それにC++11以降の機能は非常に好みが分かれ、好きな人は好きだが
嫌いな人は反吐が出るほど嫌い。
といった非常に基本的なものもソースを解読するのはとても難しく
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のオプションをつけてコンパイルしても駄目だった…。
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を使う方をお勧めします。
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
速度も落ちてそう
速度も落ちてそう
2020/10/12(月) 19:26:54.38ID:Z3Kcjb2S
2020/10/12(月) 20:04:28.37ID:Zjr2Hxnk
設計者ももっと簡潔に書ける技能を身に付けるべきだと思うけどねん
2020/10/12(月) 20:14:11.80ID:9Fo4KCKO
>>19
-std=c++1zとかstd=gnu++1zじゃなかったっけ
-std=c++1zとかstd=gnu++1zじゃなかったっけ
27デフォルトの名無しさん
2020/10/12(月) 20:50:41.81ID:O4GtI7oq 文芸的プログラミングですね。
28デフォルトの名無しさん
2020/10/13(火) 02:00:34.30ID:y5TdNrxl29はちみつ餃子 ◆8X2XSCHEME
2020/10/13(火) 03:46:05.57ID:jBq+pHZV 汎用的な部品は広い範囲をカバーするわけだから想定すべき状況が多くなるし、
その分だけ相応に複雑になるのは当たり前の話なんだよな。
逆に strcmp が簡潔だったとか言ってもそりゃあ char から成る文字列の比較に
特化していいなら簡潔に出来て当たり前ですよねってだけのことで、
機能が違うものの複雑さを比べようとするのは馬鹿馬鹿しいよ。
その分だけ相応に複雑になるのは当たり前の話なんだよな。
逆に strcmp が簡潔だったとか言ってもそりゃあ char から成る文字列の比較に
特化していいなら簡潔に出来て当たり前ですよねってだけのことで、
機能が違うものの複雑さを比べようとするのは馬鹿馬鹿しいよ。
2020/10/13(火) 07:14:55.86ID:AAkThgLB
・同名の一時変数を使いまわす
・メモリの節約のために早めにデストラクタを呼ぶ
・スコープを小分けにして可読性を上げる
みたいな目的のために中括弧を多用するのってアリですか?
それともスコープじゃなくて関数を分けろってなりますか?
・メモリの節約のために早めにデストラクタを呼ぶ
・スコープを小分けにして可読性を上げる
みたいな目的のために中括弧を多用するのってアリですか?
それともスコープじゃなくて関数を分けろってなりますか?
2020/10/13(火) 09:00:40.68ID:KjGL8AJy
2020/10/13(火) 09:19:57.42ID:2ekPMyol
STLガーSTLガー言ってるやつ
そもそも++でないCでもポインタ引数2個で始点終点渡すのがロクに書けなさそうだね
そもそも++でないCでもポインタ引数2個で始点終点渡すのがロクに書けなさそうだね
33デフォルトの名無しさん
2020/10/13(火) 09:53:49.84ID:f6jDEgc3 STLの凄さがわからない人もいるという。
34デフォルトの名無しさん
2020/10/13(火) 10:50:05.42ID:y5TdNrxl 知ってることの精一杯がポインタのそれなんだな
クスクス
クスクス
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++使わなくてよくね?
{
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++使わなくてよくね?
2020/10/13(火) 12:30:12.68ID:y5TdNrxl
雑魚おつ
3731
2020/10/13(火) 12:48:18.65ID:alJhtdGu いや、あの・・・
STL自体は非常に良く出来てると思うが、俺普段C++(あるいはC++11以降)マンセーSTLマンセーしてる連中は馬鹿にしてるからね・・・w
お前が作ったんちゃうやろと
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;
}
{
while(first < last) *first++ = val;
}
2020/10/13(火) 12:52:08.93ID:jGpIs/AO
理解は出来ないわけじゃなくSTL流に書くのが汚くて馬鹿みたいに感じるだけだ。
2020/10/13(火) 12:54:03.28ID:jGpIs/AO
配列は処理対象を個数で表現するほうが分かり易いし完結なのに、終端要素で
表そうとするのは単にSTLのとった設計思想の都合でしかないので
馬鹿っぽく感じる。
表そうとするのは単にSTLのとった設計思想の都合でしかないので
馬鹿っぽく感じる。
2020/10/13(火) 12:56:47.00ID:2ekPMyol
>>37
C++11の何が気に入らんの?
C++98でストレス溜まってたところを楽にしてくれてるやん
型指定子autoは同じことを二度も書かされる屈辱から解放してくれるし
range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
俺的にはテンポラリにconstが必須でなくなって痒いところに手が届いた
C++11の何が気に入らんの?
C++98でストレス溜まってたところを楽にしてくれてるやん
型指定子autoは同じことを二度も書かされる屈辱から解放してくれるし
range-based-for-statementの見た目からは驚かされる簡潔さなんかクールだろ
俺的にはテンポラリにconstが必須でなくなって痒いところに手が届いた
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;
}
明らかに配列添字明示してる@のほうが無駄が多くて馬鹿っぽいけど
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;
}
明らかに配列添字明示してる@のほうが無駄が多くて馬鹿っぽいけど
2020/10/13(火) 13:19:51.21ID:2ekPMyol
2020/10/13(火) 13:32:32.38ID:alJhtdGu
>>41
別に気に入らんとか言うとらんよvariadic templates無しの時代はキツかったし(逆に言えばテンプレート以外ではそんなに困らん)
新しいもの使ってる=上級者、だと思ってるような、権威を傘に着てる連中を馬鹿にしてると言ったの
マンセーとかの辺りで察してくれ
別に気に入らんとか言うとらんよvariadic templates無しの時代はキツかったし(逆に言えばテンプレート以外ではそんなに困らん)
新しいもの使ってる=上級者、だと思ってるような、権威を傘に着てる連中を馬鹿にしてると言ったの
マンセーとかの辺りで察してくれ
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;
}
}
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;
}
}
2020/10/13(火) 13:47:15.59ID:jGpIs/AO
2020/10/13(火) 13:49:44.76ID:2ekPMyol
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」とは関連が分かりにくく、
「対称性」が失われている。
だから汚く見える。
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」とは関連が分かりにくく、
「対称性」が失われている。
だから汚く見える。
2020/10/13(火) 13:54:08.20ID:2ekPMyol
2020/10/13(火) 13:55:47.45ID:2ekPMyol
>>48
copy(first1, last1, first2) な
copy(first1, last1, first2) な
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()を使う側の利便性や分かり易さや対称性(=美しさ)。
速度効率をさらに高めたいなら、
void fill(int *top, int n, int val)
{
int *ptr = top;
int *btm = top + num;
while(ptr < btm) *ptr++ = val;
}
と書いても良い。
なので、fill()の内部的な処理効率自体はいくらでも速くできる。
問題は、fill()を使う側の利便性や分かり易さや対称性(=美しさ)。
2020/10/13(火) 14:11:21.12ID:alJhtdGu
>>47
文盲?
文盲?
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)なんてやられた日にゃ引いてから足し直すことになるだろ
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;
}
void fill(int *first, int *last, int val)
{
while(first != last) *first++ = val;
}
2020/10/13(火) 14:44:57.22ID:jGpIs/AO
>>53
>呼び出し側でfill(first, last - first, val)なんてやられた日にゃ引いてから足し直すことになるだろ
それは屁理屈と言うか、もしあなたが頭のいい人なのに本気でそう思っているなら
机上の空論というか、実際のアプリ作製の経験が足りないと思われる。
ほとんどの場合、配列の処理範囲はlastではなく個数のnumの方が便利。
lastは割り出すのにワンクッション手間が増えてしまう。
>呼び出し側で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は事前に個数がわからないにもかかわらず、関数を呼び出せてしまう。
これはストリームの機能ではないか?
オカシイ!と。
それは、呼び出せる方が汎用性があるんだよ。
全然オカシクない。
STLは事前に個数がわからないにもかかわらず、関数を呼び出せてしまう。
これはストリームの機能ではないか?
オカシイ!と。
それは、呼び出せる方が汎用性があるんだよ。
全然オカシクない。
2020/10/13(火) 16:12:52.22ID:jGpIs/AO
2020/10/13(火) 16:14:05.11ID:jGpIs/AO
2020/10/13(火) 16:14:51.63ID:2fTKv7IK
イテレータぐらいはイディオムとして慣れろや
2020/10/13(火) 16:21:31.28ID:jGpIs/AO
2020/10/13(火) 16:45:48.79ID:2fTKv7IK
>>61
じゃあお前ならどんなAPI設計にするの?
じゃあお前ならどんなAPI設計にするの?
2020/10/13(火) 16:48:01.34ID:2ekPMyol
>>55
標準のcopy関数もロクに知らないくせに・・・いや、これは置いとく
では、おまえさんは配列の終点をどのように渡すんだ?
int main()
{
int dim[100];
fill(dim, /*ここ*/, 0);
}
標準のcopy関数もロクに知らないくせに・・・いや、これは置いとく
では、おまえさんは配列の終点をどのように渡すんだ?
int main()
{
int dim[100];
fill(dim, /*ここ*/, 0);
}
2020/10/13(火) 16:49:01.87ID:zWj2VWPf
同値比較はコストがかかるケースもあるんじゃないですか?
要素数を指定するほうが処理コストが抑えられるような気がします
素人意見ですみません;_;
要素数を指定するほうが処理コストが抑えられるような気がします
素人意見ですみません;_;
65デフォルトの名無しさん
2020/10/13(火) 17:13:32.12ID:FpFGKRx+ 配列だから話がややこしくなるんで
リストだったらどうみても始点終点やろ
インターフェースを合わせるために
配列も始点終点にしただけやろ
リストだったらどうみても始点終点やろ
インターフェースを合わせるために
配列も始点終点にしただけやろ
2020/10/13(火) 17:16:38.67ID:jGpIs/AO
2020/10/13(火) 17:19:05.56ID:jGpIs/AO
しかも問題なのは、vectorの中ほどで追加や削除をしても、終点が自動修正されないこと。
それでは始点と終点で管理している意味が無い。
listならいけることはいけるが。
しかし、結局、vetorとlistの違いを意識しなければバグることになる。
それでは始点と終点で管理している意味が無い。
listならいけることはいけるが。
しかし、結局、vetorとlistの違いを意識しなければバグることになる。
2020/10/13(火) 17:25:01.13ID:2fTKv7IK
2020/10/13(火) 17:27:25.69ID:jGpIs/AO
>>68
アイデアを盗作、剽窃しようとするなよ。
アイデアを盗作、剽窃しようとするなよ。
2020/10/13(火) 17:34:02.61ID:2fTKv7IK
はい雑魚
2020/10/13(火) 17:44:12.19ID:jGpIs/AO
>>70
なんのこっちゃ。
なんのこっちゃ。
2020/10/13(火) 18:08:23.24ID:2ekPMyol
>>66
ズコー(aary
↓こんなコード書いたらバカにしまくってやろうと思ってたのに
#define N 100
int dim[N];
fill(dim, N, 0);
その下をいきやがったw
マジックナンバーって言葉知ってる?
ズコー(aary
↓こんなコード書いたらバカにしまくってやろうと思ってたのに
#define N 100
int dim[N];
fill(dim, N, 0);
その下をいきやがったw
マジックナンバーって言葉知ってる?
73デフォルトの名無しさん
2020/10/13(火) 18:42:42.89ID:f6jDEgc3 レベルが低すぎて議論するだけ無駄なので、この話題はこれでお終いにしてはどうだろか。
2020/10/13(火) 21:22:13.35ID:2ekPMyol
お気の毒に
2020/10/13(火) 22:22:30.85ID:vraeBdjb
よくそのレベルでSTLにケチつけられるなw
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) //素直にこう書きやがれ
×: void fill(int first[], int n, int val) //素直にこう書きやがれ
○: void fill(int first[], const int n, const int val) //素直にこう書きやがれ
2020/10/13(火) 23:00:47.08ID:1+uImEGd
個数不定や個数を数えるのがハイコストでも走査できたり、実在しないアドレスや好きな値でも番兵値として指定できたりするのがlast指定のifのメリットなんじゃね?
マップから取得した項目から走査したいとか、項目ごとにサイズが異なる連続データをメモリから読み出すとか、はたまたインタラクティブにユーザが終了指示するまで繰り返すとか。
個数指定のifもあれば便利だけど、どちらかを選択しないといけないなら、last指定のifだけ存在するほうがダメージが少ない
気がする
マップから取得した項目から走査したいとか、項目ごとにサイズが異なる連続データをメモリから読み出すとか、はたまたインタラクティブにユーザが終了指示するまで繰り返すとか。
個数指定のifもあれば便利だけど、どちらかを選択しないといけないなら、last指定のifだけ存在するほうがダメージが少ない
気がする
2020/10/13(火) 23:07:21.55ID:jGpIs/AO
2020/10/13(火) 23:26:38.01ID:8ZZNtI2L
何がどう証拠として、なのかわけが分からん。詳しく説明してくれ
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);
これも上記の理由により気にならない
このわずかなタイピング量すら気になるんなら
そのソースコードには多分他の問題がある
> void fill(int *first, int *last, int val)
を見た時点でCやってる人間からしたら関数内部が
> while(first < last) *first++ = val;
こう簡潔になってるだろうと想像しやすくてスッキリしてない?
別に想像する必要は無いんだけど想像してしまうというか
あと開始がポインタで終わりもポインタってのは対称的で良いと思う
> fill(dim, dim + 100, 0);
これも上記の理由により気にならない
このわずかなタイピング量すら気になるんなら
そのソースコードには多分他の問題がある
2020/10/13(火) 23:50:29.75ID:jGpIs/AO
>>81
>あと開始がポインタで終わりもポインタってのは対称的で良いと思う
良くないよ。
その対称性は不要。
むしろ copyするときに dstとsrcの対称性がなくなることの方がずっと問題。
なぜなら間違い易いから。
それに
fill(dim, dim + 100, 0);
と書くときも dimの部分にケアレスミスが生じ易く、たとえば、
fill(dim1, dim2 + 100, 0);
と書いてもコンパイルエラーにはならないが結果は重大である。
>あと開始がポインタで終わりもポインタってのは対称的で良いと思う
良くないよ。
その対称性は不要。
むしろ copyするときに dstとsrcの対称性がなくなることの方がずっと問題。
なぜなら間違い易いから。
それに
fill(dim, dim + 100, 0);
と書くときも dimの部分にケアレスミスが生じ易く、たとえば、
fill(dim1, dim2 + 100, 0);
と書いてもコンパイルエラーにはならないが結果は重大である。
2020/10/13(火) 23:51:31.80ID:jGpIs/AO
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);
の表記を使いたいんやろね
何か分かったわ
そう間違えちゃう人は
fill(dim1, dim1 + 200, 0);
fill(dim1, dim1 + 100, 2);
fill(dim2, dim1 + 100, 0);
とも間違っちゃうから大変だね
そういう人は何より
fill(dim2, 100, 0);
の表記を使いたいんやろね
何か分かったわ
2020/10/13(火) 23:58:38.02ID:BWJh5EXt
全然別のコンテナのイテレータを混ぜて指定できてしまうのは確かに欠点なんだよね
だからRangeが必要だったんですね
だからRangeが必要だったんですね
2020/10/14(水) 00:11:56.45ID:lJFXTbVx
2020/10/14(水) 00:20:29.03ID:lJFXTbVx
>>86
それに、先頭アドレスと長さを組にするというのは、プログラミングにおける
伝統になっていてPascal文字列やWin32のバッファの指定などもそれを
踏襲している。
topとbtmを指定する方法は番兵方式ともまた違う、STL独特の方式。
番兵方式はミスが入りにくいが、btmアドレスを指定する方式はbtmに
間違った値をしていた時にとんでも無い結果を生み、バッファオーバーラン
より酷い。
btmにtopとは全く関係の無いとんでもない値を指定できてしまうから。
配列は、0〜N-1までの分かり易い値で位置を指定できることが特徴の一つなのに
STLはそれも破壊してしまっており、範囲チェックも分かりにくくなる。
高級言語なのに、アセンブラより複雑。
アセンブラでは少しでも高速化するためにtop,btm方式が使われたこともあったが、
この高級言語の時代にはそぐわない。
分かりにくい。
それに、先頭アドレスと長さを組にするというのは、プログラミングにおける
伝統になっていてPascal文字列やWin32のバッファの指定などもそれを
踏襲している。
topとbtmを指定する方法は番兵方式ともまた違う、STL独特の方式。
番兵方式はミスが入りにくいが、btmアドレスを指定する方式はbtmに
間違った値をしていた時にとんでも無い結果を生み、バッファオーバーラン
より酷い。
btmにtopとは全く関係の無いとんでもない値を指定できてしまうから。
配列は、0〜N-1までの分かり易い値で位置を指定できることが特徴の一つなのに
STLはそれも破壊してしまっており、範囲チェックも分かりにくくなる。
高級言語なのに、アセンブラより複雑。
アセンブラでは少しでも高速化するためにtop,btm方式が使われたこともあったが、
この高級言語の時代にはそぐわない。
分かりにくい。
2020/10/14(水) 00:24:28.14ID:lJFXTbVx
もっといえば、MSがグラフィックで矩形を描くときに、
左上の点と右下の点を指定する方法もセンスが無いといわれている。
これも沢山グラフィックのプログラムをしてくると
左上の点と「サイズ」を指定するのが合理的であることが分かってくるが
経験が足りて無い人には「好みの差」程度にしか認識できない。
それともとても似ている。
左上の点と右下の点を指定する方法もセンスが無いといわれている。
これも沢山グラフィックのプログラムをしてくると
左上の点と「サイズ」を指定するのが合理的であることが分かってくるが
経験が足りて無い人には「好みの差」程度にしか認識できない。
それともとても似ている。
2020/10/14(水) 00:34:35.60ID:eS9CcskG
ID:lJFXTbVxが参加するレビューは荒れる…
…!
…!
2020/10/14(水) 00:36:44.29ID:eS9CcskG
つか(sx, sy, width, height)式の矩形表現は
クリッピングとかしだすと結局内部で
(sx, sy, ex, ey)表現に
クリッピングとかしだすと結局内部で
(sx, sy, ex, ey)表現に
2020/10/14(水) 00:40:01.03ID:eS9CcskG
効率的な番兵法は常にアルゴリズムとともにあるから
↓こんなやつ
while (buf[i] < buf[i]) { std::swap(buf[i], buf[i]); i--; } // buf[0]はINT_MAX
範囲の一般的表現のうちに含めるのは頭おかしい
↓こんなやつ
while (buf[i] < buf[i]) { std::swap(buf[i], buf[i]); i--; } // buf[0]はINT_MAX
範囲の一般的表現のうちに含めるのは頭おかしい
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);って書くことになるね
fill(p + m, p + n, 0);という表現にもスムーズに拡張できる
個数の場合は
fill(p + m, n - m, 0);って書くことになるね
2020/10/14(水) 00:47:49.37ID:g6nWODwp
ここまで fill_n 無し
2020/10/14(水) 01:12:33.89ID:qrfIlgcS
>>88
なんで?中心の点とサイズなら分かるけど
ついでに言うと左上右下で矩形表現するのは重なりや画面外は見出しの判定が楽だからそっちの方が便利な場合もある
事情に応じた使い分けを考慮できないあたりが経験足りないっすねあなた
なんで?中心の点とサイズなら分かるけど
ついでに言うと左上右下で矩形表現するのは重なりや画面外は見出しの判定が楽だからそっちの方が便利な場合もある
事情に応じた使い分けを考慮できないあたりが経験足りないっすねあなた
2020/10/14(水) 02:21:44.28ID:dCmiKU7l
2020/10/14(水) 02:44:00.29ID:EuYzPNma
てか
せっかくC++使ってんのに何故
リストの始点と終点とを別々に渡したり
リストの始点と要素数とを別々に渡したり
とかやりたがるの?
せっかくC++使ってんのに何故
リストの始点と終点とを別々に渡したり
リストの始点と要素数とを別々に渡したり
とかやりたがるの?
2020/10/14(水) 06:39:07.67ID:fAfIBrSZ
2020/10/14(水) 06:42:43.22ID:fAfIBrSZ
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個
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:eS9CcskG103デフォルトの名無しさん
2020/10/14(水) 08:25:44.48ID:fAfIBrSZ104デフォルトの名無しさん
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:eS9CcskG107デフォルトの名無しさん
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をつけるとしたら定義と宣言の両方に付けねばならない
>呼び出し元には関係ないこと(関心がないこと)
左様
呼び出し元に見せる宣言文では値渡しのconstは外して良い
C++ならそれができる
Cではできない(constをつけるとしたら定義と宣言の両方に付けねばならない
110デフォルトの名無しさん
2020/10/14(水) 09:43:23.77ID:lJFXTbVx >>92
あなたは経験不足だからどちらの方が便利かが分かって無い。
どちらの方式も互いに単純変換できるが、現実のアプリにおいては個数の方が
便利だと言っているのだが、あなたにはそれが分からない。
そういう人達がC++委員会に多くなってきているからC++の仕様が変になって
きていると言われているのだよ。
あなたは経験不足だからどちらの方が便利かが分かって無い。
どちらの方式も互いに単純変換できるが、現実のアプリにおいては個数の方が
便利だと言っているのだが、あなたにはそれが分からない。
そういう人達が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個
と書ける。
>fill(dim, 2, 98, 0); //引数4個
これは違う。
インタプリタ言語ではこのようになってしまうが、伝統的にはCでは、
fill(dim +2, 98, 0); //引数3個
と書ける。
112デフォルトの名無しさん
2020/10/14(水) 09:50:15.45ID:fAfIBrSZ113デフォルトの名無しさん
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
アウチ、
正: 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:lJFXTbVx115デフォルトの名無しさん
2020/10/14(水) 10:31:42.62ID:Z4l68xx0 ライブラリの良し悪しは俺様の流儀に従っているかどうか、まで読んだ
116デフォルトの名無しさん
2020/10/14(水) 10:52:50.19ID:fAfIBrSZ117デフォルトの名無しさん
2020/10/14(水) 11:20:31.96ID:fAfIBrSZ118デフォルトの名無しさん
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の日本語版にその辺の話は載ってるから読んでこい
誰がそんなこと書いてんだ
てか現代的とか洗練とかアホかと
なぜそうなっているか理解出来てないのはお前、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 要素を指定する書き方が現実的な
アプリではコーディング的に非効率な問題のある書き方だと昨日から主張し続けている。
あなたが何も書いてなかったから、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スタイルではこのような問題が起きないので安全。
なぜかといえば、現実の大規模アプリでは配列の先頭の名前は、もっとずっと長く、
たとえば、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の新機能を有り難く頂戴することで
色んなストレスから解放される
只でさえ長い識別子に名前空間だのスコープだのテンプレート引数がついて読む気なくさせるようなのはよく見かけるね
そういうのは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);
「個数」で誤魔化されてんな
個数でもこうなるんじゃね
fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
127デフォルトの名無しさん
2020/10/14(水) 12:52:15.34ID:lJFXTbVx >>126
それは経験的にならないことが多い。
なぜなら、個数は配列自体が覚えているだけでなく、何らかの変数に入っている事がとても多いから。
典型的には、個数はマクロ変数やconst int変数などに入っているか
または、ファイルから読み込んだ場合には読み込んだときの個数が
グローバル変数などに入っている。
それは経験的にならないことが多い。
なぜなら、個数は配列自体が覚えているだけでなく、何らかの変数に入っている事がとても多いから。
典型的には、個数はマクロ変数やconst int変数などに入っているか
または、ファイルから読み込んだ場合には読み込んだときの個数が
グローバル変数などに入っている。
128デフォルトの名無しさん
2020/10/14(水) 12:55:51.73ID:lJFXTbVx >>127
それから、
>fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
の場合だと、たとえ第二引数の部分に間違いがあってもバグの程度がまだまし。
なぜなら、xxx.size()は個数なので間違いがあってもデバッガで見てもまだ分かり易いバグとなるし、
バッファオーバーランしても個数なのでどこかで停止してくれる。
ところが、btm要素方式の場合、書き間違えてbtm要素が全く別の配列の中を指してしまっている場合には
バッファオーバーランが停止することなくほぼ無限に続くことになる。
それから、
>fill(aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx, aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx.size(), value);
の場合だと、たとえ第二引数の部分に間違いがあってもバグの程度がまだまし。
なぜなら、xxx.size()は個数なので間違いがあってもデバッガで見てもまだ分かり易いバグとなるし、
バッファオーバーランしても個数なのでどこかで停止してくれる。
ところが、btm要素方式の場合、書き間違えてbtm要素が全く別の配列の中を指してしまっている場合には
バッファオーバーランが停止することなくほぼ無限に続くことになる。
129デフォルトの名無しさん
2020/10/14(水) 13:02:09.57ID:ssGc8zMA つまりずっと配列前提の話をしてたワケ?
そりゃ旧来的な書き方の方が合理的だ
配列とその個数のデータ構造なら明らかにdefineされてる個数を与えた方がラクになるな
そりゃ旧来的な書き方の方が合理的だ
配列とその個数のデータ構造なら明らかに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]);
ととても長くなる。
さらに、その場合、全要素を対象にしているから専用の関数などや
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はリンクリストではなく、(動的)配列を推薦しているから。
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();
にしても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流は最悪で、非常に危険な書き方。
その様な場合でも、
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:lJFXTbVx140デフォルトの名無しさん
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になって若干質が落ちたんじゃないだろか。
5chになって若干質が落ちたんじゃないだろか。
143デフォルトの名無しさん
2020/10/14(水) 13:41:57.79ID:HhRPmWpc 初心者くんはこの世の全ての範囲のendが「先頭からの個数」で決まる場合しかないと思い込んでるみたいだけど
例えばfindの検索結果とか、GUIの現在カーソル位置とかで決まる場合もあって、その場合だと本質的でない「個数」という数字を求めるコードが結局長くなってしまうことに注意しよう
簡単な練習問題だよ
例えば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を使わずに自分の好きな道具を使えばいいんでないの?
今でも(そして恐らくこれから先も)変わらず使えるのだから。
自分の好みに合わないものを他人が嬉しそうに使ってるのが気に入らないの?
マクロ変数(定数?)とかグローバル変数とか生配列とか、旧態依然としたCの作法が好きなら無理にC++やSTLを使わずに自分の好きな道具を使えばいいんでないの?
今でも(そして恐らくこれから先も)変わらず使えるのだから。
自分の好みに合わないものを他人が嬉しそうに使ってるのが気に入らないの?
146デフォルトの名無しさん
2020/10/14(水) 13:54:48.00ID:OK1/udlE 配列が個数を持ってるなら
fill(配列, 値);
で良くね?
fill(配列, 値);
で良くね?
147デフォルトの名無しさん
2020/10/14(水) 14:08:57.43ID:lJFXTbVx >>141
いや、数学的ならむしろSTLより理解できる。
いや、数学的ならむしろ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
にーしちゃ恥ずかしいミスしてたね、さっき
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って言ってるけど…みんなどうしてるの?
実験的にサポートみたいな事行ってるけど、使ってもOKなの?
experimental supportって言ってるけど…みんなどうしてるの?
152デフォルトの名無しさん
2020/10/14(水) 15:07:19.79ID:ssGc8zMA153デフォルトの名無しさん
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:fAfIBrSZ156デフォルトの名無しさん
2020/10/14(水) 15:37:35.37ID:+cbHRaf/157デフォルトの名無しさん
2020/10/14(水) 15:41:12.49ID:lJFXTbVx >>155
今回は、引数の個数は議題にはして無い。
今回は、引数の個数は議題にはして無い。
158デフォルトの名無しさん
2020/10/14(水) 15:45:10.45ID:lJFXTbVx >>157
つまり「引数の個数が多くなるからSTLが問題」などとは全く言って無いということ。
別に個数方式にしても引数が少なくなると言うことではない。
引数の個数ではなく、コーディングする時の引数の記述量を減らせることが多い。
+演算子も使わなくて済むのでケアレスミスも減らせる。
またtopとbtmで重複する事を書かなくて済む。
そしてそれは安全性に繋がる。
なぜなら同じであるべきところを誤って異なるように書く可能性がなくなるから。
つまり「引数の個数が多くなるから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みたいなプリティ発言するほど墓穴がでかくなるだけだぜ
ミスはミスで潔く認めたほうが被害拡大を防げると思うよ
いやいや、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:lJFXTbVx162デフォルトの名無しさん
2020/10/14(水) 16:07:49.07ID:lJFXTbVx >>160
>しかもだよ、これインタプリタ方式とコンパイラ方式でどんな違いが出るの?
インタプリタ方式だと必ずそうなると言う意味ではなく、arr + 2
が「3番目の要素のアドレス」の意味で使えるのは、大体コンパイラ系の言語の仕様。
その意味で、
xxx(arr + 2,...) ではなく、xxx(arr, 2,...) のように書くのはインタプリタ言語
に多い書き方だから。
>しかもだよ、これインタプリタ方式とコンパイラ方式でどんな違いが出るの?
インタプリタ方式だと必ずそうなると言う意味ではなく、arr + 2
が「3番目の要素のアドレス」の意味で使えるのは、大体コンパイラ系の言語の仕様。
その意味で、
xxx(arr + 2,...) ではなく、xxx(arr, 2,...) のように書くのはインタプリタ言語
に多い書き方だから。
163デフォルトの名無しさん
2020/10/14(水) 16:49:10.93ID:fAfIBrSZ164デフォルトの名無しさん
2020/10/14(水) 16:53:34.15ID:lJFXTbVx165デフォルトの名無しさん
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の利点とか理解できるわけないし
コピペや置換する発想すらない人が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:qpMvVLdo176デフォルトの名無しさん
2020/10/14(水) 19:16:14.41ID:fAfIBrSZ >>173
> fill(dim, 2, 98, 0); //引数4個
> 98は個数だと認識して書いた。
間違いにくいとか、間違えやすいとか、
それはおまえさんの個人的なことじゃねえかよ
配列と個数で渡すのが、始点と終点で渡すことよりも
優位だというのは、おまえさん個人が間違いにくいってことか?
言うまでもないが、俺は間違えずにコード示してて
間違えたのはおまえさんだけだぞ
それを一般論として優位ということにはできんだろ
> fill(dim, 2, 98, 0); //引数4個
> 98は個数だと認識して書いた。
間違いにくいとか、間違えやすいとか、
それはおまえさんの個人的なことじゃねえかよ
配列と個数で渡すのが、始点と終点で渡すことよりも
優位だというのは、おまえさん個人が間違いにくいってことか?
言うまでもないが、俺は間違えずにコード示してて
間違えたのはおまえさんだけだぞ
それを一般論として優位ということにはできんだろ
177デフォルトの名無しさん
2020/10/14(水) 19:16:18.40ID:qpMvVLdo この手の配列の話でrangeが出てこないのはなんで?
最近の標準には疎いけど、この手の問題のほとんどがboost::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>*だけで大丈夫なのかメモリアドレスまでは
僕は把握してません…参照の値渡しだけで行くだろうけど…なぜ大丈夫なのか説明できません…。
誰か…。
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:fAfIBrSZ180デフォルトの名無しさん
2020/10/14(水) 20:10:37.92ID:qrfIlgcS >>178
日本語でどうぞ
日本語でどうぞ
181デフォルトの名無しさん
2020/10/14(水) 20:23:03.09ID:j1TiW1+l 伝統的なバッドノウハウ
「ニワカなやつほど語りたがる」
ID:lJFXTbVxのことね
「ニワカなやつほど語りたがる」
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++は知らん
ポインタこそが肝心
Cで一番大事なのはポインタ
C++は知らん
185デフォルトの名無しさん
2020/10/14(水) 20:55:45.47ID:z3Ys6y55186デフォルトの名無しさん
2020/10/14(水) 21:04:32.42ID:EoVZjJO9187デフォルトの名無しさん
2020/10/14(水) 21:27:18.64ID:eS9CcskG188デフォルトの名無しさん
2020/10/14(水) 21:35:17.95ID:4qg33D8d >>178
ポインタの値自体はコピーされるけどその指してる先は同じだから
ポインタの値自体はコピーされるけどその指してる先は同じだから
189デフォルトの名無しさん
2020/10/14(水) 23:24:35.72ID:ssGc8zMA190デフォルトの名無しさん
2020/10/15(木) 00:28:14.53ID:ecxFi3He begin, lengthでなくてbegin、endになっているのは
具体的に言えばNULL終端の文字列みたいなものにでもゼロコストで対応できるからでしょ
わかりやすさ〜とかそういう感覚的なもの以前の話として、
length案は共通インタフェースを定める目的にあってない
既に上に何人かが同じ内容を書いてるけどなぜわからんかな
具体的に言えばNULL終端の文字列みたいなものにでもゼロコストで対応できるからでしょ
わかりやすさ〜とかそういう感覚的なもの以前の話として、
length案は共通インタフェースを定める目的にあってない
既に上に何人かが同じ内容を書いてるけどなぜわからんかな
191デフォルトの名無しさん
2020/10/15(木) 01:29:04.51ID:z3OAjGAN >>ID:+cbHRaf/
>>120には言い返して来ないんだなww
>>120には言い返して来ないんだなww
192デフォルトの名無しさん
2020/10/15(木) 06:05:35.87ID:qGtCPYoD >>187
で、おまえさんの周りには値引数にconstつけてるバカはいたのか、いなかったのか、どっちだ?
で、おまえさんの周りには値引数に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++ の立場からするとありえない選択でもあるし、
要するに「仕方ない」としか言えんわ。
そうなるようにデザインされたのは自明だな。
ポインタに合わせて統一したのが全面的に良いとは言えないのかもしれないが、
イテレータの枠組みに配列やポインタを含まないデザインにするというのは
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);
}
{
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
自分用のテンプレに入れときゃ解決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つけてるバカ
お題スレで答えてるやつにおったわ
みんなに空気として扱われてたけど
↑この時点で手遅れレベルで腐ってるのは誰も指摘してやらないんだなw
>>192
> 値引数にconstつけてるバカ
お題スレで答えてるやつにおったわ
みんなに空気として扱われてたけど
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
で統一されているわけではない
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx
っていう名前で、しかもそれとは別に
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx
みたいな、また別の文字列配列が存在する世界観なんでしょ
しかもそれぞれにどういうワケか
aXxxxXxxxXxxxXxxxXxxxXxxxXxxxXxxx_NUM
aXxxxXxxxXxxxXxxxXxxxXxxxYyyyXxxx_NUM
みたいな定数がdefineされている
それらの配列は
aXxxxXxxxXxxxXxxxXxxxXxxx_NUM
で統一されているわけではない
208デフォルトの名無しさん
2020/10/15(木) 21:33:12.16ID:+lHmSCSK 「変数名を長くすればSTLの書き方ではとても長くなるので、STLの書き方はダメです」
と言うためだけにわざわざ作られた長い名前だから、名前が長い
ダメと言うためにわざわざ作られたダメな例なんだから、そのリクツの中ではSTLがダメなように見えるのは、彼の中では当然だよ
だってダメになるように作られたダメな例だもん
と言うためだけにわざわざ作られた長い名前だから、名前が長い
ダメと言うためにわざわざ作られたダメな例なんだから、そのリクツの中ではSTLがダメなように見えるのは、彼の中では当然だよ
だってダメになるように作られたダメな例だもん
209デフォルトの名無しさん
2020/10/15(木) 22:14:19.51ID:LO3W6bS9 頭おかしいのがまた湧いてるな
210デフォルトの名無しさん
2020/10/16(金) 05:15:42.21ID:3AzgsKTP 値引数にconstつけてても別にいいと思うけどね
コピーで渡してなおかつconstであることを明示したいなら
むしろ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付けろ付けるなと騒いでも他人の仕事に口出すなってだけ
おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
仮引数は変更しないって前提で思考停止してるのはお前だよ
void fill(int* first, int n, int val)
{
while (n--) *first++ = val;
}
関数の定義を別の翻訳単位に分離したら
それこそ定義かくやつだけの問題で
const付けろ付けるなと騒いでも他人の仕事に口出すなってだけ
おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
213デフォルトの名無しさん
2020/10/16(金) 06:57:04.56ID:3AzgsKTP214デフォルトの名無しさん
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:hiR4Fq2K219デフォルトの名無しさん
2020/10/16(金) 12:45:32.25ID:5553rdQz220デフォルトの名無しさん
2020/10/16(金) 13:05:10.30ID:E37X09wd 今ゲーム開発に向いてるライブラリってなんですか?
これまでdxlibとsiv3dは使ったことありますが今の主流が知りたいです
これまで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
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:5553rdQz228デフォルトの名無しさん
2020/10/16(金) 17:53:05.24ID:y0b2R3Tf229デフォルトの名無しさん
2020/10/16(金) 17:53:07.57ID:gzagFIoh230デフォルトの名無しさん
2020/10/16(金) 17:57:48.24ID:8wgq9mv1 >>220
C#に浮気してUnityという手もある。
といっても扱ったの6年前(大学生の頃)だから現ゲーム業界事情は詳しくないが。
てか、この手の質問がでてきたということは、現状の開発に限界を感じているということでは?
C#に浮気してUnityという手もある。
といっても扱ったの6年前(大学生の頃)だから現ゲーム業界事情は詳しくないが。
てか、この手の質問がでてきたということは、現状の開発に限界を感じているということでは?
231デフォルトの名無しさん
2020/10/16(金) 17:58:03.44ID:y0b2R3Tf 知ったかこいてマウント取るしか出来ないアホばっかだな
EASTLがレンダリングとか担ってくれるのかよ
EASTLがレンダリングとか担ってくれるのかよ
232デフォルトの名無しさん
2020/10/16(金) 18:00:30.56ID:gzagFIoh 冗談か通じない奴だな…
233デフォルトの名無しさん
2020/10/16(金) 18:04:19.22ID:y0b2R3Tf234デフォルトの名無しさん
2020/10/16(金) 18:14:08.55ID:8wgq9mv1 DirectXって...
ゲーム作る以前に、車輪の再発明して終わりそう。
ゲーム作る以前に、車輪の再発明して終わりそう。
235デフォルトの名無しさん
2020/10/16(金) 18:14:09.24ID:+fSNMqF3236デフォルトの名無しさん
2020/10/16(金) 18:21:09.26ID:y0b2R3Tf ライブラリの主流は何か=dxlib等に代わるもの、だと思ったんだが
まぁそもそもC++で一から作りたいのか勉強がしたいのか、単に趣味でゲーム作りたいのかわからんから
何とも言えないけど
まぁそもそもC++で一から作りたいのか勉強がしたいのか、単に趣味でゲーム作りたいのかわからんから
何とも言えないけど
237デフォルトの名無しさん
2020/10/16(金) 19:19:09.58ID:a9PKFHNt これ以上話も続かなそうだからボカすけど
俺はそれこそがすっごいアホっぽいと思う
C++で言うとイテレータのインクリメントをi++で書いちゃってるのより
必要も無いのにnewしてdeleteしてるのより
それよりももっと恥ずかしいと思う
俺はそれこそがすっごいアホっぽいと思う
C++で言うとイテレータのインクリメントをi++で書いちゃってるのより
必要も無いのにnewしてdeleteしてるのより
それよりももっと恥ずかしいと思う
238デフォルトの名無しさん
2020/10/16(金) 20:16:18.37ID:VgjMdtJh C++/WinRTやってる人いる?
ここの人達はあまりWindows好きじゃないかな
ここの人達はあまり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:P3PLPttw242はちみつ餃子 ◆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 とかで流れてきた話題の中で面白そうなのをちょっとブックマークしていた
という程度なんで具体的に利用してみたことはないんだが、
話題になる程度にはまともな完成度なんだと思う。
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+C244デフォルトの名無しさん
2020/10/17(土) 06:31:19.72ID:U3N3/O+C245デフォルトの名無しさん
2020/10/17(土) 06:31:47.44ID:U3N3/O+C 訂正 悔しそうだなw
246デフォルトの名無しさん
2020/10/17(土) 06:40:29.09ID:P3PLPttw > おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
このあと逆に論破されて小学生みたいな煽りしてたなw
このあと逆に論破されて小学生みたいな煽りしてたなw
247デフォルトの名無しさん
2020/10/17(土) 06:41:48.98ID:P3PLPttw 悔しかったら反論してみろ
248デフォルトの名無しさん
2020/10/17(土) 06:51:39.36ID:foE/glNf249デフォルトの名無しさん
2020/10/17(土) 06:53:17.86ID:P3PLPttw > おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
https://emotion-ai.userlocal.jp/documents/65ce7e112b0f132f4f46ce2e611994dc/result?nr=1
> 怒りの感情が強い文章です
論破されて怒っちゃったかな?初心者くん
https://emotion-ai.userlocal.jp/documents/65ce7e112b0f132f4f46ce2e611994dc/result?nr=1
> 怒りの感情が強い文章です
論破されて怒っちゃったかな?初心者くん
250デフォルトの名無しさん
2020/10/17(土) 07:23:58.19ID:U3N3/O+C251デフォルトの名無しさん
2020/10/17(土) 07:25:38.64ID:U3N3/O+C252デフォルトの名無しさん
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+C256デフォルトの名無しさん
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/glNf259デフォルトの名無しさん
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 奇貨居くべし
264デフォルトの名無しさん
2020/10/17(土) 16:52:45.52ID:U3N3/O+C265デフォルトの名無しさん
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
> 怒りの感情が強い文章です
論破されて怒っちゃったかな?初心者くん
ID:U3N3/O+C
> おまえらと違ってこちとらおまえらごとき論破するのに侮辱語はいらねえ
https://emotion-ai.userlocal.jp/documents/65ce7e112b0f132f4f46ce2e611994dc/result?nr=1
> 怒りの感情が強い文章です
論破されて怒っちゃったかな?初心者くん
267デフォルトの名無しさん
2020/10/17(土) 19:10:46.71ID:RsKDaYmq268デフォルトの名無しさん
2020/10/17(土) 19:18:55.82ID:U3N3/O+C >>266
アフィサイトのNGワード程度の「解析」に依存しちゃってる自分恥ずかしくないの?
アフィサイトの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++を完全に理解するにはどうすればいいですか?
http://pbs.twimg.com/media/EUH_eMWUwAAgsV4.jpg
http://pbs.twimg.com/media/EUH_eMWUwAAgsV4.jpg
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
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
C++完全に理解した!
って呟けばOK
277デフォルトの名無しさん
2020/10/18(日) 06:35:44.42ID:e/dVAB4j コンパイラを実装してみれば嫌でもワカル
278デフォルトの名無しさん
2020/10/18(日) 07:44:07.32ID:+ySY8JLF そんな極端なキチガイみたいなこと言うな!
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい
・・とかつっこみたいかもしれないが、意外とそれ真理から困る >>277
C++ が現状あちこち解り辛い仕様になってる色々な理由のほとんどが
コンパイラの実装の都合であることがおおい
279デフォルトの名無しさん
2020/10/18(日) 09:07:32.28ID:CqLBM1Q2280デフォルトの名無しさん
2020/10/18(日) 10:13:18.70ID:e/dVAB4j 完全に理解と型安全には正直ゴールがあるかどうか疑わしい
281デフォルトの名無しさん
2020/10/18(日) 11:52:18.14ID:H1xH1BRx282デフォルトの名無しさん
2020/10/18(日) 11:54:54.20ID:CqLBM1Q2 >>281
どこに有害要素があるのかわからん。
どこに有害要素があるのかわからん。
283デフォルトの名無しさん
2020/10/18(日) 14:45:22.41ID:5IG+e1ti284279
2020/10/18(日) 15:23:40.89ID:Erm+FeMo > そうしてソフト構築能力皆無な
> C++博士ができあがったのだった
まぁ、C++を完全に理解したところでっていうね。
そんな暇あれば別言語を学んだり、フレームワークの使い方を学んだりDDDやTDDとか学べって話だわな。
> 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発信を頑張らないやつはアホだ。
https://www.youtube.com/watch?v=TPMNmuWQm_o
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc
https://www.youtube.com/watch?v=TPMNmuWQm_o
【事例付き】YouTuberは最強の副業である件について。
https://www.youtube.com/watch?v=wB8hNuNVoIw&t=267s
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
https://www.youtube.com/watch?v=YEw-a8qlADM
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
https://www.youtube.com/watch?v=jYdWfjjzD7Y
YouTubeを伸ばすコツ【5つの本質論/初心者向けのセミナーです】
https://www.youtube.com/watch?v=fn-LxP9Unmc
【悲報】YouTuberはマジで難しいので、ほぼ挫折すると思う【無理ゲー】
https://www.youtube.com/watch?v=iKREw5p0Yqc
287デフォルトの名無しさん
2020/10/18(日) 21:05:46.61ID:e/dVAB4j ソフトウェアの良い設計というのは
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス
結果的に破綻も漏れも無く抽象化できていればおk
あくまで結果
成功の秘訣は8割方センス
288デフォルトの名無しさん
2020/10/18(日) 21:10:04.50ID:N2+RrN1t289デフォルトの名無しさん
2020/10/18(日) 21:13:31.38ID:OvLc2vD2290デフォルトの名無しさん
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:OvLc2vD2293デフォルトの名無しさん
2020/10/18(日) 21:42:13.49ID:e/dVAB4j OOPは物事を整理する仕組みは提供してくれるが
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略
んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、
どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
実際>>287にゼロベースで的確に答えることは難しい
TDDは設計を検証する仕組みは提供してくれるが以下略
んまーテストケースをいっぱい書くというのは
物事簡潔に済ませる習慣が身につく良い経験かも試練、
294デフォルトの名無しさん
2020/10/18(日) 22:21:54.75ID:OvLc2vD2 >>293
> OOPは物事を整理する仕組みは提供してくれるが
> どう整理をつけるかはやっぱ設計者のセンスに委ねられたままやんけ
その通り。だからこそ、そのセンスを磨かせるためにTDDもセットで紹介してみた。
まず、自分の設計が正しいか妥当性確認する手段も無いと間違ったオブジェクト指向が身に付く恐れがあるからね。
結局のところ、個々のセンスを磨かせないと駄目だが...センスを磨かせる環境を整えるのはリーダーの役割だと思う。
何もない状態でセンスで何とかせよ、よりは改善が期待できるよ。
> 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++をやらせればいい
ってのは実は簡単で、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
天才とは言っていない
ttp://equallove-2017.blog.jp/archives/24499215.html
ttp://equallove-2017.blog.jp/archives/24508935.html
ttps://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白
天才とは言っていない
ttp://equallove-2017.blog.jp/archives/24499215.html
ttp://equallove-2017.blog.jp/archives/24508935.html
ttps://star.programming-study.com/
2020年10月17日放送分
TK-80の産みの親?
元マイクロソフトでwindows95の開発に参加?
良く判らんけど
Windows95の生みの親に直撃!開発秘話やプログラミングの裏話、子どもたちに伝えたい思いを告白
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で囲っても、やっぱ落ちます。
これって例外で処理することはできないんでしょうか?
それともやばいバグ過ぎてつかまえられないだけなのでしょうか?
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;
}
これじゃダメなんでしょうか?
すみませんC++よくわかってなくて…
try{
delete p;
}catch(...){
std::cerr << "error!" << std::endl;
}
309デフォルトの名無しさん
2020/10/20(火) 03:14:10.05ID:U9bI1hKI310デフォルトの名無しさん
2020/10/20(火) 03:23:38.12ID:NaQDrxzK 丼なスパゲティーコードをメンテしてるか気になる
311デフォルトの名無しさん
2020/10/20(火) 03:27:44.66ID:C47XLKZf312デフォルトの名無しさん
2020/10/20(火) 03:36:12.53ID:NaQDrxzK そういうときに役に立つのがprintfデバッグだろ
どの工程で起こったのかある程度目星がつく
どの工程で起こったのかある程度目星がつく
313デフォルトの名無しさん
2020/10/20(火) 04:45:58.59ID:C47XLKZf314デフォルトの名無しさん
2020/10/20(火) 07:34:58.90ID:OBwoowsU デストラクタとdelete演算子はデフォルトでnoexceptなんで、
例外発生時点で異常終了してしまい、try〜catchじゃ捕まえられないそうだ。
https://cpprefjp.github.io/lang/cpp11/noexcept.html
例外発生時点で異常終了してしまい、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:OBwoowsU317デフォルトの名無しさん
2020/10/20(火) 11:34:12.27ID:pHiz9StD atexit()
exit()
で捕捉出来ないかな
exit()
で捕捉出来ないかな
318デフォルトの名無しさん
2020/10/20(火) 11:51:22.81ID:uu0FmVn9 デバッガに頼るのは甘え
プロはprintfだけで正しくデバッグする!
プロはprintfだけで正しくデバッグする!
319デフォルトの名無しさん
2020/10/20(火) 11:56:25.10ID:pHiz9StD プロは logger 使うし
百歩譲っても使うのは fprintf の方
百歩譲っても使うのは 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万キロ離れたプリンタなこともある
制度化体系化された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
http://wg21.link/n4868
330デフォルトの名無しさん
2020/10/20(火) 17:48:19.32ID:wzOsKsv0 >>329
情報ありがとう
情報ありがとう
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デバッグなんてあり得んけどな。
>>334
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね
でも最初のうち、プログラムが小さいうちは、それが一番手っ取り早いですね
336デフォルトの名無しさん
2020/10/21(水) 11:52:32.13ID:xBgAWF1Y printf デバッグは完成後に printf の行を消すと動かなくなったりするω
337デフォルトの名無しさん
2020/10/21(水) 12:15:19.02ID:EPxGxCCv 関数化やクラス化でプログラムを小さくするわけで、あんまり関係ないな
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下
assertを使うときもそうだが、デバッグ用のコードに副作用を入れちまうのはヘボ以下
338デフォルトの名無しさん
2020/10/21(水) 12:41:52.63ID:BgzupaSs デバッグOffして弊害残すヤツは動作の仕組み把握出来てないだけだろ
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才
>>336、まず貴様のコーディングセンスを磨いてから出直してこい青二才
339デフォルトの名無しさん
2020/10/21(水) 23:09:27.50ID:oE8Yb73v 非同期で動くブツ同士の通信はprintfデバッグ大活躍なのでは…
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル
printf消去忘れについては条件コンパイルを使えば良いし、
Ad-hocな追加ならいかに大量にやってもソースコード管理システムで安全に消すこともできるわけやし、
誰がいつ何を呼んで何を渡したのかと呼ばれたほうが本当に受け取ったのかがすぐワカル
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 しろってか
buffer flush しないと判らんし
flush すると勝手に改行する環境とかあるし
そこまで便利ってほどでもなくね
nonbuffered しろってか
342デフォルトの名無しさん
2020/10/22(木) 10:47:06.06ID:ZfML18uZ ここまでの話をまとめると
やはりprintfデバッグが最強、ということですね
やはり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++ が二回評価されて結果は変わってしまう。
#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:PrgepFj3345デフォルトの名無しさん
2020/10/22(木) 12:30:03.14ID:Pdn6awLx デバッグ関係ねーじゃん
346デフォルトの名無しさん
2020/10/22(木) 12:31:48.09ID:QhFI+vyp347デフォルトの名無しさん
2020/10/22(木) 12:34:55.42ID:PrgepFj3 >>346
わかってるならインラインで書けよ池沼
わかってるならインラインで書けよ池沼
348デフォルトの名無しさん
2020/10/22(木) 12:38:34.09ID:QhFI+vyp349デフォルトの名無しさん
2020/10/22(木) 12:39:39.22ID:3l9/RVrp350デフォルトの名無しさん
2020/10/22(木) 12:41:58.22ID:QhFI+vyp351デフォルトの名無しさん
2020/10/22(木) 12:45:00.97ID:QhFI+vyp352デフォルトの名無しさん
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:N0tQIHiY358デフォルトの名無しさん
2020/10/22(木) 19:00:31.57ID:wCIm4hGG359デフォルトの名無しさん
2020/10/22(木) 19:08:50.28ID:lftkiv5C printfごときで騒いでる方が精神いかれてんだろ。。
360デフォルトの名無しさん
2020/10/22(木) 19:11:08.49ID:dQkQeqlj 今はJTAGがあるので、そんなにお金がかからない。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。
それでも、プロセッサごとにデバッグ環境を用意できるわけないだろ!!というのが日本企業の現状なら、中韓に任せて野菜でも育てる道が効率よい。
中韓は用意できるし、売り切ることが出来る。
printfデバッグなんてインパール作戦と同じ。
物量が違いすぎる。
361デフォルトの名無しさん
2020/10/22(木) 19:15:22.48ID:dQkQeqlj お前たちは農民に戻れ。
ハイ解散。
ハイ解散。
>>360
私のマザーボードの JTAG/IEEE1149.1 はどれですか?
私のマザーボードの JTAG/IEEE1149.1 はどれですか?
363デフォルトの名無しさん
2020/10/22(木) 21:09:21.98ID:dQkQeqlj364デフォルトの名無しさん
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
#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
else節もコピーしろザコw
367デフォルトの名無しさん
2020/10/23(金) 12:34:55.69ID:wQpWPNJn 教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。
生徒「そういう場合は、inline使えよ馬鹿教師」
という馬鹿生徒の集まり。
学級崩壊。
368デフォルトの名無しさん
2020/10/23(金) 12:38:30.14ID:DuAJkWLf 教師が「こういうやり方はしてはなりません」と言っただけなのに、
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」
生徒A「そういう場合は、inline使えよ馬鹿教師」
生徒B「こういうやり方ならいいんだよ、死ねザコw」
教師「」
369デフォルトの名無しさん
2020/10/23(金) 12:48:55.12ID:wQpWPNJn370デフォルトの名無しさん
2020/10/23(金) 13:33:06.99ID:g1Zoxl1Q ここは教室じゃねぇんだよバカが
とっととキエロ
とっととキエロ
371デフォルトの名無しさん
2020/10/23(金) 13:52:00.54ID:DuAJkWLf 俺が通った学校の教師か
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな
化学のおじいちゃん先生だったな
当時C++はまだ世に出てなかったから
マクロの使い方は知らなかっただろうな
372デフォルトの名無しさん
2020/10/23(金) 15:17:01.62ID:vvEFmscd へー、Cにはマクロないんだ?
>>372
#define マクロはありますが、lisp 様仕様マクロはありません
#define マクロはありますが、lisp 様仕様マクロはありません
374デフォルトの名無しさん
2020/10/23(金) 16:52:36.06ID:GtGn5ZF1 c++の文句をいって
cの話を延々はじめる
そしてどっちも言い尽くされた話
printfデバッグやってるじじいの特徴
cの話を延々はじめる
そしてどっちも言い尽くされた話
printfデバッグやってるじじいの特徴
375デフォルトの名無しさん
2020/10/23(金) 16:57:39.47ID:DuAJkWLf376デフォルトの名無しさん
2020/10/23(金) 17:12:38.69ID:2f10zgGH DxLib は printfDx で printf 推奨ω
377デフォルトの名無しさん
2020/10/23(金) 17:55:43.35ID:vvEFmscd378デフォルトの名無しさん
2020/10/23(金) 20:21:43.75ID:DuAJkWLf >>377
同一人物なんだが君は何に見えたのかな??
同一人物なんだが君は何に見えたのかな??
379デフォルトの名無しさん
2020/10/23(金) 20:22:37.35ID:DuAJkWLf で、君はK&R Cは使えるのか?
>>379
K&R1 か K&R2 かを指定してください
K&R1 か K&R2 かを指定してください
381デフォルトの名無しさん
2020/10/23(金) 20:32:42.02ID:DuAJkWLf もちろん1よ
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは
382デフォルトの名無しさん
2020/10/24(土) 00:28:14.62ID:5I5noegP >>341
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い
383はちみつ餃子 ◆8X2XSCHEME
2020/10/24(土) 02:46:57.76ID:yf0wmlMH 非同期な処理を観察するってのは非同期な処理が「失敗しているかもしれない」のを見つけ出さなきゃいけないってことだよね。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。
信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。
複数のスレッドが競合したりする場合もあるってことだよね。
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ランタイム安全ではないとかいう話もあった
だから複数スレッドで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などにおいても有った概念でもあるし、それは当然であるが。
一方、単一スレッドプログラムの場合、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デバッグというべき(ドヤ
いや、厳密にはstd::coutデバッグというべき(ドヤ
395デフォルトの名無しさん
2020/10/24(土) 15:35:14.21ID:LXBNuCv6 printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイル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
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の
操作時にロックを取得しようとするため
という感じかな?
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
402デフォルトの名無しさん
2020/10/24(土) 18:10:47.63ID:lGAQOfIr なら自前のprintf作ればいいだろ
標準に頼りきるバカが
標準に頼りきるバカが
404デフォルトの名無しさん
2020/10/24(土) 18:32:15.74ID:lGAQOfIr 己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
405デフォルトの名無しさん
2020/10/24(土) 18:55:26.18ID:W2/6It6m406デフォルトの名無しさん
2020/10/24(土) 19:34:38.35ID:kvu4j0jg >>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
407デフォルトの名無しさん
2020/10/24(土) 19:40:13.77ID:LXBNuCv6 割り込みルーチンの中からprintfを読んだら危険なのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
408デフォルトの名無しさん
2020/10/24(土) 19:44:20.88ID:LXBNuCv6 割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
409384
2020/10/25(日) 08:15:28.48ID:B8Qi0Gue 聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
410デフォルトの名無しさん
2020/10/25(日) 08:36:53.97ID:fEg6VUML stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
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がそうとは見えないけどね
他人が書いたコードを有料で引き継ぐ人
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から作り直すかの二択だろ
0から作り直すかの二択だろ
424デフォルトの名無しさん
2020/10/29(木) 05:18:26.87ID:A02IsQiB425デフォルトの名無しさん
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に代入することってできますか?
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
428デフォルトの名無しさん
2020/10/30(金) 00:17:54.24ID:V+g0QAOl まずPython処理系を書きます
429デフォルトの名無しさん
2020/10/30(金) 00:26:39.96ID:XbvTe/rK 内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない
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のほうが読みやすくて速いと思う
きっとforのほうが読みやすくて速いと思う
432デフォルトの名無しさん
2020/10/30(金) 10:04:53.11ID:73xlUHi2 あとはvalarrayとかな
433デフォルトの名無しさん
2020/10/30(金) 10:06:43.70ID:uffCAw9U 表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
434デフォルトの名無しさん
2020/10/30(金) 10:22:13.62ID:73xlUHi2 インタープリターよりは速いよ
435デフォルトの名無しさん
2020/10/30(金) 11:34:39.85ID:7MkyV1Cp436デフォルトの名無しさん
2020/10/30(金) 11:37:53.83ID:7MkyV1Cp437デフォルトの名無しさん
2020/10/30(金) 11:41:09.18ID:7MkyV1Cp >>433
ループ分解されて要素分コード増えてる可能性もあるな
ループ分解されて要素分コード増えてる可能性もあるな
438デフォルトの名無しさん
2020/10/30(金) 13:24:53.40ID:Z0VCec0D forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵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
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
441デフォルトの名無しさん
2020/11/01(日) 15:26:15.37ID:Ncbqgsya442デフォルトの名無しさん
2020/11/01(日) 15:26:18.66ID:BdB3gM+x unsignedですか?
443デフォルトの名無しさん
2020/11/01(日) 15:36:25.10ID:f5GbRfBo simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない
両方計算してビット演算で選択
c++関係ない
444デフォルトの名無しさん
2020/11/01(日) 15:38:18.92ID:Lkejt9vc >>440
数値のビット数が解っているなら高速化できる
数値のビット数が解っているなら高速化できる
445デフォルトの名無しさん
2020/11/01(日) 15:49:40.49ID:Lkejt9vc446デフォルトの名無しさん
2020/11/01(日) 15:50:59.41ID:Lkejt9vc447デフォルトの名無しさん
2020/11/01(日) 16:00:31.30ID:Lkejt9vc448デフォルトの名無しさん
2020/11/01(日) 17:02:44.45ID:h5xlMYDq つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
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;
とか。
アセンブラだったら、
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
... 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の方が小さい可能性が微レ存
知らんけど
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
455デフォルトの名無しさん
2020/11/02(月) 00:26:45.06ID:dW4oDZpY そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
456デフォルトの名無しさん
2020/11/02(月) 01:48:22.41ID:U5Xnw0i6 sub eax,1
adc eax,0
でなんとかなんないの?
adc eax,0
でなんとかなんないの?
457デフォルトの名無しさん
2020/11/02(月) 14:18:33.78ID:WhiKrslV458デフォルトの名無しさん
2020/11/02(月) 15:41:23.80ID:OFRBeKTl459デフォルトの名無しさん
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に持ってったら予想通り動かんかった。
新し目の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も反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
コールバックメソッドは…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を殺しても関数から戻るためのスタック情報はどうもせんだろ
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;
};
これ合法?
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/1xY471デフォルトの名無しさん
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.
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>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
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:tM7hzUED478デフォルトの名無しさん
2020/11/06(金) 16:04:48.24ID:cCU0l/b0 コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?
こんなん
: apple(apple)
こんなん
: 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メンバだったらどうすんじゃ…
…
: 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
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:24XfCTPm483デフォルトの名無しさん
2020/11/07(土) 17:57:34.44ID:CPm1qeuk this
javascriptのやりすぎで脳が壊れたか
javascriptのやりすぎで脳が壊れたか
484はちみつ餃子 ◆8X2XSCHEME
2020/11/07(土) 18:00:03.51ID:24XfCTPm485デフォルトの名無しさん
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なんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…
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++仕様のお勉強。マウントかますためだけにお勉強。
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 が駄目ということはないのは間違いない。
念のため規格の当該箇所を探してみたら this についてわざわざ脚注で書いてあったわ。
https://timsong-cpp.github.io/cppwp/n3337/class.base.init#12
初期化順序はくれぐれも気を付けんとあかんけど、this が駄目ということはないのは間違いない。
494デフォルトの名無しさん
2020/11/07(土) 23:42:39.92ID:9rEAH6th おせーな。
5分で探して来い。
5分で探して来い。
495デフォルトの名無しさん
2020/11/14(土) 18:09:43.36ID:FszncLid VC++って今でも最先端のシステムでも使われていますか?
>>495
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど
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>とか渡そうとした???
ちょっなんで??
DLLにstd::vector<T>やstd::string<T>とか渡そうとした???
500デフォルトの名無しさん
2020/11/14(土) 19:23:33.64ID:liKT9ZZB 仕様が違うものを同じファイル名にするなって話
ISO/IEC14882のライブラリは全く無関係
ISO/IEC14882のライブラリは全く無関係
501デフォルトの名無しさん
2020/11/14(土) 19:25:17.74ID:IHUe5vhA 手製DLLへのデータ渡しににはchar[]とか基本型onlyとして
CRTをスタティックリンクしたらランタイムのインストールすら不要
で完全解決…!
全要素手製でコントロールできればの話ではある
が
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++使い続ける理由は特にないね
Windows前提ならC++使い続ける理由は特にないね
507デフォルトの名無しさん
2020/11/15(日) 14:27:41.73ID:1NoBqfO6 MFCなんか使うからだろ
自己責任
自己責任
508デフォルトの名無しさん
2020/11/15(日) 15:39:12.99ID:ZF6xjL9s webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?
cheatengineのようなツールはどうやって作るのですか?
509デフォルトの名無しさん
2020/11/15(日) 16:01:31.41ID:fUqPXTtq ツールはReactかVueですね。
510デフォルトの名無しさん
2020/11/15(日) 16:32:14.80ID:U+/Dwi3J マルチ禁止
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
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ
>>516
確かにその感情は理解できます
確かにその感情は理解できます
518デフォルトの名無しさん
2020/11/16(月) 00:15:05.39ID:tkpwZn9D519デフォルトの名無しさん
2020/11/16(月) 04:42:45.86ID:tkpwZn9D スレを全く読まないで反射で答えてしまいました。
今気付きました、すみませんでした。
今気付きました、すみませんでした。
520デフォルトの名無しさん
2020/11/16(月) 06:44:11.49ID:OL16ghBV521デフォルトの名無しさん
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);
}
{
return (gotoTravel || gotoEat);
}
526デフォルトの名無しさん
2020/11/16(月) 09:04:54.68ID:T8j9su4c >>522
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw
527デフォルトの名無しさん
2020/11/16(月) 10:24:06.29ID:OL16ghBV528デフォルトの名無しさん
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時代で頭の更新が止まったままの化石か
古代遺跡から発掘した碑文に洗脳されたバ…若者か知らんが
おおかたそういう手合いのマニュアル人間だろどーせ
みんなそれぞれ考えてることだ
俺様が考えたベストな方法なんて誰も興味ねえんだよ
コミュニティの衰弱に繋がるキリッだっておバンバン
俺様が自分の頭で考えてるのはまだマシなほうで、
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しないといけないです
もっとスマートないい方法はないでしょか
数万の部品の名前があるとして簡単に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 でいいじゃないか
↓わざわざこんなことしなくていいと思う
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:MWCEXPaa540デフォルトの名無しさん
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に参照用の登録をする。
map<id,parts> master; // パーツマスター
list<id> seq; // パーツの並び
map<id, list<id>::iterator> lookup// 各パーツのseq中の位置の参照テーブル
ってしておいて、seqに突っ込んだ要素はlookupに参照用の登録をする。
542デフォルトの名無しさん
2020/11/16(月) 19:32:53.88ID:Z6yFFWiy543デフォルトの名無しさん
2020/11/16(月) 19:36:29.66ID:oSwqK6E+ >>537
RDBS はデフォではソートなんかしないし、ソートされたデータが欲しかったら INSERT/UPDATE/DELETE 時にすでにインデックスを張っておくように、あらかじめわざわざ指定するものだと思いますが
空き時間にバックグラウンドでソートする DB なんて聞いた事がないですね
よろしかったら、そういう DBS が何か教えていただけませんか?
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はしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね
といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ
ソートという言い方はちょっとおかしいけどそれに近いことをRDBはしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね
といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ
548デフォルトの名無しさん
2020/11/16(月) 21:25:44.06ID:BvdXplQc 充填率100%ならトランザクション中にリアルタイムで再配置するしかないけど
充填率100%未満ならその場でインデックスを再構築したりはしない
最近のRDBは行バージョンに対応してるからトランザクションログさえ書ければガンガンいくよ
実データファイルの書き換えは後回しにしても整合性保てるので
充填率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ってなんですか(・∀・)?
PostgreSQLは明示的にバキュームする(B-treeの調整だけではないが
ところでB-treeってなんですか(・∀・)?
553デフォルトの名無しさん
2020/11/17(火) 12:40:30.03ID:PuHDpULa 二分木、binary tree
b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い
b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い
554はちみつ餃子 ◆8X2XSCHEME
2020/11/17(火) 12:52:49.72ID:lifPo1s+ B木 (B-tree) は二分とは限らないよ。
ところでこのBはバランスのBかと思ってたんだけど
考案者とか関連会社の頭文字という説もあるみたいだね。
ところでこの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.
平衡木というと代表的なのは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; }
最小であることが重要。
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
ぷ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 になる
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手で実現はできるのかなとは思いますが
CapsLock状態をプログラム上から直接変更する手段はありますか?
最悪仮想キーコードでシフト押下、Caps押下、離す、離すの4手で実現はできるのかなとは思いますが
573デフォルトの名無しさん
2020/11/20(金) 16:49:03.01ID:JmNduuKf574デフォルトの名無しさん
2020/11/20(金) 17:05:17.17ID:KM6YfWXc >>572
できなかったと思う
できたとしてもやるべきではない
CapsLock状態かどうかを調べることはできる
プログラムでAを入力するときCapsLock状態ならaを送る
CapsLock状態でないならShift+aを送る
なんてことをやったことある
できなかったと思う
できたとしてもやるべきではない
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
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の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代スレに変なポエム書いてる奴がいたが、同じ臭いがする
マ板の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押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えが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+lYxto0593デフォルトの名無しさん
2020/11/22(日) 15:51:20.82ID:o/Js7Lov594デフォルトの名無しさん
2020/11/22(日) 17:19:17.03ID:LCd15qeF 仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない
から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バイト。
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。
598デフォルトの名無しさん
2020/11/22(日) 23:24:02.57ID:LCd15qeF RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る
古き良き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をオーバーロードするよりこっちのほうが融通が利く
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/a604(u_・y) ◆e6.oHu1j.o
2020/11/24(火) 16:34:51.81ID:qTKKRlIf (u_・y)最近C++で作られた出来の良いアプリって存在するの?
(u_・y)もう世の中のほとんどがブラウザーとそのブラウザー上で動作するスクリプトで完結してる気するんだけど
(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 に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。
序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。
「江添亮のC++入門」のことだよね。
評判は悪くはないと思うよ。
太っ腹なことに全文が github に置いてあるからタダで読めるし、
とりあえず序盤だけでも読んでみればいいんじゃないかな。
序盤でヘッダファイルの説明をすっとばして雑にやってるし、
継承の仕組みについて全く触れてなかったりするのは
入門向けにかなり思い切って省いてる感じはする。
一通り理解した後では他の本も読んだほうが良いと思う。
616デフォルトの名無しさん
2020/11/26(木) 21:36:26.77ID:A1DZUd8N >>615
どこのhubよ?
どこのhubよ?
617はちみつ餃子 ◆8X2XSCHEME
2020/11/27(金) 11:50:52.05ID:TefhHHJS618デフォルトの名無しさん
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&&);
これでどっちが優先てこと?
boke(aho&&...);
boke(boke&&);
これでどっちが優先てこと?
623デフォルトの名無しさん
2020/11/28(土) 11:55:46.81ID:/HPnbUmI 非テンプレ版→テンプレ特殊化→テンプレの順に優先
624621
2020/11/28(土) 13:44:25.19ID:/IOgDWl9625デフォルトの名無しさん
2020/11/28(土) 14:33:28.98ID:/HPnbUmI そのAhoはムーブじゃなくてbokeを作る時のデフォルトコンストラクトで出てる
626はちみつ餃子 ◆8X2XSCHEME
2020/11/28(土) 14:35:42.94ID:gUqAhKBc >>624
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。
Test<double> boke;
のときにデフォルトコンストラクタ (引数がないコンストラクタ) を呼出す。
引数なしで呼び出せるのはそれしかないからそれを呼ぶってだけで、
優先もクソもないのじゃ。
627デフォルトの名無しさん
2020/11/28(土) 16:18:43.35ID:/IOgDWl9628はちみつ餃子 ◆8X2XSCHEME
2020/11/28(土) 16:41:08.52ID:gUqAhKBc >>627
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。
テンプレートかどうかは重要ではなくて a が非 const だから非 const のほうが選択される。
629デフォルトの名無しさん
2020/11/28(土) 17:23:45.26ID:/IOgDWl9 >>628
可変引数の方をconst&にしたら解決した!ありがとうございます。
可変引数の方をconst&にしたら解決した!ありがとうございます。
630デフォルトの名無しさん
2020/11/28(土) 21:09:45.69ID:2t4HVeMH またアホみたいな流れかおもたら
意外とちゃんとした質問応答の流れでビビった
意外とちゃんとした質問応答の流れでビビった
631デフォルトの名無しさん
2020/12/01(火) 15:54:55.38ID:V2eyqU/t gdbのプロンプトでシェルの文法使う方法ある?
具体的にはfor文で配列を走査しながら内容をprintしたりしたい
具体的にはfor文で配列を走査しながら内容をprintしたりしたい
632デフォルトの名無しさん
2020/12/01(火) 21:49:00.34ID:1uVg5H0L >>631
配列自体をprintするんじゃだめ?
配列自体を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つになってしまいましたがよろしくお願いします
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:3dB9NeQy636デフォルトの名無しさん
2020/12/02(水) 11:20:44.01ID:CcFfxv7q637はちみつ餃子 ◆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 でも問題は起きない。
たまには処理系のバグってことも無くはないが、
どちらかで問題が起きるなら書いたプログラムのどこかが間違ってる疑いのほうが濃い。
個別の事情によってはコンパイラをどちらかに固定することもあるかもしれないが、
理想としてはどちらでも良いようになっているほうが好ましくはある。
そういう言語仕様だからそうなるとしか言えない。
たぶん必要な情報は
・ 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
シェルというか 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++でできないのか?
スクレイピングってやつは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を動かせるということですか?
対話モードのPythonインタプリタ上でgdbを動かせるということですか?
644デフォルトの名無しさん
2020/12/02(水) 23:31:37.18ID:3RyObk2q ありがとうございました!
645デフォルトの名無しさん
2020/12/02(水) 23:51:03.60ID:1SGYvOuK647デフォルトの名無しさん
2020/12/02(水) 23:56:36.23ID:9+QNoiNo pythonは仮想マシーンが必要
変数がすべてvariantなので初心者にはうってつけよ
変数がすべてvariantなので初心者にはうってつけよ
648デフォルトの名無しさん
2020/12/03(木) 00:11:32.72ID:MFKNATAf649デフォルトの名無しさん
2020/12/03(木) 06:42:09.17ID:w/MpdpQO 勉強するぞ!勉強するぞ!勉強するぞ!
↑
C++には似合わないような気が。
↑
C++には似合わないような気が。
650デフォルトの名無しさん
2020/12/03(木) 11:49:30.18ID:4DIFtwYV651デフォルトの名無しさん
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/
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:rp0tCaVB653はちみつ餃子 ◆8X2XSCHEME
2020/12/05(土) 00:49:53.38ID:rsyXPWsW >>652
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
結局のところ何がわからなかったのか言葉にしてくれんともやもやするんやが……。
654デフォルトの名無しさん
2020/12/05(土) 08:56:44.63ID:F3hjf/ak 最近ずぶの素人にいきなりSTL教えたりする変な風潮、変なサイトが増えたせいで
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>634はここに聞きに来なくて済んでるはず
こういうとこで初心者が苦労するんだよなぁ
ライブラリの使い方なんか、初心者がいきなりぶつかる"壁"であってはならんと思うんだが・・
先に言語自体の基本を学んでれば、>>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世紀における抽象化最大の功績だからだ。
それどころか、およそ学問というものに携わる者は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++アンチが何となく叩きの槍玉に上げる時に使われる用語っていう印象
よく理解してない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は出てこない
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:hI81p89D671デフォルトの名無しさん
2020/12/08(火) 20:44:18.72ID:efO/t6By visual studio 2019でstd::filesystemを使いたいのですが、namespace"std"にfilesystemがありませんと言われます
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
ググた通りにC++言語標準をC++17にしても変わりません
どうすればいいですか?
672デフォルトの名無しさん
2020/12/08(火) 21:02:15.62ID:O6ovwbXJ 上の方に
#include<filesystem>
と書く
#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
// 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の仕様には参った。
脱線の話だが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()みたいにあってもよさそうな気がするんですが・・・
string::find()みたいにあってもよさそうな気がするんですが・・・
683デフォルトの名無しさん
2020/12/14(月) 19:10:08.09ID:iTp2tyae >>682
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?
よう知らんけど、vector固有でなくても使えるアルゴリズムだからでは?
684デフォルトの名無しさん
2020/12/15(火) 09:25:27.40ID:rqj48Chi >>682
#include <algorithm>のfind()を使えってことだ
何でもかんでもメンバに突っ込むのは悪い設計だからだ
この意味でstring::findは蛇足ともいえる
現実にはstring::findはiteratorではなくsize_typeを返すので
複数の文字列の同じ位置、のようなことがやりやすい
#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から入りましたって感じだな
こういう考え方いかにもCから入りましたって感じだな
687デフォルトの名無しさん
2020/12/15(火) 13:21:51.75ID:gbeRTgGG UTF-16(wchar_t)と違ってUTF-8(char)なら同じバイト列を探せばいいんじゃないの?
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた
ASCIIと同じコーディングで済むのがUTF-8が普及した要因だと思ってた
688デフォルトの名無しさん
2020/12/15(火) 13:36:54.46ID:8mWx/Grk689デフォルトの名無しさん
2020/12/15(火) 14:01:10.21ID:gbeRTgGG std::stringってバイト単位で扱うものでしょ
本当に文字単位で扱いたいならstd::wstring
本当に文字単位で扱いたいならstd::wstring
690デフォルトの名無しさん
2020/12/15(火) 14:23:23.61ID:rqj48Chi691デフォルトの名無しさん
2020/12/15(火) 16:06:36.42ID:cCubMtK6 >>689
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ
wstringだろうがu16stringだろうがu32stringだろうが状況変わらんぞ
692デフォルトの名無しさん
2020/12/15(火) 16:37:15.21ID:pcemzeew >>690
質問主ですが、是非ともkwskしてくだしあ
質問主ですが、是非とも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バイト目とそれ以降は重ならないからそういうことは起こらないはず
1バイト目とそれ以降は重ならないからそういうことは起こらないはず
696デフォルトの名無しさん
2020/12/15(火) 22:25:44.23ID:jc1ZwvrK そもそもstring::findがあるのは文字列から文字列を探す需要が高いからじゃないですかね
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈
vector含む各コンテナから探すのはほとんどの場合要素単位だから汎用的なstd::findを使えということと解釈
697デフォルトの名無しさん
2020/12/16(水) 06:17:15.68ID:vxgFSXGy698デフォルトの名無しさん
2020/12/16(水) 08:58:52.32ID:O+yPS5En699デフォルトの名無しさん
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を実装するすべてのクラスが操作を個別に持つのは無駄ってことか
いまは汎用アルゴリズムが再び外部に分離されるようになってきてるのかな
テンプレート・ジェネリクス・インターフェースのおかげかな?
型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?
誰か要約してください
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++ の場合はカプセル化に軸があると思う。
隠されていないデータを処理する分にはメンバ関数にする必然性がない。
オブジェクト指向にも種類がある。
ただひとつのオブジェクト指向がオブジェクト指向たる基準があるわけではなくて、
わりとふんわりした概念だよ……。
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++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある
そういうことじゃねえよ
データ構造とアルゴリズムごちゃ混ぜにしたのをクラスと言い張る意味はない
1つの目的のためのお膳立てを揃えたものがオブジェクトでオブジェクトの種類がクラスだ
C++標準のライブラリではデータ構造はコンテナ、アルゴリズムは関数テンプレートとして分離されている
コンテナは配列やリストといったデータ構造を提供するまでにとどめ
それらを使って何かする応用までメンバにはせず関数テンプレートにしてある
708デフォルトの名無しさん
2020/12/16(水) 13:50:56.36ID:j60AFdVm >>706
Javaのリフレクションで何でも呼べる抜け道みたいな話ではなく
C++ってヘッダーファイルにprivateメンバー書かないといけないじゃん
そのせいで内部実装が変わったらライブラリ利用者にヘッダーファイルを差し替えてもらわないといけなかったりする
これってカプセル化できてないってことじゃない?
pimplとかテクニックがあるけどさ
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かインターフェースクラスを定義するかしか思い浮かばないな
そういうことなら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
といっても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++のオブジェクト指向?知らない子ですね…」
アランケイ「C++のオブジェクト指向?知らない子ですね…」
720デフォルトの名無しさん
2020/12/17(木) 01:05:17.90ID:X4tT/GwL >>716
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。
>C++はゼロコストで極力あらゆる制御をプログラマーに与えることを
>使命ていうか至上命題にして至高のレーゾンデートルとみなしているように見えるので
半分は正しいがそれならcでええやんてなる。
c++のc++たる所以(もしくは厨受けするところ)ってのは、ゼロコストなのにさらにどんなに高級な機能も入れられるんやで〜ってところだろ。
721デフォルトの名無しさん
2020/12/17(木) 01:10:53.36ID:YFuWJYb1722デフォルトの名無しさん
2020/12/17(木) 07:05:17.82ID:iG8ucCJK 非仮想だとそうなっちゃうっていう批判なんだろ
ハイディングなんかする方が悪いと思うけど
ハイディングなんかする方が悪いと思うけど
723デフォルトの名無しさん
2020/12/17(木) 07:08:07.45ID:4VSV+Zch724デフォルトの名無しさん
2020/12/17(木) 08:15:27.96ID:61mx8GyZ725デフォルトの名無しさん
2020/12/17(木) 11:41:30.12ID:YFuWJYb1726デフォルトの名無しさん
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がおかしいんだよな?
バグレポ上がってたりする?
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
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+Zch730デフォルトの名無しさん
2020/12/17(木) 22:56:50.01ID:mqVedE2Y gccの傾向として、熱烈な信者がいて、出来ないことを出来ると宣伝したり、劣っているものを優れていると宣伝したりする場合がある。
ところが、そのような場合、GNUのマニュアルは「出来ない」「劣る」と明言している場合が多い。
したがって、gccについてはみだりに検索せず、GNUのサイトを見ることをお勧めします。
ところが、そのような場合、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の実装には好感が持てる
規約で縛るという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]':
まだまだ延々続くけど、こんくらいでいい?
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は同様のエラーみたいだなぁ
vsでも2017update7は同様のエラーみたいだなぁ
736デフォルトの名無しさん
2020/12/18(金) 11:01:15.84ID:nIUIWdb5 >>733
何言ってんだ継承使いまくりだぞ
何言ってんだ継承使いまくりだぞ
737デフォルトの名無しさん
2020/12/18(金) 11:36:27.07ID:YAPYqYIf738デフォルトの名無しさん
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);
もコスト変わらない?
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/
https://www.techrepublic.com/article/the-worst-bugs-in-the-top-programming-languages/
741デフォルトの名無しさん
2020/12/18(金) 13:40:56.80ID:TZi3wQJw742デフォルトの名無しさん
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版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。
gccではMLで夏くらいにfloat版の実装のコミットの話が出てたから次のリリースでは多分実装されてるんじゃないかな。
745デフォルトの名無しさん
2020/12/18(金) 15:35:36.73ID:A9pQAhpY >>729
23.20.1がHeader <charconv>のドラフトってどれだ?
23.20.1がHeader <charconv>のドラフトってどれだ?
746デフォルトの名無しさん
2020/12/18(金) 15:37:59.88ID:TZi3wQJw >>745
N4713
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は未実装なんだなぁ」と思考停止して終わる
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:TZi3wQJw749デフォルトの名無しさん
2020/12/18(金) 17:28:32.84ID:Mxkr6hqK priority_queue<int>に比較関数を指定したいとき、
priority_queue<int, vector<int>, greater<int>>
のようにすると思いますが、内部コンテナ vector<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>>;
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のマニュアルを見ることをお勧めします。
マニュアルを見れば、たいていは、きちんと書いてあります。
つまり、コンパイル時やリンク時にはエラーにならない。
悪いことに実行時にもエラーにはならず、静かにスルーされる場合さえあるんです。
ここまでの流れでもお気づきでしょうが、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
こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな
https://ja.cppreference.com/w/cpp/compiler_support/17
こっちでの表現は「初等文字列変換」になってんのか
分かるワケねーな
755デフォルトの名無しさん
2020/12/18(金) 20:48:34.81ID:A9pQAhpY756デフォルトの名無しさん
2020/12/18(金) 20:52:41.57ID:2rT2nv7x757デフォルトの名無しさん
2020/12/18(金) 20:53:49.00ID:UPU6Cu+L >>751
関係ないけれども、gcc って今は C++ で記述されているんですよね
長い間私はそれをとても残念に思っています
オプティマイズは苦手であってもいいから C で記述されている C++ 処理系って存在するのでしょうか?
関係ないけれども、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のドラフトに行きついたんだ?
>>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を落とせたのかとか
いちいち開陳せにゃならんの?
知らんがな
仮にwebページ見られなかったとして、どうやってN4713を落とせたのかとか
いちいち開陳せにゃならんの?
763デフォルトの名無しさん
2020/12/18(金) 22:09:31.45ID:XdXLiWO3764デフォルトの名無しさん
2020/12/18(金) 22:11:14.08ID:UPU6Cu+L こちらから見えるということは、向こうからも見えてるということです。
気を付けなされよ。
気を付けなされよ。
765デフォルトの名無しさん
2020/12/18(金) 23:08:30.12ID:A9pQAhpY766デフォルトの名無しさん
2020/12/18(金) 23:26:57.29ID:yxlBLqeq c++ってやたうんちくばっか言う人多いよね
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある
そんな人に限って仕事ができない
やたら得意げに説明してるけど、細かいことばっか気にしてて結局納期遅れwww
それなら、ある程度チャランポランでも納期通り出荷して、最悪現地デバッグの方がまだ救いようがある
767デフォルトの名無しさん
2020/12/18(金) 23:29:15.18ID:zfI8p5qO プログラマがうんちく言わないで何やるんだ?
768デフォルトの名無しさん
2020/12/18(金) 23:48:52.19ID:A9pQAhpY これの話の続きなのか
なら不思議は解消だ
謎は全部解けた
C++相談室 part151
https://mevius.5ch.net/test/read.cgi/tech/1589424805/20
20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ
なら不思議は解消だ
謎は全部解けた
C++相談室 part151
https://mevius.5ch.net/test/read.cgi/tech/1589424805/20
20 名前:デフォルトの名無しさん[sage] 投稿日:2020/05/14(木) 18:32:35.87 ID:jF4/VTtK
>>17
ggrks
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:u3YcA1fK777デフォルトの名無しさん
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の方がクソだった、みたいな
ドラフトの版が変わったらChromeの方がクソだった、みたいな
785デフォルトの名無しさん
2020/12/19(土) 14:41:50.09ID:+cK8B71a ゴミみたいなやり合いだな
くだらな
建設的な議論ができんのか
くだらな
建設的な議論ができんのか
786デフォルトの名無しさん
2020/12/19(土) 18:35:13.01ID:dM4VNuuI C++のプロジェクトに始めて関わって既存コード眺めてたんだけど、関数やメソッドを呼び出す時って、呼び出す側が結果を格納する箱となる変数とかポインタを渡して、
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?
メソッドや関数は成功失敗のint値をreturnする書き方しているんだけど、
これってC++の書き方なの?
787デフォルトの名無しさん
2020/12/19(土) 18:41:15.86ID:5blMWj9s788デフォルトの名無しさん
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:5blMWj9s791デフォルトの名無しさん
2020/12/19(土) 19:25:11.20ID:p4OhEmVF792デフォルトの名無しさん
2020/12/19(土) 19:59:05.03ID:HGWooSzm Cだと不定長の配列やら文字列やら返す関数ひとつ作るだけで大事件だからなぁ
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったらXXX__free()で解放してくださいよー!
解放忘れたらリークしますよー!!!絶対に最後に解放してくださいよー!忘れないでねー!絶っっっっっっ対に忘れないでねー!!!」
ってコメントやドキュメントやサンプルコードにしつこくしつこくしつこく書いて書いて書いて徹底的に注意喚起しないといけない
そして当然のように忘れられて「分かりにくい関数作りやがって」って叩かれる所までがお約束
vectorやstringをゴロッと返せば済む今はいい時代になったと思う
「いいですかー!この関数が返す配列はヒープ確保したものですよー!使い終わったら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多めに確保するなんて事はしないと思いますが…
どうなん?内部でどうなってるのかは…解りません…。
例えば…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:yZxXMpJa798デフォルトの名無しさん
2020/12/19(土) 22:39:50.71ID:u3YcA1fK799デフォルトの名無しさん
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()が内部で何をやっているのかわからん…
左様いまだにstd::string::c_str()が内部で何をやっているのかわからん…
802デフォルトの名無しさん
2020/12/20(日) 00:32:15.85ID:zH6cQZTj 誰もstringの話してないと思うが
803デフォルトの名無しさん
2020/12/20(日) 07:06:06.65ID:u5Xjtcw/804デフォルトの名無しさん
2020/12/20(日) 09:47:23.01ID:C7ljP8CG805デフォルトの名無しさん
2020/12/20(日) 10:51:49.27ID:KSHt8d36 今どきのC++(C++11以降)だと基本的にスコープ抜けたら開放される方式で実装するものなの?
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで
なるべくnewせずにスタック変数にする or ヒープ確保するにしてもスマートポインタ使う
とかで
806デフォルトの名無しさん
2020/12/20(日) 11:14:31.35ID:IFRd5RXQ >>805
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。
そうしたほうが簡単だから、C++11とか関係無くそうするだろ。
807デフォルトの名無しさん
2020/12/20(日) 11:16:20.77ID:B3eFXD1J RAIIなんて今どきでもないだろ
808デフォルトの名無しさん
2020/12/20(日) 11:27:39.08ID:KSHt8d36 そうかな?
ライブラリとかでわざわざInitialize/Finalizeとか明示的に呼ばなきゃいけないの
結構ある気がするけど
ライブラリとかでわざわざ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自体のエラーハンドリングを考えるとやっぱビミョー
ファクトリメソッドでオブジェクトを作ることにして、ファクトリ元オブジェクトの
コンストラクタとデストラクタでそれぞれ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++の常識ではどうやるのか伺いたいです
valarrayかeigenなのか、vectorでforを回すのか…C++の常識ではどうやるのか伺いたいです
822デフォルトの名無しさん
2020/12/21(月) 03:43:19.44ID:tQs5NvLs >>821
blasやlapackにルーチンがあるならそれを使う(ラッパーを作る)
要素の持ち方はvectorでもvalarrayでもその他クラスでも、一次元的にメモリに格納されるなら何でも良い
二次元以上の配列が行優先か列優先かさえ固定しておけば何でも良い
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等を活用しつつ頑張ってみます
主に多次元の常微分方程式を解く目的でFortranからc++へ移行しようと考えていたのですが、ベクトル和やスカラーベクトル積等の計算がFortranほど簡単ではなさそうに感じて質問しました
eigen等を活用しつつ頑張ってみます
827デフォルトの名無しさん
2020/12/21(月) 20:22:43.20ID:94n2fENi そりゃそうだろな
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う
そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある
後発の方が簡単に出来るというのは幻想
汎用機の時点で科学計算と銀行計算の両方ができる
だから科学専用に作られているFortranと汎用のC言語は根本的に用途が違う
そもそもFortranの後に作られたのがC言語だし、時期も近いし、
だからFortranで出来ることをわざわざC言語でやったりはしない、
用途での住み分けがそのころからある
後発の方が簡単に出来るというのは幻想
828デフォルトの名無しさん
2020/12/21(月) 21:07:13.89ID:HyYYfsZ0 簡単なことは簡単に言え
既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな
あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー
↑
こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い
既成のソフトを使い慣れているならそれを使え
不満があるときに自分の理想との違いを埋めるのに
打って出る手段の1つにプログラミングがある
それはC++に限らない
たまたまC++を選んだのなら自らの名誉に恥じぬ努力をせいや
これまたC++に限ったことではないがな
あれ使えばいいやー、これ使えばいいやー
自分なんか物事を考えるだけ無駄なんだー
↑
こういうスタンスのやつ、俺は反吐が出るほど大大大大大嫌い
829デフォルトの名無しさん
2020/12/21(月) 23:35:19.34ID:5SN4/ItM ヘッダファイルに
double hoge = 1.0/3.0;
みたいに書いてた場合、除算はどのタイミングで行われるんですか?初回呼び出し時のみですよね?
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++ではやりにくかったこと」って非常に興味あるから具体的にどういうものか教えてほしい
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:+a9RX7vJ836デフォルトの名無しさん
2020/12/22(火) 09:08:43.07ID:z2CQLL3J 翻訳(interpret)ですか?
C++はコンパイル言語ではないのですか?
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++でもできるだろうと思うのだが
中身いじるような人がいないからこそ、fortranで(blasやlapack)でできる線形代数計算はC/C++でもできるだろうと思うのだが
842デフォルトの名無しさん
2020/12/22(火) 23:28:55.02ID:cWduRySe constexprともなるとどこまでコンパイル時計算してくれるかは
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが
処理系依存と聞く…!
関数が絡んだ場合だけかもしれんが
843デフォルトの名無しさん
2020/12/22(火) 23:41:36.57ID:Yt10VcGs844デフォルトの名無しさん
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 の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。
constexpr 指定が付いた関数は定数式が要求される文脈において
与えられる引数も定数 (定数式) である場合に限りその関数呼出しは
定数式という扱いになる。
定数式が要求される文脈で入力が定数でないならエラーになるし、
定数式が要求されていない文脈であれば実行時計算だよ。
実行時計算にはならない (実行時計算が必要な文脈だとエラーにする) 指定として consteval が導入されたのは、
constexpr の文脈依存な挙動が面倒だと思ったやつがいたからだと思うよ。
847デフォルトの名無しさん
2020/12/23(水) 06:16:15.13ID:ZPrNOuha C++はまだ色々と足し続けてるのか
constexprはともかくconstinit, constevalて...
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)ではどっちが速いんでしょうか
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)
後者をコンパイラが最適化するかどうかはコンパイラ次第
if (X-100u<900u)
後者をコンパイラが最適化するかどうかはコンパイラ次第
854デフォルトの名無しさん
2020/12/23(水) 19:47:49.74ID:PgZc4XsV PCなら1秒に1万回程度なら気にしなくて良い
8bitマイコンだとこの判定だけでも10個以上の命令になったり
8bitマイコンだとこの判定だけでも10個以上の命令になったり
855デフォルトの名無しさん
2020/12/23(水) 20:03:20.62ID:rWjdGSAm 長さ数十億のbool型配列用意すれば早いんじゃね
isDigit3[x] だけで出るじゃん
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:p3n5tJou859デフォルトの名無しさん
2020/12/23(水) 22:21:55.80ID:JqE6cd4a 最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
860デフォルトの名無しさん
2020/12/23(水) 23:11:04.90ID:pgaSoeQc typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?
なんか気持ち悪いので…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万回ループ出来るようになる
Ruby中間言語を、JIT で機械語にコンパイルして、
1秒間に、1,000万回ループ出来るようになる
864デフォルトの名無しさん
2020/12/23(水) 23:43:55.33ID:iOQdV6uo いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい
何勝手に回数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万回ループできるコードになる
C++ならはじめから秒2000万回ループできるコードになる
869デフォルトの名無しさん
2020/12/24(木) 08:12:44.86ID:TzdYJrci このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。
870はちみつ餃子 ◆8X2XSCHEME
2020/12/24(木) 10:18:24.14ID:ys2W6z1g871デフォルトの名無しさん
2020/12/24(木) 11:16:41.02ID:h4Gph9I0 >>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p
手元の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化とかその辺をまずチェックでしょうさ。
途中で送ってもうたorz
((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。
単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz
つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。
873デフォルトの名無しさん
2020/12/24(木) 17:12:04.54ID:tg7gMCA8874デフォルトの名無しさん
2020/12/24(木) 19:53:19.25ID:9+0irhfK if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。
こういうのは減算とコンペア(実質減算)の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:X8ie3AzF878デフォルトの名無しさん
2020/12/24(木) 21:41:03.65ID:X8ie3AzF コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い
コンパイラが最適化するから
x/100を比較するのは
意味的にも意味不明だし
速くなることもない
if (100 <= x && x < 1000)
と書いておけば良い
コンパイラが最適化するから
x/100を比較するのは
意味的にも意味不明だし
速くなることもない
879デフォルトの名無しさん
2020/12/24(木) 21:51:18.77ID:X8ie3AzF ISRの最適化なら
レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある
小規模DSPなんかだと
いまだに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>{});がどちらを呼ぶか規格で決まってる?
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>
だとだめなのだろうか?
誰か教えて下しあ
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 の定義はまったく同じに見えるんだけど、何が違うの?
上のコードと下のコードの RecursiveMapperType の定義はまったく同じに見えるんだけど、何が違うの?
886デフォルトの名無しさん
2020/12/26(土) 00:50:04.37ID:biNpl0R5 >>885 さん
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>
887デフォルトの名無しさん
2020/12/26(土) 03:46:58.69ID:fBIAR6pR ttps://ideone.com/Ou2BZq
888デフォルトの名無しさん
2020/12/26(土) 15:10:58.71ID:3VlCU3bq889デフォルトの名無しさん
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:TLGOuMOF892デフォルトの名無しさん
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:tp3tetyk895デフォルトの名無しさん
2020/12/27(日) 18:33:52.26ID:7Rx7y5wp896デフォルトの名無しさん
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++を尊重してデフォルト非仮想関数なんだよね
これはちょっと残念
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:UEnoPUHl910はちみつ餃子 ◆8X2XSCHEME
2020/12/28(月) 13:19:25.85ID:N6A7dpOQ デストラクタが仮想ではないものを継承したときの具体的な問題は
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。
設計的に綺麗かどうかはまた別の話だけど。
shared_ptr が (デストラクタが仮想でなくても) 元の型のデストラクタを呼んでくれたりするんで、
場合によってはそういう設計もアリということなんだと思う。
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。
設計的に綺麗かどうかはまた別の話だけど。
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. ...
デストラクタが仮想なものを継承してもスライシングは起こりうるよね?そこは関係なくね?
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+J4aSB918デフォルトの名無しさん
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) デストラクタが仮想ではないものを継承する→スライシングになるものが存在する
という命題と矛盾するわけではない(両立する)ので、その議論はあんまり意味がない。
仮想でないデストラクタが話題のスコープなのに、スライシングにスコープを移したら議論にならないでしょ。
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」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。
> スライシングが起こらないように使う分には問題はない。
ここもおかしいんだよね。
デストラクタが仮想ではないものを継承して派生クラスのオブジェクトを new で作って
基底クラスのポインタを通して delete したら未定義動作になるわけだけど、
これはスライシングを起こしていなくても問題になる。
「派生クラスのオブジェクトを new で作って基底クラスのポインタを通して delete」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。
923デフォルトの名無しさん
2020/12/28(月) 19:43:43.44ID:592FfNkQ924デフォルトの名無しさん
2020/12/28(月) 19:51:33.62ID:7Z4wU2qk >>923
make関数作るのはダメなん?
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継承にするくらいなら委譲する。
自分で書くときはそう
標準のコンテナのように既存のクラスがそうでなかったら?が発端だからなぁ
個人的には仮想デストラクタがなければ継承はしない
(一部のイディオムを除けば)private継承にするくらいなら委譲する。
927デフォルトの名無しさん
2020/12/28(月) 21:54:56.73ID:wzipnhb8 デストラクタがprotected:であっても非仮想なら継承したらアウトなんじゃ…
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で
928デフォルトの名無しさん
2020/12/28(月) 21:57:44.66ID:dWPs/bUX929デフォルトの名無しさん
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++で効率的に実装できるように仕組まれている。
CSSがアイデアであった段階からスクリプト言語で実装され、初の大規模採用であったネットスケープにおいてもJavascriptによって実装されていたため、規格そのものがC/C++で効率的になるよう設計されていない。※
現行の規格に対して効率的な実装を施したとしても、将来の規格バージョンで維持できると限らないため、結局、スクリプト言語と同様の非効率を許容することになる。
これはつまり、ほとんどのシンボルを動的に確保することを意味する。
※HTML5規格は、C/C++で効率的に実装できるように仕組まれている。
933デフォルトの名無しさん
2020/12/29(火) 07:48:03.75ID:UwKcs/oz なるほどねー
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう
934デフォルトの名無しさん
2020/12/29(火) 07:49:27.20ID:oaU8v0Mt >>927
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく
935デフォルトの名無しさん
2020/12/29(火) 08:05:44.29ID:vWMLZNcx >>927
型消去とsmart ptr実装で調べるよろし。
型消去とsmart ptr実装で調べるよろし。
936デフォルトの名無しさん
2020/12/29(火) 09:18:16.16ID:qLyTNuLW 定期的に話題になるけど、基底のデストラクタにvirtualが必要なのは
基底型のポインタでdeleteするときだけな
末端のデストラクタさえ呼べれば、次に呼ぶ基底の型は分かりきってるからね
別の言い方をすれば、常に末端の型のポインタをdeleteする分には、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:kdP0thHS941デフォルトの名無しさん
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; } };
こうなってりゃ別にいらんな
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() とするのにくらべて何のメリットも無いな。
おとなしく 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) { 実行(); }
> 「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/951デフォルトの名無しさん
2020/12/31(木) 18:57:49.39ID:/Sdg/sCQ952デフォルトの名無しさん
2021/01/01(金) 05:08:27.95ID:FlWhKtLF CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。
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])
バッファサイズ不足等のエラー
}
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない
#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ページのあらゆる要素へのコントロールの実現を目的としている
という印象
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象
958デフォルトの名無しさん
2021/01/02(土) 02:21:09.41ID:dR/zQLwh >>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな
959デフォルトの名無しさん
2021/01/02(土) 09:15:42.80ID:hdbwvBU0960デフォルトの名無しさん
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
これは生ポインタ使えと言うことでしょうか?
https://ideone.com/QUYTgX
965蟻人間 ◆T6xkBnTXz7B0
2021/01/02(土) 19:28:29.87ID:VBbIup1J966デフォルトの名無しさん
2021/01/02(土) 19:32:19.38ID:TRpAMVE2967デフォルトの名無しさん
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:I3Vvl19p971デフォルトの名無しさん
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;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…
976デフォルトの名無しさん
2021/01/04(月) 19:50:08.29ID:0tciJGtx えすけぇぷ
977蟻人間 ◆T6xkBnTXz7B0
2021/01/04(月) 19:52:06.94ID:RRkyDjZk バックスラッシュor
半角の円記号
を使う
半角の円記号
を使う
979デフォルトの名無しさん
2021/01/05(火) 02:42:04.01ID:GBNfOfsJ https://ideone.com/37sNvH
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!
981デフォルトの名無しさん
2021/01/05(火) 07:30:58.94ID:rKfNNjQV >>975
cout << R"(cout<<"これ→"←"<<endl;)";
cout << R"(cout<<"これ→"←"<<endl;)";
982デフォルトの名無しさん
2021/01/05(火) 08:35:13.05ID:JJaPBKYs cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な
ただしC++11以降な
983デフォルトの名無しさん
2021/01/05(火) 09:02:10.14ID:x+1hwr2M >>979
macでよくハマるw
macでよくハマるw
984デフォルトの名無しさん
2021/01/06(水) 09:32:04.26ID:UTmmPnLW HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。
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;))";
でもいけるんですか?
)が気になりますが…
>>981
この書き方ならなんでも出力出来るんですかね?
cout<<"これ→"←"endl;)と出力したい時
cout << R"(cout<<"これ→"←"<<endl;))";
でもいけるんですか?
)が気になりますが…
987デフォルトの名無しさん
2021/01/07(木) 15:10:50.98ID:9QJGSme0988デフォルトの名無しさん
2021/01/07(木) 19:34:55.01ID:5FPBrit1989デフォルトの名無しさん
2021/01/08(金) 03:01:05.78ID:cNGMO0JS >>947
cppは論理演算子が少ないからに優しくないから先のレスのようにチマチマ等価な冗長な論理を書くしかないのが面倒だよね…
not-andなんだからnand演算子(=joint denial(↑)、論理用語)で書けりゃいいのに(もちろん裸cppで
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);
}
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; }
あ、でも英数字下線の演算子もどきならできるね
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
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 89日 18時間 28分 12秒
新しいスレッドを立ててください。
life time: 89日 18時間 28分 12秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★3 [蚤の市★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- ぶっちゃけ天のうって昭和天のうのせいで全然ありがたみないよな
- MOIWなアイドルマスターミリオンライブシアターデイズアイマスミリマスグリマスミリシタスレ
- 犬って顔くっつけて寝たがるよな
- 『猟友会がクマ駆除を嫌がるなら潰すべき。職務を放棄するハンターから免許や銃を没収して罰金を取ろう』の声、ネットで上がる [932029429]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
