!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part162
https://mevius.5ch.net/test/read.cgi/tech/1667194175/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part163
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ bbda-Axul)
2022/12/30(金) 23:16:31.37ID:DPUEZfMS02デフォルトの名無しさん (ワッチョイ a1c2-dmhP)
2022/12/30(金) 23:48:59.52ID:4Hd9NmeQ0 ≫1 << 乙 << endl;
3デフォルトの名無しさん (ワッチョイ 9a69-Ejmh)
2022/12/31(土) 09:58:55.55ID:wqRRT9ag0 皆さまあけましておめでとうございます
今年もよろしくお願いします
今日も今日とて相談がございます
基底クラスのポインタを格納できるコンテナに押し込んだ派生クラスへのポインタから、その派生クラスのインスタンスをユニークポインタで生成し、それを規定クラスのユニークポインタに押し込んで使いたいです
std::vector<Base*> BaseCnt;
Driv1 Driv1_;
Driv2 Driv2_;
Driv3 Driv3_;
BaseCnt.push_back(&Driv1_);
BaseCnt.push_back(&Driv2_);
BaseCnt.push_back(&Driv3_);
~数々の名誉ある処理を挟んで……~
std::unique_ptr<Base> BaseUni;
BaseUni=どうにかして実体をユニポで生成する関数(BaseCnt.back());
BaseUni->Update();//ここで望んでいる挙動はDriv3のオーバーライドでございます
上記の、どうにかして実体をユニポで生成する関数、が実現できなくて困っています
template<typename T>
std::unique_ptr<Base>&& theFunc(T*t)
{
return std::make_unique<T>();
}
で行けるのかなと思いましたがいけませんでした(^^)……
そもそも基底クラスに押し込んであるため、T型で受けると基底型になってしまいます(^_^)……
どうにかして派生クラスにメモリを確保し、かつそれを規定クラスのユニークポインタに押し込めないものでしょうか?
このままでは年が越せない……
どうかおしえてください
私はc++プリミティブの混乱予約型言語でございます……
今年もよろしくお願いします
今日も今日とて相談がございます
基底クラスのポインタを格納できるコンテナに押し込んだ派生クラスへのポインタから、その派生クラスのインスタンスをユニークポインタで生成し、それを規定クラスのユニークポインタに押し込んで使いたいです
std::vector<Base*> BaseCnt;
Driv1 Driv1_;
Driv2 Driv2_;
Driv3 Driv3_;
BaseCnt.push_back(&Driv1_);
BaseCnt.push_back(&Driv2_);
BaseCnt.push_back(&Driv3_);
~数々の名誉ある処理を挟んで……~
std::unique_ptr<Base> BaseUni;
BaseUni=どうにかして実体をユニポで生成する関数(BaseCnt.back());
BaseUni->Update();//ここで望んでいる挙動はDriv3のオーバーライドでございます
上記の、どうにかして実体をユニポで生成する関数、が実現できなくて困っています
template<typename T>
std::unique_ptr<Base>&& theFunc(T*t)
{
return std::make_unique<T>();
}
で行けるのかなと思いましたがいけませんでした(^^)……
そもそも基底クラスに押し込んであるため、T型で受けると基底型になってしまいます(^_^)……
どうにかして派生クラスにメモリを確保し、かつそれを規定クラスのユニークポインタに押し込めないものでしょうか?
このままでは年が越せない……
どうかおしえてください
私はc++プリミティブの混乱予約型言語でございます……
4デフォルトの名無しさん (ワッチョイ 5a05-VGBY)
2022/12/31(土) 10:30:40.33ID:KJmYA7fT0 うだうだ長文書かんとコード全体をwandboxなりideoneなりに書いてくれや
Updateにvirtualついてないとかだったら張っ倒すぞ
Updateにvirtualついてないとかだったら張っ倒すぞ
5デフォルトの名無しさん (テテンテンテン MMb6-+uJR)
2022/12/31(土) 12:27:13.18ID:GJ3jFwbSM 確かに問題点が複数ある&想定する挙動が曖昧で分からないから、コメントのしようがない。
最小限の再現コードと期待する挙動をwandboxなりideoneなりに書いてからの話だな。
最小限の再現コードと期待する挙動をwandboxなりideoneなりに書いてからの話だな。
6デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2022/12/31(土) 12:49:15.56ID:vu28B3si0 >>3 こんなこと?
class Base;
using Base_Ptr = std::unique_ptr <Base>;
struct Base {
virtual ~Base () = default;
virtual Base_Ptr construct () const = 0;
};
struct Driv3: Base {
virtual Base_Ptr construct () const
{
return std::make_unique <Driv3> ();
}
};
int main () {
std::vector<Base*> BaseCnt;
Driv3 Driv3_;
BaseCnt.push_back(&Driv3_);
std::unique_ptr<Base> BaseUni;
BaseUni=BaseCnt.back()->construct ();
return 0;
}
class Base;
using Base_Ptr = std::unique_ptr <Base>;
struct Base {
virtual ~Base () = default;
virtual Base_Ptr construct () const = 0;
};
struct Driv3: Base {
virtual Base_Ptr construct () const
{
return std::make_unique <Driv3> ();
}
};
int main () {
std::vector<Base*> BaseCnt;
Driv3 Driv3_;
BaseCnt.push_back(&Driv3_);
std::unique_ptr<Base> BaseUni;
BaseUni=BaseCnt.back()->construct ();
return 0;
}
7デフォルトの名無しさん (ブーイモ MMe7-YJVE)
2022/12/31(土) 18:55:55.24ID:MecdUwfcM コメントは対応するコードの前後どちらに書く?
// 別行なら前だが
int i = 0;
int i = 0; // 同じ行なら後?
同じ行に書いてたものが変更で長くなって別行に移したら前後が入れ替わるの気持ち悪くない?
// 別行なら前だが
int i = 0;
int i = 0; // 同じ行なら後?
同じ行に書いてたものが変更で長くなって別行に移したら前後が入れ替わるの気持ち悪くない?
8デフォルトの名無しさん (スプッッ Sd5a-Hnty)
2022/12/31(土) 19:51:29.83ID:SJuvalLBd 基本、同じ行
無理があるときは前の行
無理があるときは前の行
9デフォルトの名無しさん (スプッッ Sd5a-Hnty)
2022/12/31(土) 19:52:40.15ID:SJuvalLBd エディタの都合に合わせてたら人間向けのメモでなくなる
10デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2022/12/31(土) 19:56:33.63ID:tNW0EEuh0 grepなどによるキーワード検索がやりやすくなるよう意識したら良い
ctagsや統合開発環境みたいな高性能な検索機能がなくても探しやすいのが理想
ctagsや統合開発環境みたいな高性能な検索機能がなくても探しやすいのが理想
11デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2022/12/31(土) 20:10:39.20ID:YncayN1e012デフォルトの名無しさん (ワッチョイ 4ecf-/EFQ)
2022/12/31(土) 20:52:41.08ID:0LppXV+K0 気持ち悪いつか、気になるものは後で見ても気になるから
そりゃ気持ちよく直すでしょ
そりゃ気持ちよく直すでしょ
13デフォルトの名無しさん (スーップ Sdba-+yQ1)
2022/12/31(土) 21:28:19.88ID:Wrtrkox0d 気持ちはわかるよ
差分ツールで見たとき差分として出ちゃうからな
差分ツールで見たとき差分として出ちゃうからな
14はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2022/12/31(土) 23:41:26.87ID:Lgb5NxGE0 コメントの移動だけが (一回分のコミットとして) 差分に出るのだったらちょっと嫌な感じだけど、
周辺のコードを修正した結果として行が長くなりすぎないようにコメントの位置も変えるという話なんだから
差分ツールで見たらどうせそこらへん一帯が出るわけでしょ。
その中にコメントのちょっとした移動が含まれるかどうかなんて気にするようなもんじゃないと思うけどなぁ。
周辺のコードを修正した結果として行が長くなりすぎないようにコメントの位置も変えるという話なんだから
差分ツールで見たらどうせそこらへん一帯が出るわけでしょ。
その中にコメントのちょっとした移動が含まれるかどうかなんて気にするようなもんじゃないと思うけどなぁ。
15デフォルトの名無しさん (スプッッ Sd5a-Hnty)
2022/12/31(土) 23:56:21.90ID:thdzMSmPd 書くべきものは横着しないで書け
書かなくてよいもので油売るな
これだけのこと
書かなくてよいもので油売るな
これだけのこと
16はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/01(日) 00:07:36.95ID:xRsGwj7i0 ところで私がよく使う言語に Scheme があって Scheme ではセミコロンから改行までがコメントになるんだけど、
Scheme の (というか主な LISP 系言語の) 習慣では状況によってセミコロンの数を変えるし
フォーマッタはセミコロンの数に基づいてインデントを変える。
https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html
便利な習慣だと思うんだけど他の言語ではこういうのを見ないなぁ。
Scheme の (というか主な LISP 系言語の) 習慣では状況によってセミコロンの数を変えるし
フォーマッタはセミコロンの数に基づいてインデントを変える。
https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html
便利な習慣だと思うんだけど他の言語ではこういうのを見ないなぁ。
17デフォルトの名無しさん (ワッチョイ 4ecf-/EFQ)
2023/01/01(日) 00:14:48.52ID:3UYI3pmj0 何なら、本文の途中で折り返して、行末コメントにするわ
18デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/01(日) 03:55:44.18ID:zV40glZu019デフォルトの名無しさん (ブーイモ MMb6-vTgN)
2023/01/01(日) 11:42:43.03ID:83NHqx7aM コメントを同じ行に書くことはほとんどないかなあ
そもそも1行コメントで済む処理っどんなの? コメント必要なのかな?
俺は処理の塊の前に意図など含めて長文コメントを書いてる
そもそも1行コメントで済む処理っどんなの? コメント必要なのかな?
俺は処理の塊の前に意図など含めて長文コメントを書いてる
20デフォルトの名無しさん (ワッチョイ 7a28-d25T)
2023/01/01(日) 14:59:08.11ID:M9T6rHgL0 行内コメントはどこまで下げるのかと言う問題が、
foo(); // xxxとyyyを更新
assertIm(xxx) + Im(yyy) == 0); // 変換結果は共役のはず
--------->| 40 カラム?
-------------->| 56 カラム?
オートフォーマッター任せにしたいが定説が無さげ
perltidyだとなんか隣接する行コメは64カラム目か、それを超える場合は一番長いのに合わせてくれるが
コードの長さがかなり不ぞろいなとき罪悪感みある、
a(); // (aのコメント)
b(); // (bのコメント)
very_long_long_long_name_function_call_to_baz(long_long_name_param, 1234567); // (←のコメント)
foo(); // xxxとyyyを更新
assertIm(xxx) + Im(yyy) == 0); // 変換結果は共役のはず
--------->| 40 カラム?
-------------->| 56 カラム?
オートフォーマッター任せにしたいが定説が無さげ
perltidyだとなんか隣接する行コメは64カラム目か、それを超える場合は一番長いのに合わせてくれるが
コードの長さがかなり不ぞろいなとき罪悪感みある、
a(); // (aのコメント)
b(); // (bのコメント)
very_long_long_long_name_function_call_to_baz(long_long_name_param, 1234567); // (←のコメント)
21デフォルトの名無しさん (ワッチョイ 7a28-d25T)
2023/01/01(日) 15:01:54.19ID:M9T6rHgL0 あとif文の行内コメントも悩む、
if (a==b)
{
}else
if (a==b)
{
}else
22デフォルトの名無しさん (アウアウウー Sac7-+uJR)
2023/01/01(日) 15:03:25.53ID:ZNJrRmgOa ・コメントは41桁目から
・一行は95桁迄
が俺のマイルール
・一行は95桁迄
が俺のマイルール
23デフォルトの名無しさん (ワッチョイ 7a28-d25T)
2023/01/01(日) 15:05:17.13ID:M9T6rHgL0 あとif文の行内コメントも悩む、
if (a==b) // ここには分岐条件のコメントを書くべき?
{ // ここにはthen節のコメントを書くべき?
...
}
else // else節のコメントはここでええのか?
{ // それともここか?
....
}
どう書くかによってブレーススタイルやオートコードフォーマッタとの
共存具合が変わってくるので行内コメントはいろいろ問題が多いシステム、
if (a==b) // ここには分岐条件のコメントを書くべき?
{ // ここにはthen節のコメントを書くべき?
...
}
else // else節のコメントはここでええのか?
{ // それともここか?
....
}
どう書くかによってブレーススタイルやオートコードフォーマッタとの
共存具合が変わってくるので行内コメントはいろいろ問題が多いシステム、
24デフォルトの名無しさん (アウアウウー Sac7-+uJR)
2023/01/01(日) 15:09:39.48ID:ZNJrRmgOa >>21
// a と b が等しいなら...
if (a==b){
// 等しい時の処理
...
// 等しくないなら...
} else {
// 等しくない時の処理
}
が俺のマイルール
※ いないと思うけどコメントの内容にはツッコミ厳禁ね
// a と b が等しいなら...
if (a==b){
// 等しい時の処理
...
// 等しくないなら...
} else {
// 等しくない時の処理
}
が俺のマイルール
※ いないと思うけどコメントの内容にはツッコミ厳禁ね
25デフォルトの名無しさん (アウアウウー Sac7-+uJR)
2023/01/01(日) 15:17:33.19ID:ZNJrRmgOa >>23
ありゃ行内コメントか...
if (a==b){ // a と b が等しいなら...
... //. 等しい時の処理
} else { // 等しくないなら...
... // 等しくない時の処理
}
確かに通常のコメントと行内コメントが混在するとモヤモヤするのはある
ありゃ行内コメントか...
if (a==b){ // a と b が等しいなら...
... //. 等しい時の処理
} else { // 等しくないなら...
... // 等しくない時の処理
}
確かに通常のコメントと行内コメントが混在するとモヤモヤするのはある
26デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/01(日) 17:05:55.66ID:c0wTdgdc0 >>16
よく使うって、何に使うんだよ?
よく使うって、何に使うんだよ?
27はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/01(日) 17:43:06.94ID:xRsGwj7i0 >>26
手癖で使えるなじんだ言語ってひとつくらいはあるもんだろ。
俺はそれが Scheme だってだけで、やってることは自動でネットを巡回したりだとか
ファイルを条件別にフォルダに仕分けしたりだとかとかいった普段のちょっとした自動化とかだよ。
手癖で使えるなじんだ言語ってひとつくらいはあるもんだろ。
俺はそれが Scheme だってだけで、やってることは自動でネットを巡回したりだとか
ファイルを条件別にフォルダに仕分けしたりだとかとかいった普段のちょっとした自動化とかだよ。
28デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/01(日) 17:48:24.72ID:OS3h3nzh0 (真理情報)grep検索しやすいのが正義
29デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/01(日) 18:20:59.18ID:c0wTdgdc0 ニンジャ凄いな。
全部のコア使い切ってる。
全部のコア使い切ってる。
30デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/01(日) 18:29:13.35ID:c0wTdgdc0 新しいパソコンのメリットを特に感じていなかったけど、大物をビルドすると圧倒的に速いな。
31デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/01(日) 18:29:31.45ID:c0wTdgdc0 何か間違えたのかと思ったわ。
あまりにも早すぎて。
あまりにも早すぎて。
32デフォルトの名無しさん (ワッチョイ 03e4-uhAF)
2023/01/01(日) 19:58:13.71ID:7cm8ugfN033はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/01(日) 20:35:59.39ID:xRsGwj7i034デフォルトの名無しさん (ブーイモ MMb6-YJVE)
2023/01/02(月) 15:24:57.96ID:8fX0q33xM35デフォルトの名無しさん (ワッチョイ 7a28-d25T)
2023/01/02(月) 17:07:12.86ID:ArPslss00 PEP8
36はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/02(月) 17:17:16.57ID:tiICTfPp0 >>34
意味によってセミコロンの個数を変えるとそれをフォーマッタが見た目 (インデント) に反映するという話なんだけど
意味によってセミコロンの個数を変えるとそれをフォーマッタが見た目 (インデント) に反映するという話なんだけど
37デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2023/01/02(月) 17:55:39.66ID:1k7qyNCA0 自分が理解できないものは使えない奴とか言ういつもの人でしょ
スルーでいいかと
スルーでいいかと
38デフォルトの名無しさん (ブーイモ MMb6-YJVE)
2023/01/02(月) 19:45:33.11ID:G0Rqch2XM39デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/03(火) 08:07:29.43ID:vDbC1GAT040デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/03(火) 08:12:15.59ID:vDbC1GAT0 忘れてもらっちゃ困るのは
C++界は新しい機能に前向きだ
待ってましたという新機能にはみんな飛びつく
凝り固まろうとしてるのと違う
特にC++11以後は断じて違う
C++界は新しい機能に前向きだ
待ってましたという新機能にはみんな飛びつく
凝り固まろうとしてるのと違う
特にC++11以後は断じて違う
41デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2023/01/03(火) 08:39:47.41ID:cXTWG1PB0 誰もお前に勧めてなんてないし自意識過剰すぎるだろw
42デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/03(火) 09:59:45.56ID:vDbC1GAT0 にわか横レスには俺も何も言ってないよ
43デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/03(火) 11:34:31.19ID:Tocwdict0 C++11でshared_ptrが導入されて、C++に対するJava・C#の優位性がひとつ消滅したよな
44デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/03(火) 13:45:59.96ID:BllUqxS60 10年以上も前のことを何を今更って感じもするし
std::shared_ptr以前からスマートポインタは
一般的だったから事実誤認のような気もする
特にC#が登場した2000年にはスマートポインタの利用は一般的だった
Java登場の1995年当時を知る人はいるかな?
std::shared_ptr以前からスマートポインタは
一般的だったから事実誤認のような気もする
特にC#が登場した2000年にはスマートポインタの利用は一般的だった
Java登場の1995年当時を知る人はいるかな?
45デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/03(火) 14:00:08.10ID:Tocwdict046デフォルトの名無しさん (ワッチョイ 977c-4W3V)
2023/01/03(火) 14:23:27.79ID:InFt2tel0 モノとしては誰でも知ってたけど、標準に入ってるかどうかってやっぱりだいぶ違うんだよな
プロダクトでの使いやすさとか
プロダクトでの使いやすさとか
47デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2023/01/03(火) 15:05:23.38ID:cXTWG1PB048デフォルトの名無しさん (ワッチョイ 768c-+uJR)
2023/01/03(火) 16:23:49.38ID:5xlop3x4049デフォルトの名無しさん (ブーイモ MM13-YJVE)
2023/01/03(火) 19:10:25.71ID:aAIqXg3+M 標準ライブラリのみで外部依存ありませんは結構な強みになるからな
50デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/03(火) 20:16:21.45ID:Tocwdict0 以下の記事、プログラマ脳なら神様の定義の変化を重視するよなあ。あるか、ないかじゃなくて。
【神様はいる? いない?】古代の人々は神をどう考えたのか?(ダイヤモンド・オンライン) - Yahoo!ニュース
https://news.yahoo.co.jp/articles/621899c69768ec530aa5377fed89908dc3eef8d4
【神様はいる? いない?】古代の人々は神をどう考えたのか?(ダイヤモンド・オンライン) - Yahoo!ニュース
https://news.yahoo.co.jp/articles/621899c69768ec530aa5377fed89908dc3eef8d4
51デフォルトの名無しさん (ワッチョイ 9aa5-Gyxr)
2023/01/04(水) 00:21:00.82ID:IaYf77a90 懐かしいなboost
みんな直接WG21へ提案持っていくようになってすっかり立ち位置が微妙になっちゃった
みんな直接WG21へ提案持っていくようになってすっかり立ち位置が微妙になっちゃった
52はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/04(水) 01:31:15.66ID:0JWM3k/l0 そうか? 言語機能に改定が必要なことならともかく
ライブラリは実績があるほうが通しやすいし、
標準に取り込まれなくても細かな便利機能がある Boost が衰退したとは感じないな。
サードパーティのライブラリを導入する手続きが面倒というのはよくある話だから
そういう面でもカバー範囲が広い Boost の出番は多いんじゃないの。
ライブラリは実績があるほうが通しやすいし、
標準に取り込まれなくても細かな便利機能がある Boost が衰退したとは感じないな。
サードパーティのライブラリを導入する手続きが面倒というのはよくある話だから
そういう面でもカバー範囲が広い Boost の出番は多いんじゃないの。
53デフォルトの名無しさん (ワッチョイ 977c-4W3V)
2023/01/04(水) 01:55:44.13ID:gfVJn8560 単純に必要な便利機能はあらかたC++標準の方に取り込まれてて
もうマイナーやマニアックな機能かゴミしか残ってないから使う機会なくなったわ
なんかこれ今でも便利だよってのある?
もうマイナーやマニアックな機能かゴミしか残ってないから使う機会なくなったわ
なんかこれ今でも便利だよってのある?
54デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/04(水) 02:11:04.13ID:CtSEqK7p0 >>53
他の言語ではとっくの昔に標準化されているXMLやJSONのパーサーが標準化されたら便利になると思うよ
他の言語ではとっくの昔に標準化されているXMLやJSONのパーサーが標準化されたら便利になると思うよ
55デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/04(水) 02:42:57.82ID:DBMM4FaV0 >54
1.75でBoost.Jsonが入った。
1.75でBoost.Jsonが入った。
56デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/04(水) 03:00:12.42ID:DBMM4FaV0 >>53
Boost.Beast。
Boost.Beast。
57デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/04(水) 14:34:57.16ID:q6K3KMhU058デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/04(水) 14:42:05.39ID:q6K3KMhU059デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/04(水) 18:00:15.11ID:CtSEqK7p0 うっかり標準化して負の遺産になってしまったiostreamでの失敗の知見のうえに今のC++があるってのはわかる
60デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/04(水) 18:07:51.27ID:q6K3KMhU0 ところでiostreamに変わるioを作って
標準に入れようという動きはないんですか?
標準に入れようという動きはないんですか?
61はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/04(水) 18:09:17.48ID:0JWM3k/l0 さすがに入出力の書式化を標準ライブラリとして用意しないわけにもいかんからな。
良いのが出来るまで先送りとは言えないんだからそのとき出来たものを入れるのはしょうがないんじゃないの。
良いのが出来るまで先送りとは言えないんだからそのとき出来たものを入れるのはしょうがないんじゃないの。
62はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/04(水) 18:18:11.23ID:0JWM3k/l0 >>60
私が把握してないけかもしれないけれどストリームの基本構造を変えようという大きな動きはない。
C++20 から書式化 (オブジェクトを文字列表現にする) は std::format として切り出されて、
書式の情報は std::formatter 型で扱うのでグローバルな状態に影響を与えるマニピュレータを使う必要はなくなった。
私が把握してないけかもしれないけれどストリームの基本構造を変えようという大きな動きはない。
C++20 から書式化 (オブジェクトを文字列表現にする) は std::format として切り出されて、
書式の情報は std::formatter 型で扱うのでグローバルな状態に影響を与えるマニピュレータを使う必要はなくなった。
63デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/04(水) 18:26:24.86ID:CtSEqK7p0 「作業ディレクトリ」という概念はプロセス全体でひとつでしたっけ。これはOS依存ですかね。
スレッド処理実行中に作業ディレクトリが変わるのは許容範囲かな
スレッド処理実行中に作業ディレクトリが変わるのは許容範囲かな
64デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/04(水) 18:40:11.15ID:q6K3KMhU065はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/04(水) 18:43:31.27ID:0JWM3k/l0 std::format の設計は Rust の std::fmt::Display と似てる感じがするね。
66デフォルトの名無しさん (ワッチョイ 4ecf-/EFQ)
2023/01/04(水) 23:47:37.00ID:PU4coe7B0 iostream はよくあんなもん公開する勇気が有ったな
67デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 00:04:17.98ID:wM/B2eC00 当時はC with Classesなんて研究をしてる人が珍しくて
やってる人のところへ見物に来る人がぞろぞろいたんだよ
禿にとって味方をつくることも大事な仕事で
先行きがまだ見えない試みも怯まず果敢に攻める必要があった
その当時の作品を今さら未来人がドヤ顔で揶揄しても
聞いてるのは当時の人じゃなく同じ未来人だぞ
おまえ自身がどんな批判に晒されるのか怖くないの?
・・・だから匿名掲示板なのか 失笑
やってる人のところへ見物に来る人がぞろぞろいたんだよ
禿にとって味方をつくることも大事な仕事で
先行きがまだ見えない試みも怯まず果敢に攻める必要があった
その当時の作品を今さら未来人がドヤ顔で揶揄しても
聞いてるのは当時の人じゃなく同じ未来人だぞ
おまえ自身がどんな批判に晒されるのか怖くないの?
・・・だから匿名掲示板なのか 失笑
68デフォルトの名無しさん (ワッチョイ 4ecf-/EFQ)
2023/01/05(木) 00:06:22.64ID:uFuuDD5j0 いや、発表当時から微妙な反応だったよ
ユーザーが求めてたのはオブジェクト指向で、
あんな実装じゃない
ユーザーが求めてたのはオブジェクト指向で、
あんな実装じゃない
69デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 00:11:53.94ID:wM/B2eC00 そういう手前味噌なおも鋳込みが激しいのもこの界隈だわな
おまえさんのようなシュトロハイム型のやつの受け流し方もみんな憶えてる
おまえさんのようなシュトロハイム型のやつの受け流し方もみんな憶えてる
70デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 00:12:40.81ID:wM/B2eC00 - おも鋳込み
+ 思い込み
+ 思い込み
71デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/05(木) 00:38:06.59ID:2y5++O3y0 そんなに不満なら何で自分で作らんの?
皆不満なら公開したら支持を集められるよ
皆不満なら公開したら支持を集められるよ
72デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/05(木) 00:45:23.91ID:Lgp3gkNr0 PowerShellのパイプに似たコレジャナイ感でしょうかね
なお、PowerShellのリダイレクトはさらなる魔改造のために温存されている模様
なお、PowerShellのリダイレクトはさらなる魔改造のために温存されている模様
73デフォルトの名無しさん (ワッチョイ 7f4e-/EFQ)
2023/01/05(木) 01:10:26.32ID:TNCZWrQ40 std::formatは整数が%d、浮動小数点が%f、文字列が%sのprintfに近い書式でよかったのに…
74デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2023/01/05(木) 06:48:29.39ID:O+NRT3S+0 >>72
PowerShell のパイプって特に変じゃ無いような気がするが...
PowerShell のパイプって特に変じゃ無いような気がするが...
75デフォルトの名無しさん (スプッッ Sd5a-kLll)
2023/01/05(木) 08:19:32.24ID:ImmyD00Ud パイプで渡すものがオブジェクトの配列なだけならまだしも、
要素数が0と1の時だけ特別な処理がかかるのは使い勝手を損ねてるだけだぞ
要素数が0と1の時だけ特別な処理がかかるのは使い勝手を損ねてるだけだぞ
76デフォルトの名無しさん (アウアウウー Sac7-yDM8)
2023/01/05(木) 11:10:59.66ID:Cbg+aaE9a >>68
ほんそれ
ほんそれ
77デフォルトの名無しさん (アウアウウー Sac7-yDM8)
2023/01/05(木) 11:12:50.46ID:Cbg+aaE9a >>75
便所や下水のPipeだね
便所や下水のPipeだね
78デフォルトの名無しさん (アウアウウー Sac7-+uJR)
2023/01/05(木) 11:14:43.82ID:l7rjlNbZa79デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 11:46:32.29ID:wM/B2eC00 >>68
発表当時って西暦年で言うといつだ?
発表当時って西暦年で言うといつだ?
80デフォルトの名無しさん (ブーイモ MMba-YJVE)
2023/01/05(木) 13:10:14.84ID:QwpX4kWAM 何を今更と思ったけど iostream 叩いとけばわかってる感出るってことなんですかね
81デフォルトの名無しさん (ワッチョイ 0712-CgFf)
2023/01/05(木) 13:13:50.03ID:MgmPxFQm082デフォルトの名無しさん (ブーイモ MMba-krXg)
2023/01/05(木) 13:20:30.85ID:EwWOYZLWM 実用上困ったことがない程度しかio使ってないのに養護するバカが他人をバカ呼ばわりして笑える
83デフォルトの名無しさん (スプッッ Sd5a-Hnty)
2023/01/05(木) 14:03:21.88ID:XWvG4X+rd 実用上どう困るのかを強い説得力で話すやつを見かけないな
84デフォルトの名無しさん (アウアウウー Sac7-yDM8)
2023/01/05(木) 14:11:12.67ID:Cbg+aaE9a またperlerが湧いてきたな
85デフォルトの名無しさん (ワッチョイ 9a01-+uJR)
2023/01/05(木) 14:42:05.42ID:O+NRT3S+086デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 14:48:29.85ID:wM/B2eC00 へーえ、printfならご満足なのか
87デフォルトの名無しさん (ワッチョイ 8b01-4uR0)
2023/01/05(木) 14:52:05.98ID:2y5++O3y0 マジで不満なら作ったらどうだ? IOくらい余裕でできるやろ?
88はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/05(木) 15:00:05.80ID:ojGp6ksg0 printf は型システム的にガバガバすぎるだろ。
書式と実引数が食い違っててもコンパイル時に検出されないこともあるし。
書式と実引数が食い違っててもコンパイル時に検出されないこともあるし。
89デフォルトの名無しさん (ワッチョイ f3c2-acQP)
2023/01/05(木) 15:19:01.89ID:wM/B2eC00 Bの関数をC++スレで持ち出してドヤァ
90デフォルトの名無しさん (オイコラミネオ MMe3-5E5I)
2023/01/05(木) 17:25:17.77ID:sQ9AithNM はちみつはいつもprintfをdisってるが、printfには捨て難い便利さがある。
91デフォルトの名無しさん (オイコラミネオ MMe3-5E5I)
2023/01/05(木) 18:01:34.63ID:sQ9AithNM >>90
補足すれば、cout系はメンドクサイ。書くのが非効率。
補足すれば、cout系はメンドクサイ。書くのが非効率。
92デフォルトの名無しさん (ワッチョイ 1a19-MqrI)
2023/01/05(木) 19:16:41.23ID:KjlTe/EQ0 仕方ないじゃん
当時はいいと思っちゃったんだから
何十年前ものアイデアを今の知見で考察しても仕方がない
当時はいいと思っちゃったんだから
何十年前ものアイデアを今の知見で考察しても仕方がない
93デフォルトの名無しさん (ワッチョイ 5b76-kLll)
2023/01/05(木) 19:55:51.72ID:N/v+WbZh094はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/05(木) 20:56:47.09ID:ojGp6ksg095デフォルトの名無しさん (ワッチョイ 9a01-9j0N)
2023/01/05(木) 21:36:43.88ID:O+NRT3S+0 >>93
どんなコード書いてるの?
PS C:\> function x {
>> param([parameter(ValueFromPipeline=$true)]$p)
>> begin { Write-Host 'BEGIN' }
>> process { Write-Host "PROCESS: $p" }
>> end { Write-Host 'END'}
>> }
PS C:\> @() | x
BEGIN
END
PS C:\> @(1) | x
BEGIN
PROCESS: 1
END
PS C:\> @(1,2) | x
BEGIN
PROCESS: 1
PROCESS: 2
END
PS C:\>
普通に動いてるけど?
どんなコード書いてるの?
PS C:\> function x {
>> param([parameter(ValueFromPipeline=$true)]$p)
>> begin { Write-Host 'BEGIN' }
>> process { Write-Host "PROCESS: $p" }
>> end { Write-Host 'END'}
>> }
PS C:\> @() | x
BEGIN
END
PS C:\> @(1) | x
BEGIN
PROCESS: 1
END
PS C:\> @(1,2) | x
BEGIN
PROCESS: 1
PROCESS: 2
END
PS C:\>
普通に動いてるけど?
96デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/05(木) 21:40:39.42ID:Lgp3gkNr0 iostreamは開発用ログの出力方法としては最適なんだけど、それ以上ではない感じ
97デフォルトの名無しさん (ワッチョイ 7a28-d25T)
2023/01/05(木) 22:43:53.60ID:QdQAlRIq0 ログ出力用に<<をオーバーロードしたら
バイナリ出力は別の手段を考えることに……
namespaceでオーバーロード内容をさらに区分するとかはできるのかどうか知らんがやりたくない、、、
バイナリ出力は別の手段を考えることに……
namespaceでオーバーロード内容をさらに区分するとかはできるのかどうか知らんがやりたくない、、、
98デフォルトの名無しさん (ワッチョイ 9aad-TwI4)
2023/01/05(木) 22:50:41.68ID:Lgp3gkNr0 printfだと、見たいオブジェクトの型に気にすることなくログ関数に突っ込む、という他の言語で当たり前にできることができない。
99デフォルトの名無しさん (ワッチョイ cebb-krXg)
2023/01/05(木) 23:36:19.07ID:91BZqTRI0 formatのお陰でもう議論する意味なんてないんだが、
17以前は
誰かが状態を書き換えてるかもしれないからいちいち保存と復元が必要、
文字列とコードが入り乱れていて、i18n化できない&何が書かれているかひと目で分からないから
到底実用的じゃない
会社で20が使えるようになったらiostreamに戻るよ…
17以前は
誰かが状態を書き換えてるかもしれないからいちいち保存と復元が必要、
文字列とコードが入り乱れていて、i18n化できない&何が書かれているかひと目で分からないから
到底実用的じゃない
会社で20が使えるようになったらiostreamに戻るよ…
100はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/05(木) 23:43:57.03ID:ojGp6ksg0 >>97
いくつかやり方はあると思うけど……。
同じストリームにログ出力用の表現とバイナリ表現の両方を出力する可能性があるなら
適当なクラスに包むだけでいいと思う。
こんな感じで書ければ十分でしょ。
Foo bar;
std::cout << binary_style(bar) << std::endl;
std::cout << log_style(bar) << std::endl;
Haskell でこんな感じで処理を切り替えるのをよく見た気がする。
だいぶん前にちょっと遊んだだけなのであまり覚えてないけど。
出力先によって表現を変えるのならストリームクラスを定義してしまえばいいと思う。
直接的な入出力はストリームバッファがやっていて、
書式化を担当するストリームがストリームバッファを所有するという構造がある。
オブジェクトの表現形式が大きく変わるとしたら出力先ごとに変えるという用途だろうから
こっちのほうが使い勝手が良い場合も多いかもしれない。
雑な例だけどこんな感じ。
https://wandbox.org/permlink/3AaOGSXLNCw2aNJv
いくつかやり方はあると思うけど……。
同じストリームにログ出力用の表現とバイナリ表現の両方を出力する可能性があるなら
適当なクラスに包むだけでいいと思う。
こんな感じで書ければ十分でしょ。
Foo bar;
std::cout << binary_style(bar) << std::endl;
std::cout << log_style(bar) << std::endl;
Haskell でこんな感じで処理を切り替えるのをよく見た気がする。
だいぶん前にちょっと遊んだだけなのであまり覚えてないけど。
出力先によって表現を変えるのならストリームクラスを定義してしまえばいいと思う。
直接的な入出力はストリームバッファがやっていて、
書式化を担当するストリームがストリームバッファを所有するという構造がある。
オブジェクトの表現形式が大きく変わるとしたら出力先ごとに変えるという用途だろうから
こっちのほうが使い勝手が良い場合も多いかもしれない。
雑な例だけどこんな感じ。
https://wandbox.org/permlink/3AaOGSXLNCw2aNJv
101デフォルトの名無しさん (オイコラミネオ MMe3-5E5I)
2023/01/06(金) 00:06:44.93ID:Pn7zd4wpM はちみつは、何かに忖度しているように感じるな。
職人は自分の腕で食っていくので忖度しないが、就職先を探すサラリーマンは忖度する。
職人は自分の腕で食っていくので忖度しないが、就職先を探すサラリーマンは忖度する。
102はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/06(金) 00:22:08.66ID:HDVxNHRA0 前にも書いたことがあるがワイはプログラミングは完全に趣味でやってるだけなので
プログラミングについて私が配慮すべき何者かなど存在せぇへんで。
プログラミングについて私が配慮すべき何者かなど存在せぇへんで。
103デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2023/01/06(金) 00:30:02.38ID:fURAHMja0 じゃあ、はちみつ職人に改名しなよ。
104デフォルトの名無しさん (オイコラミネオ MMe3-5E5I)
2023/01/06(金) 00:32:36.82ID:Pn7zd4wpM なんか、何かにおべんちゃらしてるような感じを受ける。
105はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 633e-ChaJ)
2023/01/06(金) 00:41:45.62ID:HDVxNHRA0106デフォルトの名無しさん (スッップ Sdba-TbQk)
2023/01/06(金) 05:35:52.57ID:0M7CqxJ+d NGしやすくていいじゃんよ
107デフォルトの名無しさん (スプッッ Sdba-kLll)
2023/01/06(金) 07:56:26.71ID:vZ5ptmnXd >>95
@(...)は長さに関わらず強制的に配列にする書き方でしょ
@(...)は長さに関わらず強制的に配列にする書き方でしょ
108デフォルトの名無しさん (ワッチョイ 9a01-9j0N)
2023/01/06(金) 14:14:52.53ID:Zd/Zujyt0 >>107
だからどんなコード書いてるのよ?
PS C:\> 1, 2 | x
BEGIN
PROCESS: 1
PROCESS: 2
END
PS C:\> 1 | x
BEGIN
PROCESS: 1
END
PS C:\> | x
発生場所 行:1 文字:1
+ | x
+ ~
空のパイプ要素は許可されていません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
@ なくても特に変な動きとは思えないけど?
だからどんなコード書いてるのよ?
PS C:\> 1, 2 | x
BEGIN
PROCESS: 1
PROCESS: 2
END
PS C:\> 1 | x
BEGIN
PROCESS: 1
END
PS C:\> | x
発生場所 行:1 文字:1
+ | x
+ ~
空のパイプ要素は許可されていません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement
@ なくても特に変な動きとは思えないけど?
109デフォルトの名無しさん (ワッチョイ 977c-4W3V)
2023/01/06(金) 21:07:55.59ID:tlJIs+7i0110デフォルトの名無しさん (JP 0Ha3-dD2o)
2023/01/09(月) 23:53:42.00ID:ainDXdRxH すみません拡張子についての質問ですけどここで聞いてもいいですか?
TeraPadでコードを入力し保存したらテキストドキュメントになってしまうのですが
どうやって拡張子を変えたらコマンドブロントと繋がるのでしょうか
すみません初心者なので分かりやすく教えてください
使ってるはwindows11です
TeraPadでコードを入力し保存したらテキストドキュメントになってしまうのですが
どうやって拡張子を変えたらコマンドブロントと繋がるのでしょうか
すみません初心者なので分かりやすく教えてください
使ってるはwindows11です
111デフォルトの名無しさん (ワッチョイ 1176-1Rsz)
2023/01/10(火) 00:28:45.02ID:iF453DR40 explorerの設定で拡張子を表示しろ
あとコマンドプロンプトのつもりで書いたんだろうけど「繋がる」なんて状況が想像できんので何をしたいか書け
あとコマンドプロンプトのつもりで書いたんだろうけど「繋がる」なんて状況が想像できんので何をしたいか書け
112デフォルトの名無しさん (アウアウウー Sa85-AyIk)
2023/01/10(火) 00:58:24.28ID:tyEc5PEMa TeraPad は古いから、新し目の文字コードに対応していないので、サクラエディタを使え
プロは、VSCode, Windows Terminal などを使う
プロは、VSCode, Windows Terminal などを使う
113デフォルトの名無しさん (アウアウウー Sa85-BvPj)
2023/01/10(火) 02:05:23.85ID:wl4CEVDPa >>110
繋がるってのがよく分からないけど、バッチを作りたいなら拡張子を表示してから .bat に変更。プログラムを組みたいなら .cp p に変更だけどmakeファイルを書くつもりはないだろうから、VisualStudioを入れよう
繋がるってのがよく分からないけど、バッチを作りたいなら拡張子を表示してから .bat に変更。プログラムを組みたいなら .cp p に変更だけどmakeファイルを書くつもりはないだろうから、VisualStudioを入れよう
114デフォルトの名無しさん (アウアウウー Sa85-BvPj)
2023/01/10(火) 02:05:51.81ID:wl4CEVDPa .cpp ね
115デフォルトの名無しさん (テテンテンテン MM4b-Kria)
2023/01/10(火) 08:11:58.57ID:j5WRYhpwM >>110
他から指摘されているけど、初心者ならc++用の総合開発環境(IDE)をまずインストールして、IDEの初心者向けガイドをweb で検索して勉強するのが一番良い。
最近のWindowsだとVisual Studio Community Editionが初心者向きかね。
他から指摘されているけど、初心者ならc++用の総合開発環境(IDE)をまずインストールして、IDEの初心者向けガイドをweb で検索して勉強するのが一番良い。
最近のWindowsだとVisual Studio Community Editionが初心者向きかね。
116デフォルトの名無しさん (スプッッ Sdf3-j/Dr)
2023/01/10(火) 08:39:58.49ID:R5XG+hXYd117デフォルトの名無しさん (ワッチョイ b101-tb1I)
2023/01/10(火) 19:07:54.57ID:0yW4rCRf0 C言語の重力付き4目並べです、ここのコードを簡略化したいです。
int SetXpos(int player) // コマの置き場所を入力または探して盤を更新,コマの置き場所(0-6)を返す
{
int xpos = 0; // コマの置き場所
if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) // コンピュータとの対戦の場合に,コンピュータの手を計算
{
xpos = ComputeXpos(player);
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("コンピュータは%dに置きます\n", xpos);
}
else // 人間の手を選択
{
while (1)
{
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("どこに置きますか? 0-6の数字を半角で入力してください: ");
scanf_s("%d", &xpos);
if ((0 <= xpos && xpos < XMAX) && (num[xpos] < YMAX)) // 置ける場所かどうか判定
break;
printf("%dには置けません!\n", xpos);
}
}
board[xpos][num[xpos]++] = player;// コマをxpos列に置き,xpos列のコマ数を1増やす
return xpos;
}
int SetXpos(int player) // コマの置き場所を入力または探して盤を更新,コマの置き場所(0-6)を返す
{
int xpos = 0; // コマの置き場所
if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) // コンピュータとの対戦の場合に,コンピュータの手を計算
{
xpos = ComputeXpos(player);
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("コンピュータは%dに置きます\n", xpos);
}
else // 人間の手を選択
{
while (1)
{
printf("%sの番です\n", player == 1 ? "●" : "〇");
printf("どこに置きますか? 0-6の数字を半角で入力してください: ");
scanf_s("%d", &xpos);
if ((0 <= xpos && xpos < XMAX) && (num[xpos] < YMAX)) // 置ける場所かどうか判定
break;
printf("%dには置けません!\n", xpos);
}
}
board[xpos][num[xpos]++] = player;// コマをxpos列に置き,xpos列のコマ数を1増やす
return xpos;
}
118デフォルトの名無しさん (ワッチョイ 93f0-DSRP)
2023/01/10(火) 19:13:34.86ID:cUqvmTMn0 スレタイが読めないのかよ
119デフォルトの名無しさん (アウアウウー Sa85-DxjU)
2023/01/10(火) 22:47:40.35ID:g+dbPOkMa120デフォルトの名無しさん (ワッチョイ ab02-AyIk)
2023/01/11(水) 18:38:42.97ID:867Mv3q20 C++、Javaがペラペラなら生きていける。
121デフォルトの名無しさん (ワッチョイ 999c-RNTY)
2023/01/11(水) 20:16:16.63ID:tEiwqSvB0 今後はWebフロントエンドの技術もできないと生きていけないよ
122デフォルトの名無しさん (ワッチョイ e1c2-UnWz)
2023/01/11(水) 21:38:40.44ID:pdu3v6T80 職探しがよっぽど大変なのね
123デフォルトの名無しさん (ワッチョイ b101-K0Bq)
2023/01/11(水) 21:58:12.26ID:dMqhutWk0 この先生きのこれるかな?
124デフォルトの名無しさん (ワッチョイ c190-Pmdz)
2023/01/12(木) 14:41:54.35ID:74cXnlqp0125デフォルトの名無しさん (スプッッ Sdb3-j/Dr)
2023/01/12(木) 14:47:05.06ID:OEyZMQ5cd エリンギ舞茸ぶなしめじ
126デフォルトの名無しさん (ワッチョイ b101-tb1I)
2023/01/13(金) 06:37:30.78ID:CqT5d+dn0 @ if ((choice == 2 && player == 2) || (choice == 3 && player == 1))
A if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
B board[xpos][num[xpos]++] = player;
C for (x = 0, y = ypos, n = 0; x < XMAX; x++)
D for (x = xpos, y = 0, n = 0; y <= ypos; y++)
E for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
F for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
G for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
H for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
A if (0 <= xpos && xpos < XMAX && num[xpos] < YMAX)
B board[xpos][num[xpos]++] = player;
C for (x = 0, y = ypos, n = 0; x < XMAX; x++)
D for (x = xpos, y = 0, n = 0; y <= ypos; y++)
E for (x = 0, y = ypos - xpos, n = 0; y < YMAX; x++, y++)
F for (x = xpos - ypos, y = 0, n = 0; x < XMAX; x++, y++)
G for (x = 0, y = xpos + ypos, n = 0; y >= 0; x++, y--)
H for (x = xpos + ypos - YMAX + 1, y = YMAX - 1, n = 0; x < XMAX; x++, y--)
の各条件文内でどーゆー計算、アルゴリズムがされてるか教えてくださる人いますか??
127デフォルトの名無しさん (ワッチョイ 997c-ztiG)
2023/01/13(金) 07:14:01.38ID:Y56iKvHG0 宿題ならまず自分で考えてからどうしても分からない所だけ聞きに来い
128デフォルトの名無しさん (スプッッ Sdf3-j/Dr)
2023/01/13(金) 08:41:01.94ID:hjGlttN/d 宿題スレ行ったら?
129デフォルトの名無しさん (ワッチョイ b101-tb1I)
2023/01/13(金) 09:13:11.98ID:CqT5d+dn0 例えば@だと、&&が論理積、||が論理和ということだと思うんですけど、演算子が分かってもその条件文内で何が行われているかとかが分からないので知りたい状態なんです。。
130デフォルトの名無しさん (アウアウウー Sa85-DH5p)
2023/01/13(金) 09:44:58.05ID:NX/X2xhta131デフォルトの名無しさん (ワッチョイ 93ad-Or7w)
2023/01/13(金) 11:24:51.74ID:6wgE5XmR0 boostの存在意義ってことでいうと、マルチスレッドの並列ソートboost::sort::block_indirect_sort()が使えるのでLinuxなどは有益
Windowsの場合はVC++にconcurrency::parallel_buffered_sort()があるので使わないけど
Windowsの場合はVC++にconcurrency::parallel_buffered_sort()があるので使わないけど
132デフォルトの名無しさん (スプッッ Sdf3-1Rsz)
2023/01/13(金) 11:48:47.80ID:ZURbuhIed133はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 013e-DWwd)
2023/01/13(金) 16:10:50.14ID:ftt2O/+X0134デフォルトの名無しさん (ワッチョイ 999c-Kria)
2023/01/13(金) 17:16:42.47ID:DejIUh+t0 >126が宿題なら授業で演算子の評価順とか短絡評価とかやっているだろ。
ここで質問する前に授業ノートぐらい確認するなり先生に質問するなりしろよ。
ここで質問する前に授業ノートぐらい確認するなり先生に質問するなりしろよ。
135デフォルトの名無しさん (ワッチョイ 0101-K0Bq)
2023/01/13(金) 18:59:56.28ID:NgheavAf0 払った授業料のためにも教師に聞いとけって
136デフォルトの名無しさん (スプッッ Sdf3-NxcN)
2023/01/13(金) 19:05:47.85ID:+0WWfi2gd おまいら
ただのコピペだってのに
親切だな
ただのコピペだってのに
親切だな
137デフォルトの名無しさん (スプッッ Sdb3-j/Dr)
2023/01/13(金) 19:38:21.71ID:4yurTHZ1d マルチ警察は基本アホだから
138デフォルトの名無しさん (アウアウウー Sa91-91zk)
2023/01/14(土) 17:02:55.96ID:oDbFkQuTa 普通に単にソートしたい場合はどんなコードになる?
方言なしで
方言なしで
139デフォルトの名無しさん (ワッチョイ 297c-nj5L)
2023/01/14(土) 17:03:39.93ID:euxRDNh80 std::sortを使う
140デフォルトの名無しさん (ワッチョイ 1dc2-K8ze)
2023/01/15(日) 09:58:07.55ID:/n5l5Pop0 同じく
質問の意図がわからんな
質問の意図がわからんな
141デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/15(日) 18:50:51.76ID:IyvDeUGt0 質問なのですがintやdoubleといった単純な型のグローバル変数の初期化タイミングは
グローバルなオブジェクトの初期化タイミングより前であることが保証される?
多分 .dataセクションの初期化はグローバルなオブジェクトの初期化リストの実行より前だと思うんだけど
(そうでなければコンストラクタからC言語のライブラリを安心して呼べないということになる
規格的にそうなん?
グローバルなオブジェクトの初期化タイミングより前であることが保証される?
多分 .dataセクションの初期化はグローバルなオブジェクトの初期化リストの実行より前だと思うんだけど
(そうでなければコンストラクタからC言語のライブラリを安心して呼べないということになる
規格的にそうなん?
142はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed3e-w88e)
2023/01/15(日) 19:52:54.05ID:1ER4Wl/40 >>141
静的初期化と動的初期化に大別されている。
初期化子が定数 (定数式) のものは静的初期化で、
そうではないものが動的初期化。
静的初期化は動的初期化より先であることは言語仕様で保証される。
静的初期化と動的初期化に大別されている。
初期化子が定数 (定数式) のものは静的初期化で、
そうではないものが動的初期化。
静的初期化は動的初期化より先であることは言語仕様で保証される。
143デフォルトの名無しさん (テテンテンテン MMde-N6nD)
2023/01/16(月) 08:14:19.28ID:X/jbWDD/M >>141
記憶が確かなら、c++の関数スコープのstatic変数は呼び出し時に初期化されることが保証されているので、初期化順を細かく決める必要がある場合は関数のstatic変数を使う。
記憶が確かなら、c++の関数スコープのstatic変数は呼び出し時に初期化されることが保証されているので、初期化順を細かく決める必要がある場合は関数のstatic変数を使う。
144デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:24:41.20ID:J3mmTfbR0145デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:26:34.64ID:J3mmTfbR0 訂正orz
×: (初期化済フラグがfalseならnewに進む、というのをアトミックにやる
○: (初期化済フラグがfalseならtrueにする、というのをアトミックにやって、false→trueに変化したときだけnewする
×: (初期化済フラグがfalseならnewに進む、というのをアトミックにやる
○: (初期化済フラグがfalseならtrueにする、というのをアトミックにやって、false→trueに変化したときだけnewする
146デフォルトの名無しさん (ワッチョイ 6a28-TTdX)
2023/01/16(月) 23:33:23.86ID:J3mmTfbR0 とオモタがよく考えたら初期化済フラグがfalseならtrueに変化してからポインタpにnewされるまでの間に
別のスレッドが割り込んできてpを使おうとしたら破綻するからpを獲得できるまでスピンロック的に回ることが必要やったorz
ワイの答えはこれや……!
別のスレッドが割り込んできてpを使おうとしたら破綻するからpを獲得できるまでスピンロック的に回ることが必要やったorz
ワイの答えはこれや……!
147デフォルトの名無しさん (ワッチョイ caad-f6s+)
2023/01/18(水) 09:55:18.36ID:1kekdbbc0 今さらだけどさ、以下Perlソースコードみたいに初期化以外の場所で複数の変数代入を一行で記述できたら楽だよね。
($a, $b) = (1, 2);
($a, $b) = (1, 2);
148デフォルトの名無しさん (ワッチョイ 299c-N6nD)
2023/01/18(水) 10:18:29.33ID:kAps0iiP0 >>144
c++11からブロックスコープを持つstatic変数初期化はスレッドセーフだから、手動でやる必要ないんじゃない?
c++11からブロックスコープを持つstatic変数初期化はスレッドセーフだから、手動でやる必要ないんじゃない?
149デフォルトの名無しさん (ブーイモ MMb9-VlC0)
2023/01/18(水) 12:33:33.72ID:953Yg8XVM >>147
それ楽なん?
それ楽なん?
150デフォルトの名無しさん (テテンテンテン MMde-N6nD)
2023/01/18(水) 12:45:50.93ID:f+Qa9vK4M パターンマッチングとか単一化が欲しいという話じゃないの?
151デフォルトの名無しさん (ブーイモ MM2e-CztN)
2023/01/18(水) 12:49:04.55ID:aansOABgM 複数のことやってんだから複数行で書け
それかそんなにまとまり強いならラップしろ
それかそんなにまとまり強いならラップしろ
152デフォルトの名無しさん (ブーイモ MMb9-VlC0)
2023/01/18(水) 12:57:11.05ID:953Yg8XVM 俺もPerl使ってた頃に初期化で書いたことはあるけど、正直初期化以外での使い道ない気がする
rustのパターマッチは欲しい気がする
rustのパターマッチは欲しい気がする
153デフォルトの名無しさん (アウアウウー Sa91-ue0x)
2023/01/18(水) 19:31:01.29ID:x7mTRTnwa154デフォルトの名無しさん (ワッチョイ 4a7f-7DGa)
2023/01/18(水) 19:47:26.33ID:ZIWa3HiO0 int a, b;
tie(a, b) = tuple(1, 2);
tie(a, b) = tuple(b, a);
一応できなくはない。交換はswap(a, b)でいいけどね
tie(a, b) = tuple(1, 2);
tie(a, b) = tuple(b, a);
一応できなくはない。交換はswap(a, b)でいいけどね
155デフォルトの名無しさん (ワッチョイ 06bb-udV4)
2023/01/19(木) 20:52:51.98ID:Np6xvJtm0 つauto [a, b] = tuple(1, 2)
156デフォルトの名無しさん (ブーイモ MM2e-CztN)
2023/01/19(木) 20:59:17.18ID:MTxEyC+IM 書記か以外って話なんだが……
157147 (ワッチョイ caad-f6s+)
2023/01/19(木) 21:22:03.00ID:4HhHC5J20 解決方法を探しているんじゃなくて、言語仕様の変更提案なんだけど
改めてPerlだと以下のような感じ
use strict;
my ($a, $b) = ('AAA', 'BBB');
($a, $b) = ('YYY', 'ZZZ');
改めてPerlだと以下のような感じ
use strict;
my ($a, $b) = ('AAA', 'BBB');
($a, $b) = ('YYY', 'ZZZ');
158デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/19(木) 22:28:47.56ID:j0bW1DQy0 >>157
誰得?何得?
誰得?何得?
159デフォルトの名無しさん (ワッチョイ cdf0-iODI)
2023/01/19(木) 22:42:23.23ID:SyYOdr8r0 戻り値が1個だけ
どれを戻り値にするかで迷う
この辺はC++の欠点だと思う
どれを戻り値にするかで迷う
この辺はC++の欠点だと思う
160デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/19(木) 23:07:21.11ID:j0bW1DQy0 >>159
構造体で戻せばいいですよ、KR2 から構造体の実体というかコピーが返ってきますから、それこそ3個でも4個でもお好きに
構造体で戻せばいいですよ、KR2 から構造体の実体というかコピーが返ってきますから、それこそ3個でも4個でもお好きに
161デフォルトの名無しさん (ワッチョイ cdf0-iODI)
2023/01/19(木) 23:30:55.46ID:SyYOdr8r0 >>160
アホ
アホ
162147 (ワッチョイ caad-f6s+)
2023/01/19(木) 23:36:31.49ID:4HhHC5J20 複数個の変数に対する初期化のワンライナー記述(本当は初期化なので代入ではないが)が許されるなら、再初期化もワンライナー記述できていいと思うんだ
163デフォルトの名無しさん (ワッチョイ 06bb-udV4)
2023/01/19(木) 23:47:19.80ID:Np6xvJtm0 rvoが働くんだからタプルでも返せばいいのでは?
164デフォルトの名無しさん (アウアウウー Sa91-ue0x)
2023/01/20(金) 06:46:04.32ID:2AltcjPFa >>160
このためだけに構造体定義したりするとかアホの極みだろ...
このためだけに構造体定義したりするとかアホの極みだろ...
165デフォルトの名無しさん (スプッッ Sdca-X4Hx)
2023/01/20(金) 07:13:16.62ID:24yH8jzyd つtuple
166デフォルトの名無しさん (ワッチョイ 09f4-f6s+)
2023/01/20(金) 13:36:18.44ID:yONvkjD90 C++の新しい規格で複数個戻せるっての見た事あるが、気のせいか。
167デフォルトの名無しさん (ブーイモ MMde-VlC0)
2023/01/20(金) 14:39:16.65ID:7GHMGQ2oM うーん、やっぱり初期化以外での使い道がわからん
168はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 14:46:45.60ID:FDJF8fJ70169デフォルトの名無しさん (ワッチョイ caf0-7DGa)
2023/01/20(金) 15:19:11.41ID:MVRwt7H80 戻り値の型推論の規則が厳しいせいでtupleも微妙に使いづらい
170デフォルトの名無しさん (ブーイモ MMea-CztN)
2023/01/20(金) 16:25:40.34ID:g6yuQGRiM (x, y) = (x+y, y-x)
とか
とか
171デフォルトの名無しさん (ワッチョイ 09f4-f6s+)
2023/01/20(金) 16:26:57.09ID:yONvkjD90 >>168
修行いたします。mOm
修行いたします。mOm
172はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 16:50:23.92ID:FDJF8fJ70 std::tie や std::tuple ってそんなに長い名前でもないし、
C++ のややこしい文法をもっとややこしくしてまで
専用の分割代入の構文が欲しいかな?
C++ のややこしい文法をもっとややこしくしてまで
専用の分割代入の構文が欲しいかな?
173デフォルトの名無しさん (スプッッ Sdca-X4Hx)
2023/01/20(金) 17:54:27.63ID:o1hw1lmid いらんよな
174デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:14:48.86ID:5b5Mr70bd 欠点なのは間違いない
175デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:15:46.20ID:5b5Mr70bd C++は欠点が非常に多い
176147 (ワッチョイ caad-f6s+)
2023/01/20(金) 18:20:37.41ID:yyzNyqnf0 構造体のメンバ変数の再初期化を一行ですませたい需要、どうかな
177はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 18:21:31.76ID:FDJF8fJ70 それはそう。
178はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0a3e-w88e)
2023/01/20(金) 18:22:22.62ID:FDJF8fJ70 C++ に欠点が多いのなんてイマサラな話だろ。
179デフォルトの名無しさん (スップ Sdea-iODI)
2023/01/20(金) 18:29:58.45ID:MjTZXIi3d はちみつも欠点が多い
180デフォルトの名無しさん (ワッチョイ 299c-N6nD)
2023/01/20(金) 19:33:42.78ID:/4tVg7x40181デフォルトの名無しさん (ワッチョイ f97f-VlC0)
2023/01/20(金) 20:55:20.44ID:HgRp3cSY0 再初期化ってのがまず無いかな
182デフォルトの名無しさん (ワッチョイ 1d46-K8ze)
2023/01/20(金) 21:12:53.47ID:bX3yX62I0 代入なら普通にあるね
183デフォルトの名無しさん (ワッチョイ 2a47-w88e)
2023/01/20(金) 21:59:52.24ID:vRsHomcy0 >>164
単に名前付きタプルが欲しくてもない、というか名前付きタプルは限りなく構造体に近いというだけですよ
新しいものに飛びつく前に K&R2 以来の伝統の重みを評価するべきでしょう、型推論を併用すれば記述量も抑えることができますよ
https://marycore.jp/prog/cpp/anonymous-struct-tuple/
単に名前付きタプルが欲しくてもない、というか名前付きタプルは限りなく構造体に近いというだけですよ
新しいものに飛びつく前に K&R2 以来の伝統の重みを評価するべきでしょう、型推論を併用すれば記述量も抑えることができますよ
https://marycore.jp/prog/cpp/anonymous-struct-tuple/
184デフォルトの名無しさん (ワッチョイ a501-ue0x)
2023/01/20(金) 22:14:16.78ID:bK8iHZlj0 >>183
で、初期化じゃなくて代入はできるの?
で、初期化じゃなくて代入はできるの?
185デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 00:47:37.77ID:SJ/UeQbF0 >>176
どう書きたいのかいまいち分からん
どう書きたいのかいまいち分からん
186デフォルトの名無しさん (ワッチョイ 7f47-j5s0)
2023/01/21(土) 10:30:12.76ID:PxhUXXTz0187デフォルトの名無しさん (スプッッ Sd1f-N2va)
2023/01/21(土) 10:33:35.82ID:ITn943ohd tieって答え出てるのに気がついてないのかね
188デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/21(土) 12:44:01.44ID:p4hNMN+0d 使いにくすぎて使われない
189デフォルトの名無しさん (アウアウウー Saa7-WyxW)
2023/01/21(土) 13:11:10.71ID:Wi64nLVza190147 (ワッチョイ ffad-88l+)
2023/01/21(土) 14:45:55.24ID:4IvYDHHD0 HOGE構造体インスタンス hogeのメンバfooとbarだけを再設定したい時に、hogeというインスタンス文字列を何度も書かずに済むような仕組みあればいいなあ
HOGE hoge = {0};
do_something(hoge);
hoge.[foo, bar] = [1, 2];
HOGE hoge = {0};
do_something(hoge);
hoge.[foo, bar] = [1, 2];
191デフォルトの名無しさん (ワッチョイ cff2-BvhM)
2023/01/21(土) 15:22:29.46ID:G9LOOV8U0 そういうメソッドを用意するんだよ
192デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 15:42:11.09ID:jQCz8FAl0 ClassName::enumElementという書き方で列挙体の要素を直接持ってこれるクラスを見かけたんですが
どうやってやってるんですか?
定義見てもよくわかりませんでした
どうやってやってるんですか?
定義見てもよくわかりませんでした
193はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 15:48:28.56ID:AnImjWZM0 >>192
enum class と enum が別物だってのは知ってる?
enum class と enum が別物だってのは知ってる?
194デフォルトの名無しさん (ワッチョイ 337c-1i5X)
2023/01/21(土) 15:51:00.78ID:5FsD11Dw0 よくわからんがこれのことならenumは外のスコープに漏洩するから出来る
嫌ならenum classにする
class Foo{
public:
enum{HOGE, FUGA,};
};
int main(){
std::cout << Foo::HOGE;
}
嫌ならenum classにする
class Foo{
public:
enum{HOGE, FUGA,};
};
int main(){
std::cout << Foo::HOGE;
}
195デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 15:52:32.72ID:SJ/UeQbF0 >>192
何を書いているのかいまいち分からん
struct ClassName {
enum {
enumElement
};
};
int main () {
std::cout << ClassName::enumElement << '\n';
return 0;
}
何を書いているのかいまいち分からん
struct ClassName {
enum {
enumElement
};
};
int main () {
std::cout << ClassName::enumElement << '\n';
return 0;
}
196デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 20:19:12.82ID:jQCz8FAl0 説明がへたくそですみません
ClassName::EnumName::elementと書かないといけないところを、
途中のEnumNameを省略して使えるようになってます
>>193
普通のenumでした
ClassName::EnumName::elementと書かないといけないところを、
途中のEnumNameを省略して使えるようになってます
>>193
普通のenumでした
197デフォルトの名無しさん (ドコグロ MMdf-Ymzw)
2023/01/21(土) 20:30:34.45ID:2W6/mmpkM 普通のenumならEnumName::つかないよ
トップレベルに置いたenumもEnumName::つかないでしょ
トップレベルに置いたenumもEnumName::つかないでしょ
198はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 20:43:48.05ID:AnImjWZM0199はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/21(土) 20:44:29.11ID:AnImjWZM0 >>198
C の列挙子は C++ と違ってファイルスコープなので C で仕様に適合するものが C++ ではそうなない場合もあるけど……。
たとえばこういうのは C では通るが C++ ではエラー。
#include <stdio.h>
int main(void) {
struct foo { enum bar { baz } qux; };
int n = baz;
printf("%d\n", n);
}
C の列挙子は C++ と違ってファイルスコープなので C で仕様に適合するものが C++ ではそうなない場合もあるけど……。
たとえばこういうのは C では通るが C++ ではエラー。
#include <stdio.h>
int main(void) {
struct foo { enum bar { baz } qux; };
int n = baz;
printf("%d\n", n);
}
200デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/21(土) 22:18:57.09ID:SJ/UeQbF0 >>196
enumとenum classの違いは分かってるんだよね?
#include <iostream>
using namespace std;
struct ClassName {
enum enumElement {element};
enum class enumclassElement {element};
};
int main () {
cout << ClassName::element << '\n'
<< static_cast <int> (ClassName::enumclassElement::element) << '\n';
return 0;
}
enumとenum classの違いは分かってるんだよね?
#include <iostream>
using namespace std;
struct ClassName {
enum enumElement {element};
enum class enumclassElement {element};
};
int main () {
cout << ClassName::element << '\n'
<< static_cast <int> (ClassName::enumclassElement::element) << '\n';
return 0;
}
201デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/21(土) 22:54:59.54ID:jQCz8FAl0202デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 17:51:51.29ID:mu8Nl5mu0 pythonのdecimalで2^256倍精度浮動小数点数の最大値を計算してみた。
https://ideone.com/aCP13Y
mpmathで検算もした。(桁数と先頭から千桁程度まで)
これらはC++だとどういうプログラムになるの?
メモリの容量から全桁の出力や検算は無理だと分かるが、できれば検算して戴きたい。
https://ideone.com/aCP13Y
mpmathで検算もした。(桁数と先頭から千桁程度まで)
これらはC++だとどういうプログラムになるの?
メモリの容量から全桁の出力や検算は無理だと分かるが、できれば検算して戴きたい。
203デフォルトの名無しさん (ラクッペペ MM7f-qqxO)
2023/01/22(日) 18:33:56.85ID:vg7X6MkGM IEEE 754で規格化されてる
204デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 18:53:45.43ID:mu8Nl5mu0 >>203
IEEE754準拠での値で計算してみた。
pythonのdecimalのlogでも検算したので多分合っていると思うが、
C++のプログラムだとどのように計算するのかな?という素朴な疑問です。
ideoneのc++だけでできる?
GMPあたりの任意精度パッケージとか必要になるのかな?
IEEE754準拠での値で計算してみた。
pythonのdecimalのlogでも検算したので多分合っていると思うが、
C++のプログラムだとどのように計算するのかな?という素朴な疑問です。
ideoneのc++だけでできる?
GMPあたりの任意精度パッケージとか必要になるのかな?
205デフォルトの名無しさん (ワッチョイ 4376-gzmJ)
2023/01/22(日) 19:56:25.38ID:6lZDc9UV0 C++標準ライブラリにはないから外部ライブラリに頼ることになる
ideoneがそれ用のライブラリを持ってるか知らんから頑張って探すしかない
ideoneがそれ用のライブラリを持ってるか知らんから頑張って探すしかない
206デフォルトの名無しさん (ワッチョイ 6f8c-Grv2)
2023/01/22(日) 20:32:22.10ID:9f7YJXTs0207デフォルトの名無しさん (ワッチョイ 4310-Jpma)
2023/01/22(日) 20:43:06.21ID:mu8Nl5mu0 参考にします。どうもありがとう。
208デフォルトの名無しさん (ワッチョイ d3bb-j5s0)
2023/01/23(月) 02:24:27.76ID:6OKqnjyz0 C++って最初のバージョンはC言語で開発されましたか?
どこかその話のソースありませんか?
どこかその話のソースありませんか?
209デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/23(月) 07:10:57.25ID:HN6zkKZyd cfrontはC++をCに翻訳するトランスレータ
というのはソースにならんか?
というのはソースにならんか?
210デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/23(月) 08:01:54.02ID:eLWdsBBpM >>208
「C++の設計と進化」を読め。
「C++の設計と進化」を読め。
211デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/23(月) 08:27:15.10ID:ntFDJsM90 C言語がC++から派生したというのは本当の話ですか?
212デフォルトの名無しさん (ワッチョイ ffad-88l+)
2023/01/23(月) 09:40:42.62ID:K1n6gQar0 >>211
あなたがウソである証拠を示せばいいだけ。他者に証拠を求めてはいけない。
あなたがウソである証拠を示せばいいだけ。他者に証拠を求めてはいけない。
213デフォルトの名無しさん (ワイーワ2 FFdf-1H6R)
2023/01/23(月) 10:00:24.86ID:6gVuxkoXF polymorphic_allocatorなんでコピーでresource伝播してくれないんだ・・・
214はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-j5s0)
2023/01/23(月) 13:17:00.05ID:WcsuDU3H0 >>211
C が始まったとき (1972 年) に C++ は無い。
C++ の前身である C with Classes の歴史の始まりは 1979 年で、そのときは
C のプリプロセッサとして書かれていたしあくまでも C の拡張と見なされていた。
後に C は C++ からかなり多くを取り入れることになるし
現在進行形で取り入れてもいるが、それを「派生」とは普通は呼ばない。
普通は呼ばないがそこらへんは言葉の定義の問題なので「派生」という言葉の
定義によっては無理すれば派生と呼べなくもないかもね。
C が始まったとき (1972 年) に C++ は無い。
C++ の前身である C with Classes の歴史の始まりは 1979 年で、そのときは
C のプリプロセッサとして書かれていたしあくまでも C の拡張と見なされていた。
後に C は C++ からかなり多くを取り入れることになるし
現在進行形で取り入れてもいるが、それを「派生」とは普通は呼ばない。
普通は呼ばないがそこらへんは言葉の定義の問題なので「派生」という言葉の
定義によっては無理すれば派生と呼べなくもないかもね。
215デフォルトの名無しさん (ワッチョイ d3bb-j5s0)
2023/01/23(月) 14:21:27.16ID:6OKqnjyz0216デフォルトの名無しさん (ワッチョイ 736b-li2T)
2023/01/26(木) 06:18:10.77ID:nnR+UHRw0 名前付き引数標準化への動向って今どうなん
標準化はしないから各自勝手にやってねって感じ?
標準化はしないから各自勝手にやってねって感じ?
217デフォルトの名無しさん (ワッチョイ e397-li2T)
2023/01/26(木) 07:48:33.46ID:XZjGtAvJ0 class A{
public:
void operator () () {...}
};
class B : public A{
void func(){
ここでオペレータ()を呼びたいとき、(*this)()としたら呼べますが、this→()では呼べませんでした。
なぜでしょうか?
}
};
public:
void operator () () {...}
};
class B : public A{
void func(){
ここでオペレータ()を呼びたいとき、(*this)()としたら呼べますが、this→()では呼べませんでした。
なぜでしょうか?
}
};
218デフォルトの名無しさん (ガックシ 067f-Ck/1)
2023/01/26(木) 08:02:56.89ID:HqVXg6xF6 >>217
オペレータが左右にとるのは引数でthis->だけだと型が違うから?
オペレータが左右にとるのは引数でthis->だけだと型が違うから?
219デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/26(木) 08:03:37.78ID:fdXxt+2fM220デフォルトの名無しさん (ワッチョイ e3f0-kZgD)
2023/01/26(木) 09:02:29.12ID:UDXsjb/60 メソッド
221はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/26(木) 11:28:53.15ID:Y60o/Mze0 × メソッド
〇 メンバ関数
〇 メンバ関数
222デフォルトの名無しさん (ワッチョイ e3da-c8s6)
2023/01/26(木) 11:34:13.17ID:EgU8zvdT0 さてはDelphiやってたな
223デフォルトの名無しさん (ワッチョイ cf02-li2T)
2023/01/26(木) 12:10:18.58ID:2OqTfEEK0 >>219様のやり方でできました皆様ありがとうございます
224デフォルトの名無しさん (ワッチョイ cf02-li2T)
2023/01/26(木) 12:11:12.58ID:2OqTfEEK0 すみませんもう一個質問させてください。
template<class T> class A{
public:
void f(){…}
};
template<class T> class B : public A<T>{
public:
void g(){f();}
};
というコードがあったとき、g 内の f が undeclared identifier だというエラーが出ますよね?
T が不明だからそうなるのだと説明されてるのを見たのですが、T はコンパイル時には確定してるのになぜダメなのでしょうか。
template<class T> class A{
public:
void f(){…}
};
template<class T> class B : public A<T>{
public:
void g(){f();}
};
というコードがあったとき、g 内の f が undeclared identifier だというエラーが出ますよね?
T が不明だからそうなるのだと説明されてるのを見たのですが、T はコンパイル時には確定してるのになぜダメなのでしょうか。
225デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/26(木) 12:18:25.89ID:epYCai+9d template<>class A<void>{};
のようにf()のない特殊化をされる
可能性があるってことさ
のようにf()のない特殊化をされる
可能性があるってことさ
226デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/26(木) 12:30:19.94ID:eBsKw41eM227デフォルトの名無しさん (スップ Sd1f-N2va)
2023/01/26(木) 13:28:25.80ID:epYCai+9d SFINAEに使う技
228デフォルトの名無しさん (ワッチョイ 139b-li2T)
2023/01/26(木) 14:00:57.20ID:+VNq3wn00229デフォルトの名無しさん (ワッチョイ c35f-j5s0)
2023/01/26(木) 14:08:41.08ID:UQ2YAYq30 this->f で済むだろうに、設計を変えるほどのことなのか。
230デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 14:16:44.11ID:WpjBlsOj0231デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 14:17:00.65ID:WpjBlsOj0232デフォルトの名無しさん (ワッチョイ 4376-YIrE)
2023/01/26(木) 20:20:42.59ID:yE3XErdV0 すでに出てるけどA<T>が何者か確定してないので、
(B<int>とかの具体的な型が決まる時ではなく)テンプレート宣言時にエラーになる。
template<class T> class B : public A<T>{
using A<T>::f;
public:
void g(){f();}
};
のように親クラスA<T>にメンバーfがいることを宣言してやればテンプレート宣言自体は通る。
(B<int>とかの具体的な型が決まる時ではなく)テンプレート宣言時にエラーになる。
template<class T> class B : public A<T>{
using A<T>::f;
public:
void g(){f();}
};
のように親クラスA<T>にメンバーfがいることを宣言してやればテンプレート宣言自体は通る。
233デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 22:25:04.25ID:WpjBlsOj0234デフォルトの名無しさん (ワッチョイ 5310-8jlp)
2023/01/26(木) 23:06:43.67ID:RzvFLRxY0235デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 23:24:47.70ID:WpjBlsOj0236デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/26(木) 23:24:56.86ID:WpjBlsOj0237デフォルトの名無しさん (ワッチョイ 736b-li2T)
2023/01/27(金) 08:40:23.26ID:m0DNDaLC0 テンプレート引数の取得ってどうやるんでしたっけ?
template<int N = 100> class A{
...
};
class B : public A<>{
ここから N (=100) が見えなくて困ってます。
};
template<int N = 100> class A{
...
};
class B : public A<>{
ここから N (=100) が見えなくて困ってます。
};
238デフォルトの名無しさん (ワッチョイ 337c-1i5X)
2023/01/27(金) 08:43:39.83ID:dyzf+7Sd0 Aの中にstatic const int nankanokosuu = N;とか定義しておく
239デフォルトの名無しさん (ワッチョイ b321-Pfi1)
2023/01/27(金) 08:49:13.97ID:zx6ru0te0 >>237
class B : public A<>{
template <template<int> class T, int N> int func(T<N>*) { return N; }
public:
void test()
{
cout << func(this);
}
};
class B : public A<>{
template <template<int> class T, int N> int func(T<N>*) { return N; }
public:
void test()
{
cout << func(this);
}
};
240デフォルトの名無しさん (ラクッペペ MM7f-YWJ8)
2023/01/27(金) 10:58:57.46ID:IAqgV/bpM241デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/27(金) 12:06:29.37ID:RdqQfVtbd 性能やリソースと引き換えに楽をする為のものだから
242デフォルトの名無しさん (テテンテンテン MM7f-Grv2)
2023/01/27(金) 12:26:38.33ID:5C1cxDcZM >>240
std::vectorユーザーが直書きとか不可能だろ。
std::vectorユーザーが直書きとか不可能だろ。
243デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/27(金) 12:32:39.32ID:RdqQfVtbd 丸々作る必要なんか無いんだよ
244デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/27(金) 12:35:25.48ID:RdqQfVtbd 小規模組み込みならそもそもnewやdeleteが使えない環境もある
Cより便利な記述が出来るからC++を使うというだけ
Cより便利な記述が出来るからC++を使うというだけ
245デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/27(金) 12:52:45.15ID:jcVBWYEq0246デフォルトの名無しさん (ワッチョイ c35f-j5s0)
2023/01/27(金) 13:48:07.44ID:a+0fKe/I0 >>240-241 テンプレートで性能やリソースを引き換えにすることなんか無いだろ。
・・・コンパイラの処理時間やメモリ消費の話ならあると思うけど、そういう話?
・・・コンパイラの処理時間やメモリ消費の話ならあると思うけど、そういう話?
247デフォルトの名無しさん (スププ Sd1f-qKKb)
2023/01/27(金) 13:51:05.37ID:mIJqx29Ld マジレスすると C++ のテンプレで頑張るより
Nim 使った方が楽だし時間の節約になるよ
Nim 使った方が楽だし時間の節約になるよ
248デフォルトの名無しさん (スップ Sd1f-kZgD)
2023/01/27(金) 14:14:37.74ID:RdqQfVtbd >>246
組み込みのチープな環境のプログラムを組んで見ればわかるよ
組み込みのチープな環境のプログラムを組んで見ればわかるよ
249デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 14:40:15.09ID:7yNCo9mI0 >>240
ヘボなんだね
ヘボなんだね
250デフォルトの名無しさん (ワッチョイ 735f-Ymzw)
2023/01/27(金) 14:50:32.81ID:MqPTrKVr0 コードサイズは確かに増えるだろうが、性能は本当に測ったんか?
251デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 16:10:15.39ID:k7iFif1Jd チープな環境ではコードサイズが増えるのは致命的
252デフォルトの名無しさん (ワッチョイ c35f-j5s0)
2023/01/27(金) 16:17:02.37ID:a+0fKe/I0253はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/27(金) 16:29:51.65ID:B8oMym/70 >>246
テンプレート自体が実行性能の足を引っ張るってことはないが
個々の場面でより性能よく書けるはずのときに汎用部品で済ましてしまうってことはあるんじゃない?
そういうときでも個々の箇所をいじるよりは特殊化を足すだけで済むほうが楽だと思うが。
テンプレート自体が実行性能の足を引っ張るってことはないが
個々の場面でより性能よく書けるはずのときに汎用部品で済ましてしまうってことはあるんじゃない?
そういうときでも個々の箇所をいじるよりは特殊化を足すだけで済むほうが楽だと思うが。
254デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 16:34:12.21ID:k7iFif1Jd 同じ結果になるように書けばそりゃ同じだろう
テンプレートで楽をすればコードは(一般的には)増える
memcpyで済む物が
型別にコードが発生したり
そういう所を気にすると結局楽が出来ない
テンプレートで楽をすればコードは(一般的には)増える
memcpyで済む物が
型別にコードが発生したり
そういう所を気にすると結局楽が出来ない
255デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 16:37:07.22ID:k7iFif1Jd256デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 16:40:41.26ID:k7iFif1Jd 10種類のテンプレート引数で使うコードは
基本的には10個のバイナリが生成される
10種類手で書けば
当然コードの共通化を(人間が)考える
基本的には10個のバイナリが生成される
10種類手で書けば
当然コードの共通化を(人間が)考える
257はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/27(金) 17:11:02.52ID:B8oMym/70258デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 17:18:26.40ID:k7iFif1Jd259デフォルトの名無しさん (ワッチョイ 7f6a-HXiP)
2023/01/27(金) 17:22:03.06ID:6glVv8Ll0 Embedded C++やってろ
260デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 17:22:16.96ID:7yNCo9mI0 非力なハードで無理目なことをギリ勝負でやるときはアセンブラだろ
261デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 17:22:48.21ID:k7iFif1Jd 実際PC用コードの多くは組み込みでは全く使えず
ほとんどゼロからの開発になる
ほとんどゼロからの開発になる
262デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 17:24:10.47ID:k7iFif1Jd263デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/27(金) 17:24:25.29ID:6ZIN/roZ0 そういう環境ってそもそも標準ライブラリ揃ってなかったりしない?このスレで扱う必要ある?
264デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 17:25:27.76ID:k7iFif1Jd >>263
標準ライブラリのスレではないから
標準ライブラリのスレではないから
265デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 17:32:21.49ID:k7iFif1Jd ぬるま湯環境しか知らないはちみつ
もう少し視野を広げた方が良いかと
もう少し視野を広げた方が良いかと
266デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 17:50:48.85ID:7yNCo9mI0 なんかやたらマウント取りたがるな
267デフォルトの名無しさん (ワッチョイ fff0-Jpma)
2023/01/27(金) 17:55:50.00ID:6ZIN/roZ0 学校でC++03教えてそう(笑)
268はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/27(金) 18:01:40.26ID:B8oMym/70 ワイは Z80 時代を生きたおじさんやぞ。
いまどきチープな組み込みでも最初からそんなカリカリにチューニングするのはそんなにないやろ。
無いとは言わんけど C++ の利用例としては例外的やわ。
いまどきチープな組み込みでも最初からそんなカリカリにチューニングするのはそんなにないやろ。
無いとは言わんけど C++ の利用例としては例外的やわ。
269デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 18:16:51.47ID:tKRPgB5dd カリカリチューンとぬるま湯コーディング
はちみつの頭の中はどっちかしか存在しないのかよ
はちみつの頭の中はどっちかしか存在しないのかよ
270デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 18:24:03.96ID:7yNCo9mI0 人のことを小馬鹿にするだけなやつ出てけよ
プログラム技術の話の邪魔だ
プログラム技術の話の邪魔だ
271デフォルトの名無しさん (スプッッ Sd47-kZgD)
2023/01/27(金) 18:25:43.08ID:ESaqgTdPd272デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 18:28:51.80ID:7yNCo9mI0 は? 俺は技術の話をしている
途中で根拠も挙げずに変なことを言うやつにチクリとやったが
貴様と違いそれだけじゃねえんだよボケ
途中で根拠も挙げずに変なことを言うやつにチクリとやったが
貴様と違いそれだけじゃねえんだよボケ
273デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 18:30:54.17ID:cYktn2Sdd 根拠あるじゃん
274デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 18:31:53.95ID:cYktn2Sdd おれがいくつか書いた
275デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 18:32:25.20ID:7yNCo9mI0 どこにだよ
しどろもどろな返事だなスカタン
しどろもどろな返事だなスカタン
276デフォルトの名無しさん (スプッッ Sd1f-kZgD)
2023/01/27(金) 18:33:01.59ID:cYktn2Sdd 日本語読めない人かな?
277デフォルトの名無しさん (ワッチョイ d312-Pfi1)
2023/01/27(金) 18:38:13.74ID:7yNCo9mI0 ないものは示せないもんな
せいぜいそんな言い訳にもなってないことを勝手にぬかしてろ
俺はこれから夕飯作らにゃならんし害虫が出てくのを待つ意味でもしばらく落ちる
せいぜいそんな言い訳にもなってないことを勝手にぬかしてろ
俺はこれから夕飯作らにゃならんし害虫が出てくのを待つ意味でもしばらく落ちる
278はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f3e-j5s0)
2023/01/27(金) 19:53:44.64ID:B8oMym/70279デフォルトの名無しさん (ワッチョイ 5310-xn9V)
2023/01/27(金) 19:59:17.27ID:RxpK1TrS0 10種類とかで肥大するのはテンプレートなのにデカい関数作るからやろ
共通化できる部分は型に依存しない箇所だからテンプレートだろうと外に出せる
共通化できる部分は型に依存しない箇所だからテンプレートだろうと外に出せる
280デフォルトの名無しさん (ワッチョイ 6301-H6v1)
2023/01/27(金) 22:01:21.69ID:GkVPt6s00 >>270
それお前やろ
それお前やろ
281デフォルトの名無しさん (ワッチョイ 0301-SUdz)
2023/01/27(金) 22:06:41.58ID:rBkTgp9F0 www
282デフォルトの名無しさん (ワッチョイ ffad-88l+)
2023/01/27(金) 22:15:36.78ID:y5pwToDP0 孤独のグルメじゃないけど「こういうのでいいんだよ」が最適解なこと多いよな、C/C++
283デフォルトの名無しさん (ワッチョイ e3da-c8s6)
2023/01/27(金) 22:37:05.53ID:kTII8Zcn0 あまりゴチャゴチャさせずにシンプルイズベストよな
284デフォルトの名無しさん (ブーイモ MM7f-snR2)
2023/01/27(金) 22:40:45.09ID:Tnyv3fMqM C++20 のビューとやらを使ってみてるんだがデバッガで見づらすぎるのどうにかならん?
285デフォルトの名無しさん (オイコラミネオ MM07-lPZJ)
2023/01/27(金) 23:34:33.68ID:qVpyYaSyM >>237
template<int N = 100> class A{
static int nnn{N};
};
とすると、
A<123>::nnn が 123 になるはず。
static を付けない場合は、インタンスオブジェクトに対して取得できる。
template<int N = 100> class A{
static int nnn{N};
};
とすると、
A<123>::nnn が 123 になるはず。
static を付けない場合は、インタンスオブジェクトに対して取得できる。
286デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/28(土) 15:20:49.48ID:x4SDzju+0 これは>>239が面白いな
287デフォルトの名無しさん (ワッチョイ 1a34-5WkL)
2023/01/28(土) 15:29:40.57ID:ys7yM/+j0288デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/28(土) 15:40:35.35ID:x4SDzju+0289デフォルトの名無しさん (ワッチョイ db76-xF8Z)
2023/01/28(土) 16:15:40.82ID:gfTDhobA0 単に初期化で使ってるだけでしょ
今回はintであることが明白だから=でも()でも{}でも初期化できるけど
この手のコンパイル時に決まるやつはstatic constexpr一択だね
array<T, nankanokosuu> a;みたいに他のテンプレート引数に使える
今回はintであることが明白だから=でも()でも{}でも初期化できるけど
この手のコンパイル時に決まるやつはstatic constexpr一択だね
array<T, nankanokosuu> a;みたいに他のテンプレート引数に使える
290デフォルトの名無しさん (ワッチョイ 83da-lkW6)
2023/01/28(土) 16:18:27.56ID:TUmaQinN0 constexprにするとコンパイル時に解決出来ない項目は弾かれてしまうからconstのままでいい
知らないなら余計な修正は加えるな
知らないなら余計な修正は加えるな
291デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/28(土) 16:50:45.80ID:x4SDzju+0292デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/28(土) 17:08:38.28ID:1oumyOI/M >>288
>それはさておき初期化の位置に使っている中括弧 {N} はなに?
C++11位から導入された初期化の一種。
a{N}は、a = N とほぼ同じだが、縮小変換をしないということや、
「どんな場所でも必ず使える」特徴があると言われており、Stroustrup氏
は、= よりも {} を推奨している。
また、{} による初期化は「直接初期化」と関係が深く、= による初期化は
「代入初期化」と関係が深い。
>それはさておき初期化の位置に使っている中括弧 {N} はなに?
C++11位から導入された初期化の一種。
a{N}は、a = N とほぼ同じだが、縮小変換をしないということや、
「どんな場所でも必ず使える」特徴があると言われており、Stroustrup氏
は、= よりも {} を推奨している。
また、{} による初期化は「直接初期化」と関係が深く、= による初期化は
「代入初期化」と関係が深い。
293デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/28(土) 22:18:12.18ID:x4SDzju+0294デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/28(土) 23:35:50.70ID:JY7EfERdM >>293
「直接初期化(direct initialization)」とも関係しているが、
{}による初期化は、「一様初期化 (uniform initialization)」
で検索すると出て来やすい。
なお、ネットでdirect initializationを検索しても間違った定義が出てくるかも知れない。
「直接初期化(direct initialization)」とも関係しているが、
{}による初期化は、「一様初期化 (uniform initialization)」
で検索すると出て来やすい。
なお、ネットでdirect initializationを検索しても間違った定義が出てくるかも知れない。
295デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/29(日) 00:27:43.05ID:2zmXfTjk0 >>294
なるほど「直接初期化」と{}による初期化(= [一様初期化])は分かった
[一様初期化] https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html
[直接初期化] https://learn.microsoft.com/ja-jp/cpp/cpp/initializers?view=msvc-170
「縮小変換」と「代入初期化」が分からん
「代入初期化」は=による初期化のことを言ってるのかな?
なるほど「直接初期化」と{}による初期化(= [一様初期化])は分かった
[一様初期化] https://cpprefjp.github.io/lang/cpp11/uniform_initialization.html
[直接初期化] https://learn.microsoft.com/ja-jp/cpp/cpp/initializers?view=msvc-170
「縮小変換」と「代入初期化」が分からん
「代入初期化」は=による初期化のことを言ってるのかな?
296デフォルトの名無しさん (スップ Sd5a-VuUV)
2023/01/29(日) 12:04:49.28ID:l1ZINGQtd C++17のcopy elisionでルール変わったね
297デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 13:42:04.03ID:uP7zelejM >>295
正しい定義かどうかは分からないが、一応、
「直接初期化」「コピー初期化」については、英語版の en.cppreference.com
をそれぞれ
「direct initialization」「copy initialization」
で検索すると「パターン」一覧が出てくるみたいだ。
ただし、一覧については「全てのパターン」かは定かではない。
例えば、direct initialization については、一覧には、new T(XXX) しか出てないが、
new T{XXX} でも良いハズ。
正しい定義かどうかは分からないが、一応、
「直接初期化」「コピー初期化」については、英語版の en.cppreference.com
をそれぞれ
「direct initialization」「copy initialization」
で検索すると「パターン」一覧が出てくるみたいだ。
ただし、一覧については「全てのパターン」かは定かではない。
例えば、direct initialization については、一覧には、new T(XXX) しか出てないが、
new T{XXX} でも良いハズ。
298デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 13:47:49.42ID:uP7zelejM >>297
https://en.cppreference.com/w/cpp/language/direct_initialization
T object ( arg );
T object ( arg1, arg2, ... ); (1)
T object { arg }; (2) (since C++11)
T ( other )
T ( arg1, arg2, ... ) (3)
static_cast< T >( other ) (4)
new T(args, ...) (5)
Class::Class() : member(args, ...) { ... } (6)
[arg](){ ... } (7) (since C++11)
[説明]
* (5)は、() しか出てないが、{} でも可能 :
new T(args, ...) (5)
new T{args, ...} (5')
* (3) も、() しか出てないが、{} でも可能で恐らくother でなくてもいい筈だ(定かではない) :
T ( other )
T ( arg )
T ( arg1, arg2, ... ) (3)
T { other }
T { arg }
T { arg1, arg2, ... } (3’)
https://en.cppreference.com/w/cpp/language/direct_initialization
T object ( arg );
T object ( arg1, arg2, ... ); (1)
T object { arg }; (2) (since C++11)
T ( other )
T ( arg1, arg2, ... ) (3)
static_cast< T >( other ) (4)
new T(args, ...) (5)
Class::Class() : member(args, ...) { ... } (6)
[arg](){ ... } (7) (since C++11)
[説明]
* (5)は、() しか出てないが、{} でも可能 :
new T(args, ...) (5)
new T{args, ...} (5')
* (3) も、() しか出てないが、{} でも可能で恐らくother でなくてもいい筈だ(定かではない) :
T ( other )
T ( arg )
T ( arg1, arg2, ... ) (3)
T { other }
T { arg }
T { arg1, arg2, ... } (3’)
299デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 13:56:42.30ID:uP7zelejM >>295
>「縮小変換」と「代入初期化」が分からん
>「代入初期化」は=による初期化のことを言ってるのかな?
縮小変換は、検索すると出てくる。
「代入初期化」という言葉は、俺の記憶違いだったらしく、「コピー初期化」
が正しかったようだ。難しい。
>「縮小変換」と「代入初期化」が分からん
>「代入初期化」は=による初期化のことを言ってるのかな?
縮小変換は、検索すると出てくる。
「代入初期化」という言葉は、俺の記憶違いだったらしく、「コピー初期化」
が正しかったようだ。難しい。
300デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 14:05:48.45ID:uP7zelejM ここが分かり易いかな:
「Is it direct-initialization or copy-initialization?」
https://stackoverflow.com/questions/46634869/is-it-direct-initialization-or-copy-initialization
「Is it direct-initialization or copy-initialization?」
https://stackoverflow.com/questions/46634869/is-it-direct-initialization-or-copy-initialization
301デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/01/29(日) 20:57:42.75ID:2zmXfTjk0 >>299,300
なるほど「縮小変換をしない」とは
例えば以下でエラーになるってことね
int a {1.0};
「コピー初期化」ってのはコピーコンストラクタを呼ぶ初期化
あるいはコピーコンストラクタ自体のことで良いのかな?
なるほど「縮小変換をしない」とは
例えば以下でエラーになるってことね
int a {1.0};
「コピー初期化」ってのはコピーコンストラクタを呼ぶ初期化
あるいはコピーコンストラクタ自体のことで良いのかな?
302デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 23:00:33.52ID:JRnzhQFiM >>301
>「コピー初期化」ってのはコピーコンストラクタを呼ぶ初期化
>あるいはコピーコンストラクタ自体のことで良いのかな?
個人的には、
CPerson::CPerson( CPerson const &rPeson )
の形式のコンストラクタがコピーコンストラクタで、
それを使う初期化がコピー初期化、と思って今まで生きてきたが、
それだと、「直接初期化」の対比の意味のものとは違っているように思える。
どこかで、言葉の混乱が起きているかも。
分からない。
>「コピー初期化」ってのはコピーコンストラクタを呼ぶ初期化
>あるいはコピーコンストラクタ自体のことで良いのかな?
個人的には、
CPerson::CPerson( CPerson const &rPeson )
の形式のコンストラクタがコピーコンストラクタで、
それを使う初期化がコピー初期化、と思って今まで生きてきたが、
それだと、「直接初期化」の対比の意味のものとは違っているように思える。
どこかで、言葉の混乱が起きているかも。
分からない。
303デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/29(日) 23:11:23.60ID:JRnzhQFiM >>302
一部の例外を除いては、「コピー初期化」とは、= が書いてある初期化で、
「直接初期化」とは、= が書いて無い初期化、だといわれている。
但し、沢山例外があって、
T x = T(a);
などは、直接初期化なんだそうだ。
また、return a などは、コピー初期化、なんだそうだ。
記憶に頼っているので間違っているかも知れない。
一部の例外を除いては、「コピー初期化」とは、= が書いてある初期化で、
「直接初期化」とは、= が書いて無い初期化、だといわれている。
但し、沢山例外があって、
T x = T(a);
などは、直接初期化なんだそうだ。
また、return a などは、コピー初期化、なんだそうだ。
記憶に頼っているので間違っているかも知れない。
304デフォルトの名無しさん (ワッチョイ 83da-lkW6)
2023/01/29(日) 23:20:25.89ID:ppqTPlns0 コピコンか代入か明示するためのexplicitよ
305はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b63e-fO7+)
2023/01/30(月) 01:17:26.91ID:kRDQpz8S0 >>302
コンストラクタはどれも直接初期化に使えるコンストラクタだけど
一定の形式を満たすものはコピー初期化の文脈「でも」使えるってだけ。
>>303
> T x = T(a);
> などは、直接初期化なんだそうだ。
これについて形式的にはあくまでもコピー初期化の一種ということになる。
https://timsong-cpp.github.io/cppwp/n4659/dcl.init#15
その上でコピーの省略が起きて結果的には直接初期化と同じ挙動になる。
https://timsong-cpp.github.io/cppwp/n4659/class.copy.elision#1
コンストラクタはどれも直接初期化に使えるコンストラクタだけど
一定の形式を満たすものはコピー初期化の文脈「でも」使えるってだけ。
>>303
> T x = T(a);
> などは、直接初期化なんだそうだ。
これについて形式的にはあくまでもコピー初期化の一種ということになる。
https://timsong-cpp.github.io/cppwp/n4659/dcl.init#15
その上でコピーの省略が起きて結果的には直接初期化と同じ挙動になる。
https://timsong-cpp.github.io/cppwp/n4659/class.copy.elision#1
306デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:11:51.36ID:S2+yDPxmM 記憶に頼って書くけど、
1. 1つの引数を持つコンストラクタは、explicit修飾することが推奨されている。
2. explicit指定が無いと、そのつもりは無い「ひょんな場所」で勝手に変換コンストラクタとして
利用されてしまうことがある。特に関数に引数を渡す場合に起き易いらしい。
3. CPerson::CPerson( CPerson &rPerson ) は、同じ型を単純にコピーする
コンストラクタであるから、そもそも型の変換はしないので変換コンストラクタでなく、
「コピー・コンストラクタ」と言われる。
4. つまり、CPerson::CPerson( AAA &rAAA ) のような場合に
1. 1つの引数を持つコンストラクタは、explicit修飾することが推奨されている。
2. explicit指定が無いと、そのつもりは無い「ひょんな場所」で勝手に変換コンストラクタとして
利用されてしまうことがある。特に関数に引数を渡す場合に起き易いらしい。
3. CPerson::CPerson( CPerson &rPerson ) は、同じ型を単純にコピーする
コンストラクタであるから、そもそも型の変換はしないので変換コンストラクタでなく、
「コピー・コンストラクタ」と言われる。
4. つまり、CPerson::CPerson( AAA &rAAA ) のような場合に
307デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:18:21.06ID:S2+yDPxmM >>306
[誤送信してしまった。スマソ]
4. つまり、CPerson::CPerson( AAA const &rAAA ) や CPerson::CPerson( int &rX )
のような場合に explicit 指定することが推奨されていたと思う。
T x = T(a);
の場合、「C++のからくり」のような昔の解説書だと、最適化に任されているのではなく、
特別処理されているようなニュアンス(?)で、T x(a) と同じだと書いてあった。
もし、特別処理されてないと考えた場合、= の部分だけに着目すれば、T::T( T const &rX ) という
コピーコンストラクタの呼び出しと意味論的には考えて考えられなくも無い。
そうするとそこは「変換コンストラクタ」ではなく「コピーコンストラクタ」が使われることになる。
コピーコンストラクタはいくら使っても速度が遅くなる以外は劣化やデータの変化が無いため
無害と言えば無害。なので、explicit が付いていてもいなくても余り関係が無いような気がする。
[誤送信してしまった。スマソ]
4. つまり、CPerson::CPerson( AAA const &rAAA ) や CPerson::CPerson( int &rX )
のような場合に explicit 指定することが推奨されていたと思う。
T x = T(a);
の場合、「C++のからくり」のような昔の解説書だと、最適化に任されているのではなく、
特別処理されているようなニュアンス(?)で、T x(a) と同じだと書いてあった。
もし、特別処理されてないと考えた場合、= の部分だけに着目すれば、T::T( T const &rX ) という
コピーコンストラクタの呼び出しと意味論的には考えて考えられなくも無い。
そうするとそこは「変換コンストラクタ」ではなく「コピーコンストラクタ」が使われることになる。
コピーコンストラクタはいくら使っても速度が遅くなる以外は劣化やデータの変化が無いため
無害と言えば無害。なので、explicit が付いていてもいなくても余り関係が無いような気がする。
308デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:24:16.09ID:S2+yDPxmM >>307
[補足]
void f(T x);
に対して、
U a;
f(a);
と書くと、実引数aが仮引数xに渡される時の動作は、「コピー(?)初期化」と考えられて
いる。もしかしたら言葉は正しく無いかもしれないが、少なくとも「直接初期化」には
分類されないということ。
そしてexplicitが付いて無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
[補足]
void f(T x);
に対して、
U a;
f(a);
と書くと、実引数aが仮引数xに渡される時の動作は、「コピー(?)初期化」と考えられて
いる。もしかしたら言葉は正しく無いかもしれないが、少なくとも「直接初期化」には
分類されないということ。
そしてexplicitが付いて無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
309デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:25:22.84ID:S2+yDPxmM >>308
[訂正]
誤: そしてexplicitが付いて無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
正: そしてexplicitが付いている無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
[訂正]
誤: そしてexplicitが付いて無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
正: そしてexplicitが付いている無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
310デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:26:12.39ID:S2+yDPxmM >>309
[再訂正]
誤: そしてexplicitが付いている無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
正: そしてexplicitが付いているコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
[再訂正]
誤: そしてexplicitが付いている無いコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
正: そしてexplicitが付いているコンストラクタは、このような初期化に対しては用いられ
ないことが保証されると書いてあったと思う。
311デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:50:51.20ID:S2+yDPxmM >>304
explicit指定の主な役割は、変換コンストラクタにexplicit修飾しておくことで
「変換コンストラクタが知らず知らずのうちに勝手に使われてしまう事」
を防げる、ということだったと思う。
explicit指定の主な役割は、変換コンストラクタにexplicit修飾しておくことで
「変換コンストラクタが知らず知らずのうちに勝手に使われてしまう事」
を防げる、ということだったと思う。
312デフォルトの名無しさん (スップ Sd5a-VuUV)
2023/01/30(月) 16:53:41.85ID:BI3s5DYMd regexやthreadのexplicitが邪魔
313はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b63e-fO7+)
2023/01/30(月) 17:25:41.99ID:kRDQpz8S0 >>306
explicit を付けることは推奨されているわけじゃない。
推奨している人もいるけど普通は必要に応じて使い分けるよ。
明らかに変換を意味しないようなコンストラクタになっちゃうこともあるから気を付けろという程度の話。
たとえば vector は size_t を受け取るコンストラクタがある (指定サイズ分の大きさになる) がそれには当然 explicit が付いてる。
整数が vector に変換されるのは明らかにおかしいから。
char* から string への変換みたいな自然な変換では困らないし、あるほうが便利。
>>307
> 特別処理されているようなニュアンス
かつてはその場合はコピーの省略が許される (しなくてもよい) という仕様だった。 (今の仕様だとコピーの省略が必須。)
コピーコンストラクタは必ずしもコピーをするだけではなくなんらかの副作用を引き起こしても良いので
コピーの省略の有無によってプログラムの意味が変わってしまう。
プログラムの意味を変えない範囲で処理系が行う通常の「最適化」とは異なるという意味では特別扱いだ。
explicit を付けることは推奨されているわけじゃない。
推奨している人もいるけど普通は必要に応じて使い分けるよ。
明らかに変換を意味しないようなコンストラクタになっちゃうこともあるから気を付けろという程度の話。
たとえば vector は size_t を受け取るコンストラクタがある (指定サイズ分の大きさになる) がそれには当然 explicit が付いてる。
整数が vector に変換されるのは明らかにおかしいから。
char* から string への変換みたいな自然な変換では困らないし、あるほうが便利。
>>307
> 特別処理されているようなニュアンス
かつてはその場合はコピーの省略が許される (しなくてもよい) という仕様だった。 (今の仕様だとコピーの省略が必須。)
コピーコンストラクタは必ずしもコピーをするだけではなくなんらかの副作用を引き起こしても良いので
コピーの省略の有無によってプログラムの意味が変わってしまう。
プログラムの意味を変えない範囲で処理系が行う通常の「最適化」とは異なるという意味では特別扱いだ。
314デフォルトの名無しさん (ワッチョイ b7f4-+rQD)
2023/01/30(月) 17:35:07.72ID:c/LsY66H0 難しいなぁ。。。
ubuntu の g++って 11.1以降だから、c++23だったのね。
すご って思いました。
ubuntu の g++って 11.1以降だから、c++23だったのね。
すご って思いました。
315デフォルトの名無しさん (スップ Sd5a-VuUV)
2023/01/30(月) 19:37:46.73ID:BI3s5DYMd C++2bはまだドラフトだよ
316デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 20:58:31.18ID:rMqdSurOM >>313
>たとえば vector は size_t を受け取るコンストラクタがある (指定サイズ分の大きさになる) がそれには当然 explicit が付いてる。
>整数が vector に変換されるのは明らかにおかしいから。
>char* から string への変換みたいな自然な変換では困らないし、あるほうが便利。
なるほど。そうだったのか。
勉強になりました。
>たとえば vector は size_t を受け取るコンストラクタがある (指定サイズ分の大きさになる) がそれには当然 explicit が付いてる。
>整数が vector に変換されるのは明らかにおかしいから。
>char* から string への変換みたいな自然な変換では困らないし、あるほうが便利。
なるほど。そうだったのか。
勉強になりました。
317デフォルトの名無しさん (アウアウウー Sa47-hJvz)
2023/02/02(木) 23:34:11.97ID:Ce1dvKO2a C++やるとどんな言語も使えるとか言うけどNode.jsも数時間あれば使いこなせるの?
あれは言語じゃないでしょって言われそうだがjavascriptともhtmlとも違くて別言語に思えるんだけど
あれは言語じゃないでしょって言われそうだがjavascriptともhtmlとも違くて別言語に思えるんだけど
318デフォルトの名無しさん (ワッチョイ b7b7-5WkL)
2023/02/02(木) 23:52:01.04ID:zSdJjx9q0319デフォルトの名無しさん (ワッチョイ 83da-lkW6)
2023/02/03(金) 00:10:02.14ID:GSbNqAeQ0 C++出来ます‼ってのはC言語上がりのなんちゃってチャソも含まれるから一概には言えない
320はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e33e-fO7+)
2023/02/03(金) 00:27:17.07ID:cvg0vFRY0 >>317
C++ を使っていれば低レイヤの事情やシステム全体の関連を知る機会があるし、
言語処理系がどう実装されるのか (低レイヤの視線から見てどう動くのか) を知っていれば
常識的な言語デザインの感覚がわかる。 (言語仕様を類推しやすい。)
C++ を使いこなしている状況からなら色々と理解しやすいという効果がないとは言えない。
ただ、あくまでも C++ を使いこなせるようになる過程で言語自体以外にも身につくことがあるという部分が効いてくるので
C++ の言語仕様の知識はそれほど役に立つわけではないし、さすがに数時間で Node.js を使いこなせるということはない。
C++ を使っていれば低レイヤの事情やシステム全体の関連を知る機会があるし、
言語処理系がどう実装されるのか (低レイヤの視線から見てどう動くのか) を知っていれば
常識的な言語デザインの感覚がわかる。 (言語仕様を類推しやすい。)
C++ を使いこなしている状況からなら色々と理解しやすいという効果がないとは言えない。
ただ、あくまでも C++ を使いこなせるようになる過程で言語自体以外にも身につくことがあるという部分が効いてくるので
C++ の言語仕様の知識はそれほど役に立つわけではないし、さすがに数時間で Node.js を使いこなせるということはない。
321デフォルトの名無しさん (アウアウウー Sa47-hJvz)
2023/02/03(金) 00:44:48.46ID:7WbTLk8Ha quoraとか知恵袋とかブログで「Cの次はC++をやればオブジェクト指向身について更にCから派生した言語が主流だからどんな言語も直ぐ理解できる」みたいなの多いよ
だからこのスレの人達ならNode.jsも余裕なのかなって
>>320
学ぶ過程の色んな経験が生きるって事か。そりゃそうだよね
だからこのスレの人達ならNode.jsも余裕なのかなって
>>320
学ぶ過程の色んな経験が生きるって事か。そりゃそうだよね
322はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e33e-fO7+)
2023/02/03(金) 01:31:41.47ID:cvg0vFRY0 >>321
JavaScript は C 風の外観を持ってこそいるけど動的型、かつ、プロトタイプベースであるという点で
根本的に異なるメカニズムなわけでこういうのを「C から派生」と呼んでよいのかどうか……。
JavaScript は C 風の外観を持ってこそいるけど動的型、かつ、プロトタイプベースであるという点で
根本的に異なるメカニズムなわけでこういうのを「C から派生」と呼んでよいのかどうか……。
323デフォルトの名無しさん (ワッチョイ 9af0-2biX)
2023/02/03(金) 07:32:32.82ID:gaR1XNY40 よく使う言語と比べて在るもの無いもの違うわけで
ちゃんと理解しようとしたらそれなりに時間がかかるでしょ
気軽に使いこなすとか言葉にしてると怖いおじさんに怒られるぞ
ちゃんと理解しようとしたらそれなりに時間がかかるでしょ
気軽に使いこなすとか言葉にしてると怖いおじさんに怒られるぞ
324デフォルトの名無しさん (ワッチョイ 5f10-3kgq)
2023/02/03(金) 08:03:03.43ID:HPBiMoRp0 そもそも理解しやすいと使いこなせるは別の概念やろ
325デフォルトの名無しさん (ワッチョイ e76b-N2mU)
2023/02/03(金) 09:08:55.43ID:b6b2xU8/0 vector<int>& a = c, b = c;
としたときに、bがcの参照になりませんでした。
&が後ろにかかるからかと思って
vector<int> &a = c, &b = c;
としても結果が変わりませんでした。
vector<int> &a = c;
vector<int> &b = c;
とすればやっと期待通りの動作になりました。
参照の宣言と初期化は複数をカンマで区切って一行で書くことは不可能なのでしょうか?
としたときに、bがcの参照になりませんでした。
&が後ろにかかるからかと思って
vector<int> &a = c, &b = c;
としても結果が変わりませんでした。
vector<int> &a = c;
vector<int> &b = c;
とすればやっと期待通りの動作になりました。
参照の宣言と初期化は複数をカンマで区切って一行で書くことは不可能なのでしょうか?
326デフォルトの名無しさん (ワッチョイ 83da-lkW6)
2023/02/03(金) 09:24:27.07ID:GSbNqAeQ0 え?コンパイラなに使ったの?
> vector<int> &a = c, &b = c;
> としても結果が変わりませんでした。
処理系ぶっ壊れてんのかな
> vector<int> &a = c, &b = c;
> としても結果が変わりませんでした。
処理系ぶっ壊れてんのかな
327デフォルトの名無しさん (ラクッペペ MMb6-Go++)
2023/02/03(金) 12:28:10.97ID:31rfnruOM c言語スレで質問したのですが
スレ違いとのことでしたので
改めて質問致します。
c言語の標準入出力ストリームの
本当に基本的なことなんですが
わからずに困っています。
教えてください。
std::ofstream stream;
ostream << "ABCEFG";
この入力した文字列の"ABCEFG"を
右側3文字を削除して"ABC"にするには
どうすれば良いのでしょうか?
スレ違いとのことでしたので
改めて質問致します。
c言語の標準入出力ストリームの
本当に基本的なことなんですが
わからずに困っています。
教えてください。
std::ofstream stream;
ostream << "ABCEFG";
この入力した文字列の"ABCEFG"を
右側3文字を削除して"ABC"にするには
どうすれば良いのでしょうか?
328デフォルトの名無しさん (ワッチョイ 0b01-Z6M9)
2023/02/03(金) 12:36:10.39ID:l5lsJ9Ru0 カーソルをEのところに持ってきてDeleteキーを3回押す
またはカーソルをGの右の"の上に移動してBSキーを3回押す
またはカーソルをGの右の"の上に移動してBSキーを3回押す
329デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/02/03(金) 13:21:17.85ID:cQeyOYIBM330デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/02/03(金) 13:24:04.52ID:cQeyOYIBM >>329
[補足]
std::string str = "文字列";
の場合、
str.substr(開始位置, 取り出す長さ);
で部分文字列を作れるので、
std::string str = "ABCEFG";
の場合、
std::string str2 = str.substr(0, 3);
で str2 に "ABC" が入る。
[補足]
std::string str = "文字列";
の場合、
str.substr(開始位置, 取り出す長さ);
で部分文字列を作れるので、
std::string str = "ABCEFG";
の場合、
std::string str2 = str.substr(0, 3);
で str2 に "ABC" が入る。
331デフォルトの名無しさん (ラクッペペ MM4f-zLlH)
2023/02/04(土) 10:43:22.05ID:amDpu8JYM >>330
回答ありがとうございます。
あれから自分でも調べて
seekp()でファイル内位置を移動するなど
試してみたのですがうまくいきませんでした。
(修正の方向はあっていると思うのですが・・)
やはり>>330さんの言う通り、テキストの削除は難しくする
何かわかりませんがそういう思想があるみたいに感じました。
そこで自分も細かい編集は別に改めて行って
結果をまとめてstreamに出力する方法に切り替えました。
結果はOK、どうもありがとうございました。
tstring_t str = _T("ABCDEFG");
str.erase(str.size() - 3);
stream << str;
回答ありがとうございます。
あれから自分でも調べて
seekp()でファイル内位置を移動するなど
試してみたのですがうまくいきませんでした。
(修正の方向はあっていると思うのですが・・)
やはり>>330さんの言う通り、テキストの削除は難しくする
何かわかりませんがそういう思想があるみたいに感じました。
そこで自分も細かい編集は別に改めて行って
結果をまとめてstreamに出力する方法に切り替えました。
結果はOK、どうもありがとうございました。
tstring_t str = _T("ABCDEFG");
str.erase(str.size() - 3);
stream << str;
332デフォルトの名無しさん (ワッチョイ 4f01-hyUu)
2023/02/04(土) 11:10:24.50ID:e1OBQ9Uv0333デフォルトの名無しさん (アウアウウー Sa93-fxZT)
2023/02/04(土) 11:41:36.65ID:9C/WLP1pa >331
seekp seekg
tellp tellg
読み込み用と書き出し用でポインタが二つあるので
自分で思ってるのと違う場所になってるのかも
方向性はあってるはず
間違ってたらすまん子
seekp seekg
tellp tellg
読み込み用と書き出し用でポインタが二つあるので
自分で思ってるのと違う場所になってるのかも
方向性はあってるはず
間違ってたらすまん子
334デフォルトの名無しさん (ワッチョイ cf69-F1up)
2023/02/04(土) 14:37:50.00ID:cBqi3lSD0 >結果をまとめてstreamに出力する
これで済むなら、これこそが正道
必要のない出力をして後から切り詰めるなんて愚の骨頂
そうしなきゃならない理由があるならしょうがないけど
これで済むなら、これこそが正道
必要のない出力をして後から切り詰めるなんて愚の骨頂
そうしなきゃならない理由があるならしょうがないけど
335デフォルトの名無しさん (スッププ Sd5f-340S)
2023/02/04(土) 16:23:00.83ID:12Q26erYd >>331
テキストじゃなくてファイルの削除でしょ
そういう細かい言い間違いが多いから伝わりにくい文章になってると思う
ファイルに出力する前にメモリー上で編集済ますのは当たり前でファイルアクセスにはメモリよりも時間がかかるから
そういった基本を知ってたほうがいいプログラムを作れるよ
テキストじゃなくてファイルの削除でしょ
そういう細かい言い間違いが多いから伝わりにくい文章になってると思う
ファイルに出力する前にメモリー上で編集済ますのは当たり前でファイルアクセスにはメモリよりも時間がかかるから
そういった基本を知ってたほうがいいプログラムを作れるよ
336デフォルトの名無しさん (ラクッペペ MM4f-lcFY)
2023/02/04(土) 17:43:09.03ID:amDpu8JYM337デフォルトの名無しさん (アウアウウー Sa93-3Nzt)
2023/02/04(土) 17:45:16.88ID:NGTrSsWja アホの謎の上から目線
338デフォルトの名無しさん (スッププ Sd5f-340S)
2023/02/04(土) 19:15:57.04ID:EmptyAuWd >>336
ひょっとしてファイル上に出力した状態をテキストと呼んでるのか
メモリ上かファイル上かの区別でそんな呼び方はしない
思想とかじゃなくてメモリとファイルにはそういう性質があるってだけ
早とちりの激しい人のようだな
ひょっとしてファイル上に出力した状態をテキストと呼んでるのか
メモリ上かファイル上かの区別でそんな呼び方はしない
思想とかじゃなくてメモリとファイルにはそういう性質があるってだけ
早とちりの激しい人のようだな
339デフォルトの名無しさん (ワッチョイ 4f01-mMLA)
2023/02/04(土) 19:36:14.65ID:YYLIzwcR0 お前も人に言い間違い云々とか言う前にファイルの削除とか書くなよ...
せめてファイルのテキストから削除とか書かないと意味わからんだろ
せめてファイルのテキストから削除とか書かないと意味わからんだろ
340デフォルトの名無しさん (ラクッペペ MM4f-zLlH)
2023/02/04(土) 19:47:05.93ID:amDpu8JYM >>338
いや全然違うよ、もっと基礎的な話で
C言語の標準入出力ストリームでのテキスト出力の話をしているの。
(C++の文字列クラス std::stringとはまた別)
>>327の
ostream << "ABCEFG";
はテキストの書き込み処理だけど、
これをやっても内部のバッファに書き込まれるだけで
HDDファイルなどの真の書き込み先には書き込まれないの。
//ostream << std::fflush;
仮に上の関数を呼ぶことで初めてHDDファイルなどに書き込まれるの。
んで、入力されてまだフラッシュされていない文字列"ABCEFG"を
右側3文字を削除して"ABC"にするには
どうすれば良いのでしょうか?
ってのが私の質問なんです。
OK?
いや全然違うよ、もっと基礎的な話で
C言語の標準入出力ストリームでのテキスト出力の話をしているの。
(C++の文字列クラス std::stringとはまた別)
>>327の
ostream << "ABCEFG";
はテキストの書き込み処理だけど、
これをやっても内部のバッファに書き込まれるだけで
HDDファイルなどの真の書き込み先には書き込まれないの。
//ostream << std::fflush;
仮に上の関数を呼ぶことで初めてHDDファイルなどに書き込まれるの。
んで、入力されてまだフラッシュされていない文字列"ABCEFG"を
右側3文字を削除して"ABC"にするには
どうすれば良いのでしょうか?
ってのが私の質問なんです。
OK?
341デフォルトの名無しさん (ワッチョイ 3ff0-EOzK)
2023/02/04(土) 20:05:08.56ID:NNW9UvjL0 std::printってなんすか?鬱陶しいstream要らなくなりますか??
342デフォルトの名無しさん (ワッチョイ 0f7c-m47a)
2023/02/04(土) 20:22:02.19ID:Uc49lFdn0 >>340
std::flushは呼び出し後にバッファがフラッシュされることを保証するだけで、書き込みをするタイミングは未規定(pstreamの勝手)
ostreamはoperator<<が呼ばれたそばから全部書き出してもいいし、バッファを半分ずつとか書き出してもいいしそれはostreamの自由
「入力されてまだフラッシュされていない」なんていう状態はostreamが教える義理はないし真っ当な方法では外からは観測できないしするべきでもない
ましてそれを弄くろうなんて考えるのがカプセル化を無視した間違った考え方だ
std::flushは呼び出し後にバッファがフラッシュされることを保証するだけで、書き込みをするタイミングは未規定(pstreamの勝手)
ostreamはoperator<<が呼ばれたそばから全部書き出してもいいし、バッファを半分ずつとか書き出してもいいしそれはostreamの自由
「入力されてまだフラッシュされていない」なんていう状態はostreamが教える義理はないし真っ当な方法では外からは観測できないしするべきでもない
ましてそれを弄くろうなんて考えるのがカプセル化を無視した間違った考え方だ
343デフォルトの名無しさん (ワッチョイ 7fbb-jaVN)
2023/02/04(土) 20:26:28.53ID:b1h/gALG0 なんだろね。std::formatだけでは効率が悪かったのかな?
344デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/04(土) 20:26:47.52ID:KFFsFRScM >>340
C++のSTLには、ファイルではないstreamの中に、そういう機能を持つものがあり、
atoi()の代わりに用いる例が出ていた。
それは入力と出力が可能なstreamで、文字列を出力しておいて、整数型として
入力することが出来る。
それが出来るということは、語尾を削除することも出来そう。
C++のSTLには、ファイルではないstreamの中に、そういう機能を持つものがあり、
atoi()の代わりに用いる例が出ていた。
それは入力と出力が可能なstreamで、文字列を出力しておいて、整数型として
入力することが出来る。
それが出来るということは、語尾を削除することも出来そう。
345デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/04(土) 20:59:53.67ID:KFFsFRScM 全く確認できてないが、。
stringstring s;
s << "ABCDEF";
string s2;
s >> setw(3) >> s2;
で s2 に "ABC" が読み込めるかもしれない。
誰か確認して候。
stringstring s;
s << "ABCDEF";
string s2;
s >> setw(3) >> s2;
で s2 に "ABC" が読み込めるかもしれない。
誰か確認して候。
346デフォルトの名無しさん (ワッチョイ 4f01-hyUu)
2023/02/04(土) 21:06:47.02ID:e1OBQ9Uv0347デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/04(土) 21:10:37.97ID:KFFsFRScM >>345
[追加]
(2)
std::ofstream ostream;
ostream << setw(3) << "ABCEFG";
(3) C++ 20 以降限定になるが、
std::format() を使う。
[追加]
(2)
std::ofstream ostream;
ostream << setw(3) << "ABCEFG";
(3) C++ 20 以降限定になるが、
std::format() を使う。
348デフォルトの名無しさん (ワッチョイ 3fad-t53W)
2023/02/04(土) 21:44:35.26ID:J5X2r1Ng0 >>340
>んで、入力されてまだフラッシュされていない文字列"ABCEFG"を
>右側3文字を削除して"ABC"にするには
>どうすれば良いのでしょうか?
"ABC"しか入力(ストリームに対する出力)されないようにするのが筋じゃねえの?
何がしたいのか
>んで、入力されてまだフラッシュされていない文字列"ABCEFG"を
>右側3文字を削除して"ABC"にするには
>どうすれば良いのでしょうか?
"ABC"しか入力(ストリームに対する出力)されないようにするのが筋じゃねえの?
何がしたいのか
349デフォルトの名無しさん (アウアウエー Sabf-FmQs)
2023/02/04(土) 21:50:32.61ID:b6Tm4pTJa そういう感じの質問こそAIに聞くと的確な答が返ってきそう
350デフォルトの名無しさん (ワッチョイ 8f10-LcEw)
2023/02/04(土) 21:51:53.73ID:yysysFOo0 ストリームの出力を後からいじれたらそれはストリームじゃない
ただのバッファだ
ただのバッファだ
351デフォルトの名無しさん (ワッチョイ 3fad-4osW)
2023/02/04(土) 22:20:06.17ID:dPBsul5J0 JavaはStringBufferInputStreamとかいうのがあったけどdeprecatedされてるね
352デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/04(土) 22:39:15.87ID:KFFsFRScM353デフォルトの名無しさん (ワイーワ2 FFbf-+IHm)
2023/02/05(日) 20:22:13.30ID:KKxK2YdEF >>340
どうでもいいけどostreamはC++だぞ
どうでもいいけどostreamはC++だぞ
354デフォルトの名無しさん (ラクッペペ MM4f-lcFY)
2023/02/05(日) 22:02:55.86ID:leiLOsKWM355デフォルトの名無しさん (ワッチョイ 4f01-mMLA)
2023/02/05(日) 22:15:41.89ID:vWrwcA+50 ↑ 流石にこれはなにかの病気を疑わざるを得ないな
356デフォルトの名無しさん (ワッチョイ 0f7c-m47a)
2023/02/05(日) 23:11:05.45ID:ub5/0hy90 おかしいな、C言語の<<には左シフトの意味しかないはずだが
357デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/05(日) 23:16:38.70ID:jwd7GZbHM そもそも、C++のSTLにstd::ostreamがある。
358デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/06(月) 11:10:20.13ID:MSBukcfKM >>327
stdin から ABCDEF を入力して、stdout にABC を出力するらしい例。
なお、実際には全く確認してない。
[方法1]
// 文字列変数 a の段階で3文字に切り詰められ、ABC だけが入ってくるらしい。
string a;
cin >> setw(3) >> a;
cout << a;
[方法2]
// 文字列変数 a には、ABCDEF が入るが、出力は最初の 3 文字になるらしい。
string a;
cin >> a;
cout << setw(3) << a;
stdin から ABCDEF を入力して、stdout にABC を出力するらしい例。
なお、実際には全く確認してない。
[方法1]
// 文字列変数 a の段階で3文字に切り詰められ、ABC だけが入ってくるらしい。
string a;
cin >> setw(3) >> a;
cout << a;
[方法2]
// 文字列変数 a には、ABCDEF が入るが、出力は最初の 3 文字になるらしい。
string a;
cin >> a;
cout << setw(3) << a;
359デフォルトの名無しさん (ワッチョイ 4f5f-NCx9)
2023/02/06(月) 13:24:21.21ID:KoRl3hvD0 とりあえず変数名をostreamにするのはやめなよ
360デフォルトの名無しさん (スッププ Sd5f-340S)
2023/02/07(火) 12:29:25.49ID:UPy+Lbp7d >>340
だから自前のバッファで操作してから書き込めばいいじゃんって話
ストリー厶の意味がわかってないんじゃない
サンプル例題ならともかくもっと実用的なアプリを使うようになったら当然そうなるしそんなとこほじくってるよりもメモリ上で操作すれば簡単だって話
だから自前のバッファで操作してから書き込めばいいじゃんって話
ストリー厶の意味がわかってないんじゃない
サンプル例題ならともかくもっと実用的なアプリを使うようになったら当然そうなるしそんなとこほじくってるよりもメモリ上で操作すれば簡単だって話
361デフォルトの名無しさん (ワッチョイ 4f5f-NCx9)
2023/02/07(火) 13:30:35.63ID:3xIDowU30 ABCEFGのDが抜けてるのが気になって夜も眠れない
362デフォルトの名無しさん (ワッチョイ 3ff0-EOzK)
2023/02/07(火) 15:26:01.77ID:zqUp3ndL0 いつもの人かな?自由研究楽しそうだねー!
363デフォルトの名無しさん (ワッチョイ 0f7c-m47a)
2023/02/07(火) 19:29:46.00ID:EcDeonqz0 聞いてるのも答えてるのもいつもの天才くんだろ
お人形遊びなら他所でやってね
お人形遊びなら他所でやってね
364デフォルトの名無しさん (テテンテンテン MM4f-tu9g)
2023/02/07(火) 20:46:11.42ID:gvW0HmgtM この言語、constメンバ関数じゃなくてmutableメンバ関数だったらよかったのにと思いました。
あとnoexceptから普通に例外飛ばせるのなんとかしてください。
あとnoexceptから普通に例外飛ばせるのなんとかしてください。
365デフォルトの名無しさん (ワッチョイ 4f5f-NCx9)
2023/02/08(水) 00:16:04.31ID:XAt49H4z0 try/catchが重いのもなんとかしてほしい
366はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf3e-F1up)
2023/02/08(水) 12:51:56.02ID:dBOwscE40 >>365
今は try はそんなに重くない。
今は try はそんなに重くない。
367デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/08(水) 14:01:54.37ID:ZMdgsCGCM >>366
tryを使う場合、その関数の冒頭で、exception handler(←名前は忘れました)の
アドレスを fs:[xxx] 見たいな場所に退避したり、新しいアドレスを入れたりする
プロローグコードが挿入されるので、例外が全く発生しない場合でも、
少し遅くなる。
tryを使う場合、その関数の冒頭で、exception handler(←名前は忘れました)の
アドレスを fs:[xxx] 見たいな場所に退避したり、新しいアドレスを入れたりする
プロローグコードが挿入されるので、例外が全く発生しない場合でも、
少し遅くなる。
368デフォルトの名無しさん (ワッチョイ 7fb2-KDf3)
2023/02/08(水) 14:04:21.50ID:9Chuoarh0 重いつーより設計の悪さが残念
C++11でC++98より「マシ」になったけど
まだまだ垢抜けてない
C++11でC++98より「マシ」になったけど
まだまだ垢抜けてない
369デフォルトの名無しさん (ワッチョイ 3ff0-EOzK)
2023/02/08(水) 14:31:26.00ID:sdVGBQKo0 そうか?
他の言語触るほど良く出来てるなと感心するけど
他の言語触るほど良く出来てるなと感心するけど
370デフォルトの名無しさん (ワッチョイ 4f5f-F1up)
2023/02/08(水) 15:04:01.92ID:xSLFVKqx0 >>367 それは昔のコンパイラの話でしょ。現行だというなら具体的なコンパイラを挙げてね。
371デフォルトの名無しさん (スプッッ Sddf-6749)
2023/02/08(水) 17:48:16.42ID:JNAb9Hi4d x86-64は速い
x86-32は遅い
x86-32は遅い
372デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/08(水) 19:21:58.71ID:ny58eQb8M373デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/08(水) 19:41:50.12ID:ny58eQb8M >>372
[補足]
その時にネットで検索したら、(確か)IBMのコンパイラだけは、
例外処理を行なう関数でも、追加プロローグが必要なくて、例外が発生しない
ときには全くオーバーヘッドが無い、ということだった。
VC++だと、例外処理を使う関数には以下の様なプロローグとエピローグが追加されると
思う。記憶に頼っているので大体こんな感じだった、という程度で、本当は
間違っているかも知れない。
push fs:[xxxx]
mov fs:[xxxx],その関数の例外ハンドラのアドレス
・・・
pop fs:[xxxx]
[補足]
その時にネットで検索したら、(確か)IBMのコンパイラだけは、
例外処理を行なう関数でも、追加プロローグが必要なくて、例外が発生しない
ときには全くオーバーヘッドが無い、ということだった。
VC++だと、例外処理を使う関数には以下の様なプロローグとエピローグが追加されると
思う。記憶に頼っているので大体こんな感じだった、という程度で、本当は
間違っているかも知れない。
push fs:[xxxx]
mov fs:[xxxx],その関数の例外ハンドラのアドレス
・・・
pop fs:[xxxx]
374デフォルトの名無しさん (オイコラミネオ MM03-IoIL)
2023/02/08(水) 19:45:44.31ID:ny58eQb8M >>367
誤: アドレスを fs:[xxx] 見たいな場所に退避したり、新しいアドレスを入れたりする
プロローグコードが挿入されるので、
正: fs:[xxx]の中身をスタックに保存した後、fs:[xxx]に新しい例外ハンドラの
アドレスを入れるプロローグコードが挿入されるので
誤: アドレスを fs:[xxx] 見たいな場所に退避したり、新しいアドレスを入れたりする
プロローグコードが挿入されるので、
正: fs:[xxx]の中身をスタックに保存した後、fs:[xxx]に新しい例外ハンドラの
アドレスを入れるプロローグコードが挿入されるので
375デフォルトの名無しさん (ワッチョイ 0f7c-m47a)
2023/02/08(水) 19:53:05.57ID://IGlelw0 3レスも使って具体的な情報ゼロの無能乙
376デフォルトの名無しさん (ワッチョイ 8f10-LcEw)
2023/02/08(水) 20:11:13.99ID:0CKFfiVb0 その程度のコードが気になるほど小さな処理を例外で囲むのはおよし
377デフォルトの名無しさん (ワッチョイ 0f02-9sAx)
2023/02/08(水) 21:14:42.08ID:TiunzV3b0 std::string_viewじゃダメ?
378デフォルトの名無しさん (ワッチョイ 3f28-G/zc)
2023/02/08(水) 23:14:10.46ID:91RYCz8E0 実験もせずに聞くのもアレですが
std::array<short, 100> x;
に対して
*(unsigned long long*)&(x[0]) = 1ULL << 63;
とかやってもアライメント的に問題は無いの?
std::array<short, 100> x;
に対して
*(unsigned long long*)&(x[0]) = 1ULL << 63;
とかやってもアライメント的に問題は無いの?
379デフォルトの名無しさん (ワッチョイ 3f28-G/zc)
2023/02/08(水) 23:43:16.66ID:91RYCz8E0 問題ありそうなのでこんな感じにしたわ;;;
const static int NECONV = (sizeof(uint64_t) - 1) / sizeof(short) + 1;
union LargeInt {
short m_small[NECONV];
uint64_t m_large;
};
static void writeLargeInt(const uint64_t x, std::array<short, NE>& arr) {
LargeInt u;
u.m_large = x;
for (int i = 0; i < NECONV; i++) {
arr[i] = u.m_small[i];
}
}
const static int NECONV = (sizeof(uint64_t) - 1) / sizeof(short) + 1;
union LargeInt {
short m_small[NECONV];
uint64_t m_large;
};
static void writeLargeInt(const uint64_t x, std::array<short, NE>& arr) {
LargeInt u;
u.m_large = x;
for (int i = 0; i < NECONV; i++) {
arr[i] = u.m_small[i];
}
}
380デフォルトの名無しさん (ワッチョイ 7ff2-zLlH)
2023/02/09(木) 00:00:46.36ID:vSPJO8mm0 エンディアンでググれ
381はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf3e-F1up)
2023/02/09(木) 00:46:46.54ID:zt0qN6wf0 >>379
アラインというか、言語仕様上の保証という意味では最後に書き込んだ供用体メンバ意外から読むのは未定義という解釈が一般的だよ。
未定義と直接に書いてあるところもないんだけど出来ると書いてあるところもないのでこういう場合は未定義と解される。
(ただしスタンダードレイアウトで初期シーケンスが共通している箇所については OK 。)
m_large に書き込んだなら m_small として読むべきではない。
大抵の処理系では拡張として OK にしているけど細かい制約は場合によるから問題があるかないかは
処理系の都合をきちんと検証しないとわからん。
特にハードウェア寄りの仕方のない状況を除けば避けれるものなら避けたほうがよくはある。
アラインというか、言語仕様上の保証という意味では最後に書き込んだ供用体メンバ意外から読むのは未定義という解釈が一般的だよ。
未定義と直接に書いてあるところもないんだけど出来ると書いてあるところもないのでこういう場合は未定義と解される。
(ただしスタンダードレイアウトで初期シーケンスが共通している箇所については OK 。)
m_large に書き込んだなら m_small として読むべきではない。
大抵の処理系では拡張として OK にしているけど細かい制約は場合によるから問題があるかないかは
処理系の都合をきちんと検証しないとわからん。
特にハードウェア寄りの仕方のない状況を除けば避けれるものなら避けたほうがよくはある。
382デフォルトの名無しさん (ワッチョイ 3f28-G/zc)
2023/02/09(木) 08:04:31.16ID:nokdLSLo0 >エンディアンでググれ
えっ
>言語仕様上の保証という意味では最後に書き込んだ供用体メンバ意外から読むのは未定義
えっ;;;
LARGE_INTEGER共用体 (winnt.h)が使える環境でMicrosoft社製コンパイラでビルドする場合は未定義でないものとする、、、
LONGLONGとDWORDとLONG間でしか保証されないとか言われたら知らん、、、
えっ
>言語仕様上の保証という意味では最後に書き込んだ供用体メンバ意外から読むのは未定義
えっ;;;
LARGE_INTEGER共用体 (winnt.h)が使える環境でMicrosoft社製コンパイラでビルドする場合は未定義でないものとする、、、
LONGLONGとDWORDとLONG間でしか保証されないとか言われたら知らん、、、
383デフォルトの名無しさん (オッペケ Sr63-QuYT)
2023/02/09(木) 08:22:03.41ID:3hUU93Bbr >>382
未定義って言われたことに対して特定の処理系の仕様を挙げて何がしたいの?
未定義って言われたことに対して特定の処理系の仕様を挙げて何がしたいの?
384デフォルトの名無しさん (ワッチョイ 8f10-LcEw)
2023/02/09(木) 08:27:19.15ID:6bPfV7hH0385デフォルトの名無しさん (スプッッ Sddf-6749)
2023/02/09(木) 12:07:03.43ID:A8pViFCvd 未定義な環境なんかないんだから
C++の規格的に未定義とかどうでもいいじゃん
どうせ特定の環境でしか動かさないコードだろうし
C++の規格的に未定義とかどうでもいいじゃん
どうせ特定の環境でしか動かさないコードだろうし
386デフォルトの名無しさん (スッップ Sd5f-VAk/)
2023/02/09(木) 12:18:07.59ID:sPkxw56hd #ifで環境とエンディアンで切ってしまえ
387デフォルトの名無しさん (ワッチョイ 4f01-mMLA)
2023/02/09(木) 14:57:32.77ID:UhaInviD0 >>385
未定義な「環境」?
未定義な「環境」?
388デフォルトの名無しさん (ワッチョイ 4f5f-NCx9)
2023/02/09(木) 18:23:51.05ID:fimyrrlV0 特定の環境を想定してるのに、それを書かずに環境依存の質問するってほとんど釣りだよな
389デフォルトの名無しさん (ワッチョイ 7fb2-KDf3)
2023/02/09(木) 20:52:22.51ID:Fa1ce0CQ0390デフォルトの名無しさん (ワッチョイ cff0-6749)
2023/02/09(木) 21:21:46.36ID:/jyJY61Z0 おまいら読解力ゼロかよ
391デフォルトの名無しさん (ワッチョイ 7fb2-KDf3)
2023/02/09(木) 21:25:28.79ID:Fa1ce0CQ0 自分の意見主張を伝えるのは自分の責任
伝わらないのを人のせいにしたり人格攻撃したからって伝わりはしない
無駄で愚かな行為だ
伝わらないのを人のせいにしたり人格攻撃したからって伝わりはしない
無駄で愚かな行為だ
392デフォルトの名無しさん (ワッチョイ cff0-6749)
2023/02/09(木) 21:29:41.32ID:/jyJY61Z0 ばか
393デフォルトの名無しさん (ワッチョイ 8f12-KDf3)
2023/02/10(金) 12:00:14.43ID:rXRs96IF0 CHAR_BITってC++でもレガシーじゃないの?
394デフォルトの名無しさん (ワッチョイ 4f5f-F1up)
2023/02/10(金) 12:35:42.19ID:ntA0RsMN0 「レガシーである」の定義が不明。
395デフォルトの名無しさん (ワッチョイ 8f12-KDf3)
2023/02/10(金) 12:57:47.33ID:rXRs96IF0 例えばnumeric_limits<double>::infinity()を使うべきところでHUGE_VALを使うと
このジジイは・・・てなるようなこと
CHAR_BITを使うとこのジジイは・・・ってなる人は何使ってるのかって
このジジイは・・・てなるようなこと
CHAR_BITを使うとこのジジイは・・・ってなる人は何使ってるのかって
396デフォルトの名無しさん (ワッチョイ 4f5f-F1up)
2023/02/10(金) 13:11:57.08ID:ntA0RsMN0 numeric_limits<unsigned char>::digits なんだろうけど、圧倒的に記述が煩雑で
CHAR_BIT のほうが書きやすく読みやすいいから、「このジジイは・・・」と思う人が居ても
使えるところでは気にせず使えばいいかと。
CHAR_BIT のほうが書きやすく読みやすいいから、「このジジイは・・・」と思う人が居ても
使えるところでは気にせず使えばいいかと。
397はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf3e-F1up)
2023/02/10(金) 13:27:44.87ID:ETMiF/8h0 #if で切り分けるのに使う定数はマクロで定義されていないといけないんで使いどころはある。
398デフォルトの名無しさん (ワッチョイ 8f12-KDf3)
2023/02/10(金) 14:22:36.26ID:rXRs96IF0399はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf3e-F1up)
2023/02/10(金) 14:41:42.45ID:ETMiF/8h0 >>398
if constexpr は文を書けるところじゃないと使えないんで定義 (宣言) を切り替えるようなことができない。
この手の切り替えは割とごそっと切り替えることになると思うのでマクロは要るよ。
if constexpr は文を書けるところじゃないと使えないんで定義 (宣言) を切り替えるようなことができない。
この手の切り替えは割とごそっと切り替えることになると思うのでマクロは要るよ。
400デフォルトの名無しさん (ワッチョイ 835f-D0vN)
2023/02/12(日) 14:56:19.98ID:wUCNDItd0 template <class T , unsigned int pos , unsigned int len = 1>
struct bit_mask{
static constexpr T mask = ~( ~static_cast<T>(0) << (len) ) << pos;
// その他の処理
}
特定のビットをマスクする処理がしたくて↑のようなテンプレートクラスを作成したのだけど
warning: left operand of shift expression '(-1 << 1)' is negative [-fpermissive]
の警告が出てしまう
この警告が符号あり整数型を左シフトしてはいけないというのは分かるので、Tが必ず符号なし整数型であることを明示したいのだけどどうしたらいいだろう?
特殊化すると符号なしのバイト幅毎に処理を描かないといけなくなるし、もっと簡便なほうほうがあったりするのでしょうか?
struct bit_mask{
static constexpr T mask = ~( ~static_cast<T>(0) << (len) ) << pos;
// その他の処理
}
特定のビットをマスクする処理がしたくて↑のようなテンプレートクラスを作成したのだけど
warning: left operand of shift expression '(-1 << 1)' is negative [-fpermissive]
の警告が出てしまう
この警告が符号あり整数型を左シフトしてはいけないというのは分かるので、Tが必ず符号なし整数型であることを明示したいのだけどどうしたらいいだろう?
特殊化すると符号なしのバイト幅毎に処理を描かないといけなくなるし、もっと簡便なほうほうがあったりするのでしょうか?
402デフォルトの名無しさん (ワッチョイ 835f-t1ev)
2023/02/12(日) 16:21:40.75ID:JClhsLo90 >>400 ((static_cast<T>(1) << len) - 1) << pos じゃダメかな?
403デフォルトの名無しさん (ワッチョイ 1ef2-yWmK)
2023/02/12(日) 16:47:42.70ID:37/dTLGh0 >>402
オーバーフローする
オーバーフローする
404デフォルトの名無しさん (ワッチョイ eb01-QMhD)
2023/02/12(日) 17:18:17.77ID:mwZX9mma0 Tをunsignedにするんだよね?
ぐぐったらstd::make_unsignedとかいうのがあった
ぐぐったらstd::make_unsignedとかいうのがあった
405デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/12(日) 17:33:12.94ID:bx1Kk0PX0 Tがunsignedの場合だけ許可したいならrequires std::is_unsigned_v<T>
C++17以下でコンセプト使えないならstd::enable_ifでも使おう
無理矢理signedにして問題握り潰せって奴だらけで震える
C++17以下でコンセプト使えないならstd::enable_ifでも使おう
無理矢理signedにして問題握り潰せって奴だらけで震える
406デフォルトの名無しさん (ワッチョイ 835f-t1ev)
2023/02/12(日) 18:15:39.19ID:JClhsLo90 >>403 そこは >400 でも同じなのでは?
407デフォルトの名無しさん (ワッチョイ 3b7d-zpWe)
2023/02/13(月) 03:17:46.41ID:cPd3izqQ0 この手の警告/エラーはテンプレートを実装しただけでは出なくて、
テンプレートの実体化をした時にテンプレート実装部に警告/エラーが出るからややこしいんだよな
unsignedしか受け付けない前提で書いたコードをsignedで実体化するからこうなる
黙って内部でunsignedにするか
(using U=std::make_unsigned_t<T>; で全部U型で演算する)
signedをそもそも受け付けないか
(>>405 みたいにrequiresで受け付けるTを制限する)
の2択
テンプレートの実体化をした時にテンプレート実装部に警告/エラーが出るからややこしいんだよな
unsignedしか受け付けない前提で書いたコードをsignedで実体化するからこうなる
黙って内部でunsignedにするか
(using U=std::make_unsigned_t<T>; で全部U型で演算する)
signedをそもそも受け付けないか
(>>405 みたいにrequiresで受け付けるTを制限する)
の2択
408デフォルトの名無しさん (ワッチョイ eb01-QMhD)
2023/02/13(月) 06:42:50.66ID:Z5uQ91Hr0 そもそも「符号なしであることを明示」とか書いてるけど
俺が試した限り符号ありで実体化しないと出ないんだよな>>400の警告は
俺が試した限り符号ありで実体化しないと出ないんだよな>>400の警告は
409デフォルトの名無しさん (スフッ Sdaa-AGaU)
2023/02/13(月) 10:38:37.81ID:vihtyFuzd C++素人です
すみませんが、どなたか教えてください
こんなテンプレート関数があったとして、const を消す方法はないですか
const付いてても付いてなくても int* とか char* だけを判別したいので
毎回,余分にconst 判定入れるのだるいです
std::remove_const_t<T> とか試しても上手くいかないのでググってみたら、最上位じゃないので出来ないうんたらとか書いてあって...
最上位じゃないconstを外す方法があれば教えてください...
template<typename T>
auto function(T, t) {
if constexpr (std::is_same_v<T, int*> || std::is_same_v<T, const int*>) {
...
}
else if constexpr (std::is_same_v<T, char*> || std::is_same_v<T, const char*>) {
...
}
...以下、同パターン
}
すみませんが、どなたか教えてください
こんなテンプレート関数があったとして、const を消す方法はないですか
const付いてても付いてなくても int* とか char* だけを判別したいので
毎回,余分にconst 判定入れるのだるいです
std::remove_const_t<T> とか試しても上手くいかないのでググってみたら、最上位じゃないので出来ないうんたらとか書いてあって...
最上位じゃないconstを外す方法があれば教えてください...
template<typename T>
auto function(T, t) {
if constexpr (std::is_same_v<T, int*> || std::is_same_v<T, const int*>) {
...
}
else if constexpr (std::is_same_v<T, char*> || std::is_same_v<T, const char*>) {
...
}
...以下、同パターン
}
410デフォルトの名無しさん (ワッチョイ eb01-QMhD)
2023/02/13(月) 10:50:31.38ID:Z5uQ91Hr0 std::is_same_v<std::remove_const_t<std::remove_pointer_t<T>>, int>
411デフォルトの名無しさん (ワッチョイ d301-uphh)
2023/02/13(月) 10:52:33.56ID:/W47z0NL0412デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 10:56:46.31ID:FEO/Fb/70 constexprなんだからどうやっても外せないだろ
413デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 11:05:28.80ID:FEO/Fb/70 いや、出来るか
414デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 11:14:03.33ID:FEO/Fb/70 コンパイラバージョンの違いかな
remove_const<T> //C++11
remove_const_t<T> //C++14
remove_const<T> //C++11
remove_const_t<T> //C++14
415デフォルトの名無しさん (ワッチョイ eb01-QMhD)
2023/02/13(月) 11:27:21.16ID:Z5uQ91Hr0 template <class T>
using remove_const_t = typename remove_const<T>::type;
typenameと::typeを省略するためのただのエイリアスやで
using remove_const_t = typename remove_const<T>::type;
typenameと::typeを省略するためのただのエイリアスやで
416デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 11:33:32.46ID:FEO/Fb/70 remove_const_tがコンパイラ通らなければremove_const<T>::typeと書けば良いと
417デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/13(月) 13:02:27.22ID:B+Tt2JJW0 GCCもVCもデフォでC++14だかんな
418409 (スフッ Sdaa-AGaU)
2023/02/13(月) 13:15:51.58ID:vihtyFuzd >>410
ありがとうございます
上手くconst int* は拾えましたが、それだとただのint も拾ってしまいました
ポインタ のみ拾いたいです
環境書いてなかったです
VisualStudio のVC++で、設定はC++最新版です
ありがとうございます
上手くconst int* は拾えましたが、それだとただのint も拾ってしまいました
ポインタ のみ拾いたいです
環境書いてなかったです
VisualStudio のVC++で、設定はC++最新版です
419デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 13:32:25.61ID:FEO/Fb/70 少しは自分で考えたらどうなの?
420デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 13:41:00.86ID:FEO/Fb/70 !std::is_same_v<std::remove_const_t<std::remove_pointer_t<T>>,std::remove_const_t<T>>
421418 (スフッ Sdaa-AGaU)
2023/02/13(月) 14:00:14.31ID:vihtyFuzd422デフォルトの名無しさん (ワッチョイ deda-hBeh)
2023/02/13(月) 14:16:09.00ID:FEO/Fb/70 考えたら出来るようになる
ガムバレ
ガムバレ
423デフォルトの名無しさん (ワッチョイ 835f-t1ev)
2023/02/13(月) 14:55:08.76ID:TwATZYDk0 何がどう「出来ました」なのかよくわからないけど、 >409 を見る限りは
auto function(const int*), auto function(const char*) のオーバーロードで分けたほうがマシな
ものに見えるな。
auto function(const int*), auto function(const char*) のオーバーロードで分けたほうがマシな
ものに見えるな。
424デフォルトの名無しさん (ワッチョイ ca7c-D0vN)
2023/02/13(月) 17:23:27.09ID:v/vixYv70 そこまでして本当にテンプレートが必要か?って考える必要があると思うわw
殆どがテンプレートなんて必要ないだろw
殆どがテンプレートなんて必要ないだろw
425デフォルトの名無しさん (スッップ Sdaa-zpWe)
2023/02/13(月) 18:18:43.60ID:vSfDWYC1d 関数外にテンプレート1つ置いてしまった方がシンプルになるがね
constを消すではなくなるが
template<class T, class TTarget>
constexpr bool pointer_or_constpointer_v =
std::is_same_v<T, TTarget*> ||
std::is_same_v<T, const TTarget*>;
template<class T>
auto func(T t){
if constexpr(pointer_or_constpointer_v<T, int>){
...
}
}
constを消すではなくなるが
template<class T, class TTarget>
constexpr bool pointer_or_constpointer_v =
std::is_same_v<T, TTarget*> ||
std::is_same_v<T, const TTarget*>;
template<class T>
auto func(T t){
if constexpr(pointer_or_constpointer_v<T, int>){
...
}
}
426デフォルトの名無しさん (ガックシ 066f-p0Ho)
2023/02/15(水) 13:51:43.45ID:vrVppx/z6 困っています.助けてください.
まず作りたいものを以下に記します.
クラスObjのオブジェクトが構築されると,
そのオブジェクト内でクラスObjのオブジェクトが0~2個生成される.
(生成されるオブジェクトの個数は一様乱数で決定される)
結果的に木構造のようなデータ構造になる.
クラスObjのオブジェクトはシリアルナンバと自分を作ったオブジェクト(親)へのポインタを持っている.
クラスObjは自分を作った親をたどることで,どのようにして(どのオブジェクトを親として)生成されたかを知ることができる.
で,作ってみたものを以下に張り付けておきます.
https://wandbox.org/permlink/lXq19mN1URMQhyh5
上記のプログラムで発生している問題を以下に記述します.
起点となるクラスObjのオブジェクトobjが生成された時点では,
各オブジェクトは自分自身を生成してくれた親オブジェクトへのポインタを正しく保持しているようなのですが,その後,メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがあるようです.
なにがいけないのか,どうすれば意図した通りに動いてくれるのかご教授くださると助かります.
よろしくお願いいたします.
まず作りたいものを以下に記します.
クラスObjのオブジェクトが構築されると,
そのオブジェクト内でクラスObjのオブジェクトが0~2個生成される.
(生成されるオブジェクトの個数は一様乱数で決定される)
結果的に木構造のようなデータ構造になる.
クラスObjのオブジェクトはシリアルナンバと自分を作ったオブジェクト(親)へのポインタを持っている.
クラスObjは自分を作った親をたどることで,どのようにして(どのオブジェクトを親として)生成されたかを知ることができる.
で,作ってみたものを以下に張り付けておきます.
https://wandbox.org/permlink/lXq19mN1URMQhyh5
上記のプログラムで発生している問題を以下に記述します.
起点となるクラスObjのオブジェクトobjが生成された時点では,
各オブジェクトは自分自身を生成してくれた親オブジェクトへのポインタを正しく保持しているようなのですが,その後,メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがあるようです.
なにがいけないのか,どうすれば意図した通りに動いてくれるのかご教授くださると助かります.
よろしくお願いいたします.
427デフォルトの名無しさん (ワッチョイ 0abd-D0vN)
2023/02/15(水) 14:37:38.33ID:u0VdKeZj0 >>426
警告が出ているのになぜ直さない? それがすべてじゃないの?
警告が出ているのになぜ直さない? それがすべてじゃないの?
428デフォルトの名無しさん (ガックシ 066f-p0Ho)
2023/02/15(水) 16:15:28.85ID:vrVppx/z6429デフォルトの名無しさん (ワッチョイ 1ecf-8lmq)
2023/02/15(水) 17:54:06.96ID:jBF4rRuI0 55行目にchildObj.reserve(2);を入れろ
また、人にコードを示すなら本質的に関連のない警告が出ない状態のコードをまず貼れ
また、人にコードを示すなら本質的に関連のない警告が出ない状態のコードをまず貼れ
430デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/15(水) 18:19:34.79ID:M3Yzq8DS0 警告警察うざい
警告を消す為にバグを仕込むヤツを何度も見てきた
警告を消す為にバグを仕込むヤツを何度も見てきた
431デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/15(水) 18:20:49.58ID:M3Yzq8DS0 警告が出るかどうかは環境による
C++のルールに従っているなら警告は無視
C++のルールに従っているなら警告は無視
432デフォルトの名無しさん (ワッチョイ 0f5f-A0Hd)
2023/02/15(水) 18:29:25.36ID:QsOS31DQ0433デフォルトの名無しさん (テテンテンテン MMc6-7nFJ)
2023/02/15(水) 19:15:06.12ID:bwjUnWHEM >>426
バグを調査するときの重要な考え方として「バグが確実に再現する条件/確実に発生しない条件を明確化する」というのがある。
この場合も、まずはバグ「メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがある」の条件を明確化するために「訳の分からないアドレスはどの変数に入っているのか」「訳の分からないアドレスはどういうバケツリレーで渡されているのか」「訳の分からないアドレスは最初にどこにあるのか」あたりを明確化するのがよろしいかと。
そもそも>>426で「メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがある」は再現するの?
バグを調査するときの重要な考え方として「バグが確実に再現する条件/確実に発生しない条件を明確化する」というのがある。
この場合も、まずはバグ「メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがある」の条件を明確化するために「訳の分からないアドレスはどの変数に入っているのか」「訳の分からないアドレスはどういうバケツリレーで渡されているのか」「訳の分からないアドレスは最初にどこにあるのか」あたりを明確化するのがよろしいかと。
そもそも>>426で「メソッドrootsを呼んだときには親オブジェクトへのポインタが訳の分からないアドレスを指すことがある」は再現するの?
434デフォルトの名無しさん (ワッチョイ 0f5f-A0Hd)
2023/02/15(水) 19:33:01.86ID:QsOS31DQ0 ああemplace_backしたときにchildObjが再確保されてparentが古いObjを指したままになってるのか
だから>>429が正解ですね
だから>>429が正解ですね
435デフォルトの名無しさん (ワッチョイ 2bf0-8lmq)
2023/02/15(水) 19:57:27.07ID:LxP0k8m20 謎の上から目線で質問するやし多くね
436デフォルトの名無しさん (スッップ Sdaa-zpWe)
2023/02/15(水) 20:25:17.26ID:sKFuDIvBd437デフォルトの名無しさん (ワッチョイ ca7c-D0vN)
2023/02/15(水) 20:43:32.06ID:aDsLy0wQ0 こんなプログラム見ていると頭痛くなるw
438デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/15(水) 21:25:47.83ID:SA6Um8/R0 >>430
ほんこれ
ほんこれ
439デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/15(水) 22:04:10.79ID:3ATKFMkE0 >>437
>こんなプログラム見ていると頭痛くなるw
誠に申し訳ない。
なんせ、近くにメンターがいないので自力でなんとかせにゃならんのです。
既にいくつか助言をいただいているので、もう少し頑張ってみます。
ゆるゆる見守ってくださると嬉しいです。
引き続きよろしくお願いいたします。
>こんなプログラム見ていると頭痛くなるw
誠に申し訳ない。
なんせ、近くにメンターがいないので自力でなんとかせにゃならんのです。
既にいくつか助言をいただいているので、もう少し頑張ってみます。
ゆるゆる見守ってくださると嬉しいです。
引き続きよろしくお願いいたします。
440デフォルトの名無しさん (ワッチョイ ff9c-nJVz)
2023/02/15(水) 22:07:21.36ID:k8KlMP7i0 なんでこんなに偉そうなの
441デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/15(水) 22:10:23.23ID:3ATKFMkE0 >>431
環境はvisual studio pro 2019で、皆様のご助言を仰ぐためにwandboxに貼りました。
警告に関しては、あまり気にせずコーディングしています‥
よくない癖、ですよね(汗)
環境はvisual studio pro 2019で、皆様のご助言を仰ぐためにwandboxに貼りました。
警告に関しては、あまり気にせずコーディングしています‥
よくない癖、ですよね(汗)
442デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/15(水) 22:13:56.75ID:3ATKFMkE0443デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/15(水) 22:14:34.95ID:eQXhj1Qw0444デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/15(水) 22:18:19.81ID:3ATKFMkE0445デフォルトの名無しさん (ワッチョイ 2b69-t1ev)
2023/02/15(水) 22:35:45.35ID:3Nk0h2mJ0 警告は潰さなければならない
警告が出たら検討しなければならない
今回の様に思いっ切りバグを示していることがあるから
検討した結果無視していいと判断しても、警告自体は消さなければならない
そのままじゃ次のビルドでまた出て、どんどん溜まって「これ検討したんだっけ??」ってなるから
この警告消しは#pragma warningでいい
警告が出たら検討しなければならない
今回の様に思いっ切りバグを示していることがあるから
検討した結果無視していいと判断しても、警告自体は消さなければならない
そのままじゃ次のビルドでまた出て、どんどん溜まって「これ検討したんだっけ??」ってなるから
この警告消しは#pragma warningでいい
446デフォルトの名無しさん (ワッチョイ 0710-8lmq)
2023/02/15(水) 22:42:19.58ID:YqKefIHG0 警告消すのにバグ仕込むスキルの人なら機能追加してもバグ仕込むだろ
447デフォルトの名無しさん (ワッチョイ 2355-RnMg)
2023/02/15(水) 23:06:20.39ID:Xq18TORR0 ここは20年前のままで安心した。久しぶりにC++読んだけど、普通に読めたわ。
どうでもよい会話をして、ろくに進まない感じ流石です。
どうでもよい会話をして、ろくに進まない感じ流石です。
448デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 00:34:35.79ID:G6Y1BfCz0 じゃあまた20年後な
449デフォルトの名無しさん (ワッチョイ ea6a-0SWJ)
2023/02/16(木) 00:46:09.85ID:N10j/iiy0450デフォルトの名無しさん (ワッチョイ 0f5f-RnuH)
2023/02/16(木) 02:31:44.69ID:PGUS078z0 >>444
問題が発生したら乱数のシードをそのとき使った値で固定する
そしてデバッガの使い方を覚える
https://learn.microsoft.com/ja-jp/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=vs-2022
問題が発生したら乱数のシードをそのとき使った値で固定する
そしてデバッガの使い方を覚える
https://learn.microsoft.com/ja-jp/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=vs-2022
451デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/16(木) 07:13:21.97ID:kLJI764s0 > この警告消しは#pragma warningでいい
警告警察の主張の本質がこれ
警告警察の主張の本質がこれ
452デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 07:57:43.18ID:ZOPwX+PA0 www
453デフォルトの名無しさん (テテンテンテン MMc6-7nFJ)
2023/02/16(木) 08:05:05.35ID:u8Mt8J3eM >>443
こういうやつが居るから、管理側は「勝手に警告を無視できないRustにしよう」と言い始めるんだよねぇ。
実際、コードの精査の難しい大規模プロジェクトとかだと、無能が成果を出せないという意味で効果的だし。
こういうやつが居るから、管理側は「勝手に警告を無視できないRustにしよう」と言い始めるんだよねぇ。
実際、コードの精査の難しい大規模プロジェクトとかだと、無能が成果を出せないという意味で効果的だし。
454デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 08:13:16.28ID:ZOPwX+PA0 設計がまともかどうか判断出来ない無能が警告を気にする
455デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 08:15:20.48ID:LB1U3BvE0456デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 08:17:32.72ID:ZOPwX+PA0 アホが検討した結果など無意味
457デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 08:20:22.98ID:LB1U3BvE0458デフォルトの名無しさん (テテンテンテン MMc6-7nFJ)
2023/02/16(木) 08:20:39.33ID:u8Mt8J3eM459デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 08:24:11.83ID:ZOPwX+PA0 別の環境に移植して警告が何千個も出て来たら
わざわざ全部消すの?
アホじゃね?
わざわざ全部消すの?
アホじゃね?
460デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 08:28:56.23ID:ZOPwX+PA0 「検討しました」は解析ツールのコメントに残す物
わざわざコードを変えて消す物じゃない
わざわざコードを変えて消す物じゃない
461デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 10:01:01.26ID:LB1U3BvE0462デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 10:03:35.75ID:G6Y1BfCz0 メモリがわからないままC++してもいずれ破綻するのは目に見えてるからな…
shared_ptrを使えば再確保によるポインタの無効化は回避できるかもしれんけど、
そしたら今度は循環参照にはまりそう
shared_ptrを使えば再確保によるポインタの無効化は回避できるかもしれんけど、
そしたら今度は循環参照にはまりそう
463デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/16(木) 11:32:34.13ID:u/aa82YP0464デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/16(木) 11:42:26.72ID:u/aa82YP0 >>458
>あと「訳分からないアドレス」というレベルなら生ポインタは使わない方がいいので、すべてshared_ptrに置き替える。
もともとC言語を触っていたので生ポの方が好きなんです。
でも、スマポに統一すべし、という意見には賛成なので、その様に直すつもりではおりますが、
enable_shared_from_thisを継承せよ
とか、一方で
コンストラクタ内でshared_from_this()は使うな
とか、色々クリアせねばならない問題もあり、解決には相当な勉強が必要そうで、時間がかかる見込みです。
>あと「訳分からないアドレス」というレベルなら生ポインタは使わない方がいいので、すべてshared_ptrに置き替える。
もともとC言語を触っていたので生ポの方が好きなんです。
でも、スマポに統一すべし、という意見には賛成なので、その様に直すつもりではおりますが、
enable_shared_from_thisを継承せよ
とか、一方で
コンストラクタ内でshared_from_this()は使うな
とか、色々クリアせねばならない問題もあり、解決には相当な勉強が必要そうで、時間がかかる見込みです。
465デフォルトの名無しさん (スプッッ Sd4a-nNBs)
2023/02/16(木) 12:24:54.96ID:zXNtK8a2d 自分の頭で考えることを放棄してるやつほど
偉そうにしてるやつの言うがままに洗脳されやすい
偉そうにしてるやつの言うがままに洗脳されやすい
466デフォルトの名無しさん (テテンテンテン MMc6-7nFJ)
2023/02/16(木) 12:25:33.04ID:OOEMlbNYM467デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/16(木) 12:43:03.84ID:u/aa82YP0 >>466
C++って何だかカッコいいじゃないですか。
noexceptとかC言語な人には無縁なキーワードが盛り沢山だし、いかにもアタマ良さそうな雰囲気がたまらんのです。
C言語でできることはC++でもできるようになりたいな、とゆるゆる独学している次第です。
C++って何だかカッコいいじゃないですか。
noexceptとかC言語な人には無縁なキーワードが盛り沢山だし、いかにもアタマ良さそうな雰囲気がたまらんのです。
C言語でできることはC++でもできるようになりたいな、とゆるゆる独学している次第です。
468デフォルトの名無しさん (ワッチョイ 2bf0-8lmq)
2023/02/16(木) 13:36:26.42ID:juZ9Em/90 人が書いた部分で警告大量に出るから無視してるんだが
お前ら一人で書いてんのか?
お前ら一人で書いてんのか?
469デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/16(木) 13:38:12.19ID:kLJI764s0 一番大事なものをちゃんと持ってるな
応援するぜ
応援するぜ
470デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/16(木) 13:39:41.99ID:kLJI764s0471デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 13:54:28.24ID:G6Y1BfCz0 >>464
そもそもコンストラクタで子供のインスタンスを作らないほうがいいんじゃね?
そもそもコンストラクタで子供のインスタンスを作らないほうがいいんじゃね?
472デフォルトの名無しさん (ワッチョイ 2b69-t1ev)
2023/02/16(木) 14:00:08.48ID:UCNi870E0 何のために警告出させてんだよ
端からガン無視する気なら、コンパイルオプションで警告止めちゃえよ
端からガン無視する気なら、コンパイルオプションで警告止めちゃえよ
473デフォルトの名無しさん (ワントンキン MMfa-EB70)
2023/02/16(木) 14:05:54.88ID:gmYGasSwM まさにコレでしたって結局どう直したの?
474デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 14:30:11.87ID:G6Y1BfCz0 あとchildObjから削除しないなら、ポインタを辿って探索せんでも、
シーケンシャルナンバーでランダムアクセスすればいいじゃんねぇ
シーケンシャルナンバーでランダムアクセスすればいいじゃんねぇ
475デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 14:32:02.54ID:G6Y1BfCz0 ああ、インスタンスデータなんか…すまん忘れてくれw
476はちみつ餃子 ◆8X2XSCHEME (ワッチョイ eb3e-t1ev)
2023/02/16(木) 15:58:03.67ID:INPRljPt0 >>466
「だけでも」っていってもそれに連なる諸々の概念がひっついてるから部分的にやるのは難しいんだよな。
C++ のスマートポインタはクラスとして実装されてるから C++ の型システム抜きに
スマートポインタだけ C に移植ってわけにはいかないし、
参照の振る舞いを説明するには値カテゴリを増やして場合分けしなきゃならんし。
「だけでも」っていってもそれに連なる諸々の概念がひっついてるから部分的にやるのは難しいんだよな。
C++ のスマートポインタはクラスとして実装されてるから C++ の型システム抜きに
スマートポインタだけ C に移植ってわけにはいかないし、
参照の振る舞いを説明するには値カテゴリを増やして場合分けしなきゃならんし。
477デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/16(木) 16:08:00.45ID:u/aa82YP0 ええと、最終的にはファイルから与えたデータに基づいて木構造を構成し、その木構造でナニかしようということを目論んでまして、そうなるとコンストラクタ内で子供のインスタンスを作ればいいんじゃないか、と考えた次第です。
データをあるオブジェクトに喰わせたら、勝手に木構造が出来上がるようにしたかったのです。
で、そのプロトタイプを作る段階でつまづいていた次第です。
とりあえず、皆様のご助言で動くようになったものについては明日以降にw
andboxに貼ります。
引き続きご指導をお願いいたします。
データをあるオブジェクトに喰わせたら、勝手に木構造が出来上がるようにしたかったのです。
で、そのプロトタイプを作る段階でつまづいていた次第です。
とりあえず、皆様のご助言で動くようになったものについては明日以降にw
andboxに貼ります。
引き続きご指導をお願いいたします。
478デフォルトの名無しさん (アウアウウー Sa4f-STvZ)
2023/02/16(木) 16:40:39.41ID:5AcA3bi5a479デフォルトの名無しさん (ワッチョイ 46ad-D0vN)
2023/02/16(木) 17:06:59.28ID:hcbjKjsO0 std::mapのinsert()すると、std::vectorみたいにキーや値のメモリ再配置って起きる?
480デフォルトの名無しさん (ワッチョイ ff9c-7nFJ)
2023/02/16(木) 17:34:19.19ID:of28AX7H0 >>476
メモリ管理だけコンパイラ側でやるなら、クラスその他諸々は無くても大丈夫じゃない?
メモリ管理だけコンパイラ側でやるなら、クラスその他諸々は無くても大丈夫じゃない?
481デフォルトの名無しさん (ワッチョイ 46ad-D0vN)
2023/02/16(木) 17:44:16.85ID:hcbjKjsO0482デフォルトの名無しさん (スッップ Sdaa-zpWe)
2023/02/16(木) 17:51:19.65ID:OTlvZlbDd 最終的にはメモリ領域の所有権に行き着くはずだが
Cでどうやって所有権の貸し出し/譲渡を表現するんだよ
所有者が複数になる場合もあるんだぞ
Cでどうやって所有権の貸し出し/譲渡を表現するんだよ
所有者が複数になる場合もあるんだぞ
483デフォルトの名無しさん (オイコラミネオ MM8b-AGaU)
2023/02/16(木) 18:34:49.77ID:RFcoGR7kM484デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 18:42:26.35ID:LB1U3BvE0 >>482
shared_ptr 相当をコンパイラーが実装するだけでしょ?
shared_ptr 相当をコンパイラーが実装するだけでしょ?
485デフォルトの名無しさん (アウアウウー Sa4f-M3eb)
2023/02/16(木) 18:43:11.20ID:9Qy/VbOQa486デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 18:43:28.33ID:G6Y1BfCz0 >>477
まあ、子供をいくつか作るぐらいなら問題はないかな
ちなみに自分はコンストラクタであまりややこしいことはしないようにしてる
もし大きな処理の結果をもとにインスタンスを初期化したいときは、
全部コンストラクタでやるんじゃなくて、その処理だけを前もって実行してる
まあ、子供をいくつか作るぐらいなら問題はないかな
ちなみに自分はコンストラクタであまりややこしいことはしないようにしてる
もし大きな処理の結果をもとにインスタンスを初期化したいときは、
全部コンストラクタでやるんじゃなくて、その処理だけを前もって実行してる
487デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/16(木) 18:46:08.39ID:kdIqPIYR0 std::mapのinsert、emplace、eraseは内部要素へのイテレータを無効化しないことが保証されてる(当然eraseで消した要素そのものは除く)
なおstd::unordered_mapの同名関数はrehashingが起きてイテレータが無効になることがある
なおstd::unordered_mapの同名関数はrehashingが起きてイテレータが無効になることがある
488デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 18:59:23.43ID:G6Y1BfCz0489デフォルトの名無しさん (ワッチョイ a74e-8lmq)
2023/02/16(木) 19:08:57.32ID:UWxnAkIX0 >>488
関数のデストラクタ(returnするときに必ず呼ぶ処理)が欲しくなることはあるね
関数のデストラクタ(returnするときに必ず呼ぶ処理)が欲しくなることはあるね
490デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 19:35:21.87ID:LB1U3BvE0491デフォルトの名無しさん (ワッチョイ 835f-uIvN)
2023/02/16(木) 19:56:28.04ID:G6Y1BfCz0492デフォルトの名無しさん (ワッチョイ a790-kbar)
2023/02/16(木) 20:41:32.26ID:J+JHFBNF0 数年前にawsの仕事したとき
g++のバージョンが古くて
unique_ptrを使ってたコードを泣きながら
生ポにしたことがある
g++のバージョンが古くて
unique_ptrを使ってたコードを泣きながら
生ポにしたことがある
493デフォルトの名無しさん (ワッチョイ 8ada-hBeh)
2023/02/16(木) 20:57:10.46ID:dWYqZniE0 バカかw
自分でクラスを作ればいいだろ
スマポなんてめちゃ簡単な仕組みだぞ
自分でクラスを作ればいいだろ
スマポなんてめちゃ簡単な仕組みだぞ
494はちみつ餃子 ◆8X2XSCHEME (ワッチョイ eb3e-t1ev)
2023/02/16(木) 20:58:28.56ID:INPRljPt0 >>493
右辺値参照の仕組みがないと上手いこと表現できないよ。
右辺値参照の仕組みがないと上手いこと表現できないよ。
495デフォルトの名無しさん (ワッチョイ 8ada-hBeh)
2023/02/16(木) 21:02:17.61ID:dWYqZniE0 そこはリファレンスカウンタを使ったトラディショナルな方法でやるのよ
速度は少し遅くなるけど
速度は少し遅くなるけど
496デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/16(木) 21:12:06.74ID:kdIqPIYR0 古いコンパイラで無理やり動かすなら#define unique_ptr auto_ptrという手も…
497はちみつ餃子 ◆8X2XSCHEME (ワッチョイ eb3e-t1ev)
2023/02/16(木) 21:12:18.96ID:INPRljPt0 すでに std::unique_ptr で正しく動いているコードであるという前提があるなら
たしかにそれでも致命的な矛盾は起きなさそうに思えるな。
たしかにそれでも致命的な矛盾は起きなさそうに思えるな。
498デフォルトの名無しさん (ワイーワ2 FF42-SSNO)
2023/02/16(木) 21:50:41.49ID:RFs7/Qh+F g++なんだから新しいバージョンのをビルドすれば良いじゃん?
499デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/16(木) 23:12:23.80ID:ZOPwX+PA0500デフォルトの名無しさん (ワッチョイ a74e-8lmq)
2023/02/16(木) 23:27:28.78ID:UWxnAkIX0 warningだらけだとバグに繋がる重要なwarningを見逃す可能性があるから、可能な限り消した方が良いと思う
どうでもいいやつはコンパイルオプションで消しても良いし
どうでもいいやつはコンパイルオプションで消しても良いし
501デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/16(木) 23:46:07.27ID:LB1U3BvE0502デフォルトの名無しさん (ワッチョイ 2bf0-8lmq)
2023/02/16(木) 23:59:12.84ID:juZ9Em/90 「C/C++ warning一万個全部消してみた」
てタイトルで動画アップして欲しい
てタイトルで動画アップして欲しい
503デフォルトの名無しさん (ワッチョイ ca7c-D0vN)
2023/02/17(金) 00:31:24.08ID:SMzkkCfo0 ピコーン!全ての警告を無効にすれば良いニダ!
504デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/17(金) 06:19:19.83ID:KJxAAApA0505デフォルトの名無しさん (ワッチョイ 8ada-hBeh)
2023/02/17(金) 06:22:34.59ID:t3uhpImP0 「符号付きと符号なしの比較がされました」
分かっとるわ!
分かっとるわ!
506デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 06:27:23.48ID:L7ElXWdV0 それはオーバーフロー起きないかちゃんと確認しないとダメだろ
C++使っててそこルーズなの信じられんわ
C++使っててそこルーズなの信じられんわ
507デフォルトの名無しさん (ワッチョイ 8ada-hBeh)
2023/02/17(金) 06:31:19.84ID:t3uhpImP0 文字列の長さの比較がintの上限に達することはないし負になることもないのよ
508デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 06:47:57.06ID:L7ElXWdV0 だったら本当にそうであることを確認しないといけないし、そんなものにsignedの変数使ってるのがおかしいかもしれない
その値は本当に文字列の長さか?途中でエラーが起きたら-1とかが入ってる可能性はないのか?
そういう危険なバグの兆候を知らせるためにまともなコンパイラは警告するんだよ
その値は本当に文字列の長さか?途中でエラーが起きたら-1とかが入ってる可能性はないのか?
そういう危険なバグの兆候を知らせるためにまともなコンパイラは警告するんだよ
509デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 06:49:33.54ID:L7ElXWdV0 一応言っとくと自分が言ってるのはプロダクトコードの話で
本人がその場でしか使わない書き捨てのオモチャなら勝手にすればいいと思う
本人がその場でしか使わない書き捨てのオモチャなら勝手にすればいいと思う
510デフォルトの名無しさん (アウアウウー Sa4f-sPc2)
2023/02/17(金) 06:55:47.58ID:YltW73tNa511デフォルトの名無しさん (ワッチョイ 8ada-hBeh)
2023/02/17(金) 07:09:21.56ID:t3uhpImP0 delphiから移植された関数の殆どが文字数をintで返す仕様でな
それ一々符号なしに変換するのが面倒でな
それ一々符号なしに変換するのが面倒でな
512デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 07:13:48.65ID:iM8Xviia0 使ってないパラメーターがあります
使ってない関数があります
警告が出ないようにわざわざ使う
ただのアホ
使ってない関数があります
警告が出ないようにわざわざ使う
ただのアホ
513デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 07:15:49.11ID:L7ElXWdV0 ほとんどなのね
「全部が必ず」正の値を返すことが保証されてるんじゃなければますますチェックコードが必要だな
実にバグが出やすそうな所に見えるね
「全部が必ず」正の値を返すことが保証されてるんじゃなければますますチェックコードが必要だな
実にバグが出やすそうな所に見えるね
514デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 07:17:50.92ID:L7ElXWdV0515デフォルトの名無しさん (スプッッ Sdaa-nNBs)
2023/02/17(金) 07:27:16.44ID:fvM55ACEd 新入り「使ってないから消しました
古株「ちょ・・・おま(汗
古株「ちょ・・・おま(汗
516デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 07:30:03.02ID:iM8Xviia0 >>514
ド素人ですか?
ド素人ですか?
517デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 07:32:46.94ID:L7ElXWdV0 え?コンパイラが警告出した変数や関数だろ?使ってないローカル変数や非公開関数なんだろ?
それを消して挙動が変わるってことは何か恐ろしいメモリ破壊系バグが顕在化したってことだ
新人君お手柄やね
それを消して挙動が変わるってことは何か恐ろしいメモリ破壊系バグが顕在化したってことだ
新人君お手柄やね
518デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 07:50:26.17ID:iM8Xviia0 ド素人丸出しwww
警告警察の中身はこんなレベルのアホ
警告警察の中身はこんなレベルのアホ
519デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 07:53:51.79ID:L7ElXWdV0 そうか
お前みたいな自称ド玄人が人命やインフラに関わるコードを書いてないことを願うわ
お前みたいな自称ド玄人が人命やインフラに関わるコードを書いてないことを願うわ
520デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 08:01:10.11ID:iM8Xviia0 ソフトの品質をコンパイラの警告に頼る方がヤバいと思うよ
521デフォルトの名無しさん (スップ Sdaa-ATHX)
2023/02/17(金) 08:14:39.58ID:xqCJita0d カーエレって割とそんな感じよ
522デフォルトの名無しさん (スッププ Sdaa-SN/d)
2023/02/17(金) 08:26:51.29ID:CXQijN6cd コンパイラの警告さえ対処しない奴が品質を語るな
523デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 08:36:18.04ID:iM8Xviia0 コンパイラの警告の数でソフトの品質を語るアホ
524デフォルトの名無しさん (スッププ Sdaa-SN/d)
2023/02/17(金) 09:18:35.55ID:DsIzGE7Qd シートベルトしてるだけで安全運転だと思ってる奴はヤバい←正しい
だからシートベルトしなくていい←絶対運転しちゃいけないアホ
だからシートベルトしなくていい←絶対運転しちゃいけないアホ
525デフォルトの名無しさん (ガックシ 066f-p0Ho)
2023/02/17(金) 09:52:37.27ID:YLDwb/gm6 >>477
一応の完成版を以下に貼りました。
https://wandbox.org/permlink/lXq19mN1URMQhyh5
生ポをスマポへ変えるのは一旦棚上げしています。
ありがとうございました。
一応の完成版を以下に貼りました。
https://wandbox.org/permlink/lXq19mN1URMQhyh5
生ポをスマポへ変えるのは一旦棚上げしています。
ありがとうございました。
526デフォルトの名無しさん (ワッチョイ 0f5f-lJcr)
2023/02/17(金) 10:11:56.50ID:sv7zAam40527デフォルトの名無しさん (スプッッ Sdaa-nNBs)
2023/02/17(金) 12:12:37.95ID:A4U2N4R7d 対処はしてるぞ
内容を読んだうえでの決定なんだから
内容を読んだうえでの決定なんだから
528デフォルトの名無しさん (スップ Sd4a-/uvd)
2023/02/17(金) 12:16:56.46ID:CMo6McFXd >>524
シートベルトは法律で決まってる
警告を消すのがルールで決まってる職場なら
警告かルールいずれかを消せ
そうじゃないならどうでもいい
ソフトの品質を担保するなら
警告の中身を見ずに単に隠すのが一番悪い
また
全ての警告を無条件で検証しろというなら
全ての演算も無条件で検証しろ
C++の演算はオーバーフローする可能性があるんだから
無意味な警告は出す方が悪い
コンパイラの設定で無効にしろ
コードを変えて隠す物じゃない
シートベルトは法律で決まってる
警告を消すのがルールで決まってる職場なら
警告かルールいずれかを消せ
そうじゃないならどうでもいい
ソフトの品質を担保するなら
警告の中身を見ずに単に隠すのが一番悪い
また
全ての警告を無条件で検証しろというなら
全ての演算も無条件で検証しろ
C++の演算はオーバーフローする可能性があるんだから
無意味な警告は出す方が悪い
コンパイラの設定で無効にしろ
コードを変えて隠す物じゃない
529デフォルトの名無しさん (スップ Sd4a-/uvd)
2023/02/17(金) 12:17:47.03ID:CMo6McFXd コードの検証ならちゃんとした検証ツールを使え
530デフォルトの名無しさん (ガックシ 066f-p0Ho)
2023/02/17(金) 14:00:35.55ID:YLDwb/gm6531デフォルトの名無しさん (スッップ Sdaa-zpWe)
2023/02/17(金) 18:18:23.14ID:VB0sml4Xd >>530
流し読んだ感じだけど
1.
void roots( unsigned );
> // 自らがどのようにして生まれたかを調べるメソッド
> // 第 serialNo 番のインスタンスを探索する.
自分の親を探索するのか指定serialNoが子供にいるのかどっちだよ
あと検索なのでメンバを上書きしないはず。関数自体をconstにするべき
2.
engineは親のengineを参照すればいいのでわざわざ引数で受け取る必要はない
コンストラクタは親を受け取るのとengineを受け取る2種類用意したほうがいいんじゃない?
3.
numberフィールドはいらん(名前もchildCountに変えるべきだが)
childObj.size()を見ればいい
getter関数作ったほうがいい
4.
isLeafフィールドもchildObj().size()==0見れば判断できる
流し読んだ感じだけど
1.
void roots( unsigned );
> // 自らがどのようにして生まれたかを調べるメソッド
> // 第 serialNo 番のインスタンスを探索する.
自分の親を探索するのか指定serialNoが子供にいるのかどっちだよ
あと検索なのでメンバを上書きしないはず。関数自体をconstにするべき
2.
engineは親のengineを参照すればいいのでわざわざ引数で受け取る必要はない
コンストラクタは親を受け取るのとengineを受け取る2種類用意したほうがいいんじゃない?
3.
numberフィールドはいらん(名前もchildCountに変えるべきだが)
childObj.size()を見ればいい
getter関数作ったほうがいい
4.
isLeafフィールドもchildObj().size()==0見れば判断できる
532デフォルトの名無しさん (ワントンキン MMfa-EB70)
2023/02/17(金) 18:50:34.09ID:HTK/9d/ZM もう解決してんだからアドバイス気取りでがんばって蛇足を加えんでもいいよ
533デフォルトの名無しさん (ワッチョイ 9ebb-p0Ho)
2023/02/17(金) 21:00:18.60ID:RlPt61in0 >>531
そこで図々しいお願いですが、そのように改造してくださると私にとって大いに勉強になります。
一肌脱いではいただけませんでしょうか?
生ポをスマポに直すのすら頭を抱えているヘタレなので、ここに棲まう先輩方のご鞭撻を是非に賜りたいです。
そこで図々しいお願いですが、そのように改造してくださると私にとって大いに勉強になります。
一肌脱いではいただけませんでしょうか?
生ポをスマポに直すのすら頭を抱えているヘタレなので、ここに棲まう先輩方のご鞭撻を是非に賜りたいです。
534デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 21:26:59.48ID:L7ElXWdV0 >>528
分かってんじゃん
C++の整数演算は無条件で全て検証が必要だよ
おっしゃる通りオーバーフローするかもしれないし、それが大きなセキュリティ問題につながった例もたくさんあるからね
特にナイーブにsigned/unsigned間比較や縮小変換をしてる所は危険だし、それを知らせてくれるコンパイラ警告は実に有用なものだ
もちろんプロダクトコードの話ね
分かってんじゃん
C++の整数演算は無条件で全て検証が必要だよ
おっしゃる通りオーバーフローするかもしれないし、それが大きなセキュリティ問題につながった例もたくさんあるからね
特にナイーブにsigned/unsigned間比較や縮小変換をしてる所は危険だし、それを知らせてくれるコンパイラ警告は実に有用なものだ
もちろんプロダクトコードの話ね
535デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/17(金) 22:01:30.31ID:wDoqrfUd0 縮小変換が警告されるかどうかと問題が起きないようにロジック組んであるかどうかは別問題だね
536デフォルトの名無しさん (ワッチョイ ff7c-DG2X)
2023/02/17(金) 22:05:57.15ID:L7ElXWdV0 それはそう
コンパイラが知らせてくれるのは一番基本的な所だけだからな
逆に言えばそれすら対処してないようじゃ0点
コンパイラが知らせてくれるのは一番基本的な所だけだからな
逆に言えばそれすら対処してないようじゃ0点
537デフォルトの名無しさん (スッップ Sdaa-zpWe)
2023/02/17(金) 22:14:14.63ID:VB0sml4Xd >>533
丸投げすんな自分でやれ
丸投げすんな自分でやれ
538デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/17(金) 22:17:56.86ID:wDoqrfUd0 >>536
何がそれはそうなの?
何がそれはそうなの?
539デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 22:41:19.78ID:iM8Xviia0540デフォルトの名無しさん (ワッチョイ d301-GLFt)
2023/02/17(金) 22:44:01.98ID:KJxAAApA0 >>512
> 警告が出ないようにわざわざ使う
えっ、そんなレベルなのw
そりゃそんな職場なら
> 警告を消す為にバグを仕込むヤツを何度も見てきた
とかもあるんだろうな...
なんか可哀想になってきたわ
> 警告が出ないようにわざわざ使う
えっ、そんなレベルなのw
そりゃそんな職場なら
> 警告を消す為にバグを仕込むヤツを何度も見てきた
とかもあるんだろうな...
なんか可哀想になってきたわ
541デフォルトの名無しさん (ワッチョイ 46ad-D0vN)
2023/02/17(金) 22:46:57.97ID:mQelUUv/0543デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 22:54:29.06ID:iM8Xviia0 >>540
警告を消すためにわざわざ使うマクロを知らんのか
警告を消すためにわざわざ使うマクロを知らんのか
544デフォルトの名無しさん (ワッチョイ 8bf0-/uvd)
2023/02/17(金) 22:56:59.77ID:iM8Xviia0 ◯◯のコンパイラや◯◯のチェックツールで警告が出るから直しとけ
って言われたら何の疑問も持たずに直すの?
◯◯はバグの元だから直せって言われたら
何の疑問も持たずに直すの?
思考停止?
って言われたら何の疑問も持たずに直すの?
◯◯はバグの元だから直せって言われたら
何の疑問も持たずに直すの?
思考停止?
545デフォルトの名無しさん (ワッチョイ d301-GLFt)
2023/02/17(金) 23:43:41.95ID:KJxAAApA0546デフォルトの名無しさん (ワッチョイ 835f-XGDL)
2023/02/17(金) 23:45:03.57ID:BuPJ3Mmy0 ぶっちゃけテストしてるなら警告放置でもいいけど、
テストするような人は警告にも対処するからな
テストするような人は警告にも対処するからな
547デフォルトの名無しさん (ワッチョイ d301-GLFt)
2023/02/17(金) 23:48:24.98ID:KJxAAApA0548デフォルトの名無しさん (ワッチョイ a712-NLDk)
2023/02/17(金) 23:53:50.54ID:wDoqrfUd0 見も知らん第三者にwell-formedなコードにケチつけられたら
言いなりにしろと押しつけてくるやつ、自分の姿をビデオでも鏡でもいいから見てみたら?
言いなりにしろと押しつけてくるやつ、自分の姿をビデオでも鏡でもいいから見てみたら?
549デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 00:40:30.23ID:U7F6huSe0 多分「直す」を「何も考えずに警告抑止なりキャストなりで握り潰す」の意味で言ってるから噛み合ってないんだと思う
警告無視マンセー君以外はもちろんバグがないか確認した上で範囲チェックやクランプや(問題ないことを確認して)キャストなどを加えてプログラムを改良する意味で言ってる
警告無視マンセー君以外はもちろんバグがないか確認した上で範囲チェックやクランプや(問題ないことを確認して)キャストなどを加えてプログラムを改良する意味で言ってる
550デフォルトの名無しさん (オイコラミネオ MM91-4mn0)
2023/02/18(土) 02:15:58.71ID:AZBhix5KM551デフォルトの名無しさん (オイコラミネオ MM91-4mn0)
2023/02/18(土) 02:21:04.46ID:AZBhix5KM >>550
間違いました。unorderd_map の rehashingについて、こう有ります:
https://cplusplus.com/reference/unordered_map/unordered_map/rehash/
>Iterator validity
>If a rehash happens, all iterators are invalidated, but references and pointers to individual elements remain valid.
>If no actual rehash happens, no changes.
なので、iteratorは無効化されるが、個々の要素への参照やポインタは有効なまま残ります。
間違いました。unorderd_map の rehashingについて、こう有ります:
https://cplusplus.com/reference/unordered_map/unordered_map/rehash/
>Iterator validity
>If a rehash happens, all iterators are invalidated, but references and pointers to individual elements remain valid.
>If no actual rehash happens, no changes.
なので、iteratorは無効化されるが、個々の要素への参照やポインタは有効なまま残ります。
552デフォルトの名無しさん (オイコラミネオ MM91-4mn0)
2023/02/18(土) 03:03:49.37ID:AZBhix5KM >>551
ソース読まないとはっきりしないけど、恐らく、イテレーターが指している
オブジェクトのポインタを取得すると以前と同じ値になっている。
しかし、イテレーターには ++ で直後の要素に移動する機能が有る。
恐らくその機能が正しく働かない場合があるということらしい。
ゴミレスでごめん。
ソース読まないとはっきりしないけど、恐らく、イテレーターが指している
オブジェクトのポインタを取得すると以前と同じ値になっている。
しかし、イテレーターには ++ で直後の要素に移動する機能が有る。
恐らくその機能が正しく働かない場合があるということらしい。
ゴミレスでごめん。
553デフォルトの名無しさん (ワッチョイ 85f0-ivXK)
2023/02/18(土) 06:19:29.80ID:hapPzQ8z0554デフォルトの名無しさん (ワッチョイ 85f0-ivXK)
2023/02/18(土) 06:45:26.64ID:hapPzQ8z0 キャストして警告を隠す事がプログラムの改良だと思ってるアホとは会話しても無駄だな
555デフォルトの名無しさん (スッップ Sd43-f8s2)
2023/02/18(土) 06:50:44.99ID:FqZBdMS3d >>548
それだと多分うっとりしておしまいになるやつ
それだと多分うっとりしておしまいになるやつ
556デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 07:23:37.23ID:/Gi8XN260 ナルシストか
そうだろうな
そうだろうな
557デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 07:58:59.69ID:c4QxGie20 > キャストして警告を隠す事がプログラムの改良だと思ってるアホ
>>554 のことだなw
>>554 のことだなw
558デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 09:42:41.72ID:U7F6huSe0 まだ直すと隠すの区別ついてないアホのためによくある例書いとくね
std::vector<Foo> foos = /* なんか入ってる */
for(int i = 0; i < GetLegacyLength(); ++i){
Hoge* item = GetLegacyItem(i);
if (i < foos.size()) // WARNING: signedとunsigned比較してんぞ
{ hoge(foos[i], item); }
else
{ fuga(item); }
}
アホの隠し方(1):脳死でif文のiかfoos.size()をキャストして隠蔽
アホの隠し方(2):脳死でiの型をsize_tに変更、そしてi < GetLegacyLength()でまた同じ警告が出て激怒「コンパイラの警告なんて無意味だ!」
正しい直し方:
なぜ長さを返すのに戻り値型がintなのか、GetLegacyLength()のマニュアルを見て仕様を確認する。
するとある条件でエラー値として-1を返すことがあると判明したので、
forループの前にGetLegacyLength()を取得するようにして、負の場合のエラー処理を追加した。
/*略*/
int len = GetLegacyLength();
if (len < 0) { /* エラー処理 */ }
else {
for(size_t i = 0; i < static_cast<size_t>(len); ++i) { //lenは0以上と確認済みなので安全にキャストできる
/*略*/
std::vector<Foo> foos = /* なんか入ってる */
for(int i = 0; i < GetLegacyLength(); ++i){
Hoge* item = GetLegacyItem(i);
if (i < foos.size()) // WARNING: signedとunsigned比較してんぞ
{ hoge(foos[i], item); }
else
{ fuga(item); }
}
アホの隠し方(1):脳死でif文のiかfoos.size()をキャストして隠蔽
アホの隠し方(2):脳死でiの型をsize_tに変更、そしてi < GetLegacyLength()でまた同じ警告が出て激怒「コンパイラの警告なんて無意味だ!」
正しい直し方:
なぜ長さを返すのに戻り値型がintなのか、GetLegacyLength()のマニュアルを見て仕様を確認する。
するとある条件でエラー値として-1を返すことがあると判明したので、
forループの前にGetLegacyLength()を取得するようにして、負の場合のエラー処理を追加した。
/*略*/
int len = GetLegacyLength();
if (len < 0) { /* エラー処理 */ }
else {
for(size_t i = 0; i < static_cast<size_t>(len); ++i) { //lenは0以上と確認済みなので安全にキャストできる
/*略*/
559デフォルトの名無しさん (ワッチョイ cbf2-D5Yo)
2023/02/18(土) 09:55:17.94ID:q7/8BBWI0 >>558
そもそもforの条件判定の部分で関数を呼ぶのは間違いだ
そもそもforの条件判定の部分で関数を呼ぶのは間違いだ
560デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 10:01:12.90ID:U7F6huSe0 そこは間違いコード例だから意図的にそうしたんだけど
元がfor(int i = 0, len = GetLegacyLength(); i < len; ++i)だとしても話の本旨には関係ないよね?
お前が警告無視する時みたいに脳死で食いつくからそうなる
元がfor(int i = 0, len = GetLegacyLength(); i < len; ++i)だとしても話の本旨には関係ないよね?
お前が警告無視する時みたいに脳死で食いつくからそうなる
561デフォルトの名無しさん (スプッッ Sd43-avQ1)
2023/02/18(土) 10:30:22.39ID:Cp9I+Lmgd 警告を無視するのと握りつぶすのを混同しとるな
562デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 11:02:45.42ID:c4QxGie20563541 (ワッチョイ 1bad-BTrK)
2023/02/18(土) 12:30:58.62ID:XNyuFiWW0 >>551,552
いえいえ、わざわざ調べてもらってありがとうございます!
vectorのメモリ再配置によるアボート障害が発生したので、ハッシュのときも
同様のことがないか気になっていました。
とりあえずハッシュの場合はアボートすることはなさそうですね。
いえいえ、わざわざ調べてもらってありがとうございます!
vectorのメモリ再配置によるアボート障害が発生したので、ハッシュのときも
同様のことがないか気になっていました。
とりあえずハッシュの場合はアボートすることはなさそうですね。
564デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 12:34:06.96ID:/Gi8XN260565デフォルトの名無しさん (スフッ Sd43-1XUy)
2023/02/18(土) 12:47:29.66ID:jI/cauq9d >>558
BOOL GetMessage のことですね判ります
BOOL GetMessage のことですね判ります
566デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 12:49:33.03ID:c4QxGie20567デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 13:05:02.97ID:/Gi8XN260568デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 13:09:54.02ID:/Gi8XN260 なんかおまえさんの話し方なのか口癖なのかわからんが鼻につくんだよ
well-formedなコードに対する警告をどうするかなんて
おまえさんが感情的に喚いたからって誰も考えは変えないぞ
技術的な議論で誰も分かったと言って来ない現実を
おまえさんはDQN口調でどうかしようとしているようだが恥を知れ
well-formedなコードに対する警告をどうするかなんて
おまえさんが感情的に喚いたからって誰も考えは変えないぞ
技術的な議論で誰も分かったと言って来ない現実を
おまえさんはDQN口調でどうかしようとしているようだが恥を知れ
569デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 13:12:16.36ID:WT5oC+Bfd 諭されて反論できなくなったから重箱の隅突き始めたよ
ダッサ
ダッサ
570デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 13:17:40.85ID:/Gi8XN260 あのforに違和感を覚えないセンスのやつに
上から目線でご高説いただいても
自分はああはなりたくないと思うだけだからな
上から目線でご高説いただいても
自分はああはなりたくないと思うだけだからな
571デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 13:22:48.24ID:ldhLkjQ5d そうだな
悪い例として出されたコード例に向かって粗探ししてハイセンス気取るような恥ずかしいアホにはなりたくないものだ
悪い例として出されたコード例に向かって粗探ししてハイセンス気取るような恥ずかしいアホにはなりたくないものだ
572デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 13:24:53.20ID:U7F6huSe0 ああいうダメコードを見つけ出すヒントとしてコンパイラ警告は使えるんだよっていう例を出したつもりだったんだけど難しかった?
573デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 13:28:32.75ID:/Gi8XN260 たまーに実在するからな、ああいうfor書くやつ
そういう手合いの言い訳はどいつが言っても同じ雑音でしかない
そういう手合いの言い訳はどいつが言っても同じ雑音でしかない
574デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 13:38:53.64ID:c4QxGie20 >>567
> 確認してないんだな?
> じゃあ一般論としてあんな変なコードをいつも書いているのか?
たった2行でよくこんなアホさが滲み出る文章書けるもんだな...
1行目もアホだと思うが2行目は脈絡もないのに「じゃあ」とかアホすぎる
こういう奴があの手のクソコードを書くんだろうなw
> 確認してないんだな?
> じゃあ一般論としてあんな変なコードをいつも書いているのか?
たった2行でよくこんなアホさが滲み出る文章書けるもんだな...
1行目もアホだと思うが2行目は脈絡もないのに「じゃあ」とかアホすぎる
こういう奴があの手のクソコードを書くんだろうなw
575デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 13:40:46.05ID:U67S6hSRd 警告警察アンチ君がfor文警察になってしまった
576デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 13:44:53.99ID:/Gi8XN260 >>574
頭冷やせよ
特定の関数の仕様が理由でなくて
あんなコード書いたのかと言っている
おまえさんこそあの手のクソコードとやらはどれのことで
それをなぜ俺が書いていることになったのか説明できるか?
頭冷やせよ
特定の関数の仕様が理由でなくて
あんなコード書いたのかと言っている
おまえさんこそあの手のクソコードとやらはどれのことで
それをなぜ俺が書いていることになったのか説明できるか?
577デフォルトの名無しさん (スップ Sd03-f8s2)
2023/02/18(土) 13:45:46.69ID:8+fxePVqd >おまえさんの
ごめん無理
ごめん無理
578デフォルトの名無しさん (ワッチョイ e328-Qzdv)
2023/02/18(土) 13:58:29.96ID:5mGZNzlM0 低能警察に糞コードで反駁しようとしたら
収集がつかなくなったでござるの巻
警告を回避するためのコード変更がそんなに嫌ならコンパイラのオプションで警告を出さなくしたら良い……
収集がつかなくなったでござるの巻
警告を回避するためのコード変更がそんなに嫌ならコンパイラのオプションで警告を出さなくしたら良い……
579デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 14:07:37.26ID:/Gi8XN260 警告どころかコンパイラのバグを回避することだってある
むろん思い切り処理系に依存する内容となるが嫌とか好きとか言ってらんない
必要が出ればやるだけで感情の入る余地はない
どっかの思い上がった坊やの俺様節が五月蠅いだけ
黙ってくれれば俺にそれ以上の望みはない
むろん思い切り処理系に依存する内容となるが嫌とか好きとか言ってらんない
必要が出ればやるだけで感情の入る余地はない
どっかの思い上がった坊やの俺様節が五月蠅いだけ
黙ってくれれば俺にそれ以上の望みはない
580デフォルトの名無しさん (ワッチョイ e328-Qzdv)
2023/02/18(土) 14:12:09.71ID:5mGZNzlM0 警告をOFFにしたら警告を回避しようとしてバグを仕込んでしまう事故は確実に防げる
ていうか本質論としてはそもそも警告に頼らねばプログラミングもできない程度の低能はそもそもプログラミングをすべきではないという話、
これは反駁のしようが無い
ていうか本質論としてはそもそも警告に頼らねばプログラミングもできない程度の低能はそもそもプログラミングをすべきではないという話、
これは反駁のしようが無い
581デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 14:13:36.72ID:c4QxGie20582デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 14:15:48.28ID:/Gi8XN260 はいはい「俺じゃない」のね
IDコロコロする人とは話にならないな
IDコロコロする人とは話にならないな
583デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 14:32:47.85ID:U7F6huSe0 なんかすまんな
何気なく書いたダメコードのそれっぽいfor文がこんなにキチガイの琴線を刺激するとは思わなかった
何気なく書いたダメコードのそれっぽいfor文がこんなにキチガイの琴線を刺激するとは思わなかった
584デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 14:35:25.61ID:/Gi8XN260 559の指摘にあの返事だからな
うわー香ばしいと思ったのよ
うわー香ばしいと思ったのよ
585デフォルトの名無しさん (ワッチョイ ed7c-aJXl)
2023/02/18(土) 14:36:45.33ID:U7F6huSe0 黙れキチガイ
586デフォルトの名無しさん (ワッチョイ e328-Qzdv)
2023/02/18(土) 14:47:19.84ID:5mGZNzlM0 ↑うんこ
587デフォルトの名無しさん (ワッチョイ ed1f-EWEl)
2023/02/18(土) 14:52:57.45ID:aA0Lr1WO0588デフォルトの名無しさん (ワッチョイ 755f-rVJW)
2023/02/18(土) 15:00:31.81ID:AfjXtSgB0 forやwhileの条件でstring::sizeを呼んでるけどダメ?
589デフォルトの名無しさん (ワッチョイ cbf2-D5Yo)
2023/02/18(土) 15:01:44.62ID:q7/8BBWI0 >>588
意図したものならまぁいいけど、後々のことも考えると普通は禁止
意図したものならまぁいいけど、後々のことも考えると普通は禁止
590デフォルトの名無しさん (ワッチョイ e328-Qzdv)
2023/02/18(土) 15:12:52.01ID:5mGZNzlM0 ループ内で変更しないstd::stringのstd::string::size()なら
コンパイラが頑張ってギリ括り出し最適化をしてくれるかもしれんがコンパイラに優しくない……
ていうか以降値が変化しないことがわかっているメンバ変数やグローバル変数は
intやsize_tみたいな単純型ならさっさとローカル変数にコピーした方がメモリからのロード命令削減のために良い
実体(メンバ変数やグローバル変数)と同じ値を保持するローカル変数(エイリアス)があったら混乱するというのは
そんな関数が(担当者の脳のキャパに比べて)デカすぐる……
コンパイラが頑張ってギリ括り出し最適化をしてくれるかもしれんがコンパイラに優しくない……
ていうか以降値が変化しないことがわかっているメンバ変数やグローバル変数は
intやsize_tみたいな単純型ならさっさとローカル変数にコピーした方がメモリからのロード命令削減のために良い
実体(メンバ変数やグローバル変数)と同じ値を保持するローカル変数(エイリアス)があったら混乱するというのは
そんな関数が(担当者の脳のキャパに比べて)デカすぐる……
591デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 15:14:50.51ID:c4QxGie20592デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 15:26:22.78ID:/Gi8XN260 だから他人に指図すんな
警告をどうしようが回線をどうしようが
おまえさんに言われる筋合いはない
依頼心の強い甘ったれ野郎か?
警告をどうしようが回線をどうしようが
おまえさんに言われる筋合いはない
依頼心の強い甘ったれ野郎か?
593デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 15:32:46.92ID:3QwlbD5xd 依頼心の塊はこんなゴミ溜めでイキリ倒さないと自分を保てないお前さんの方だろ
for文警察出来て楽しかったでちゅか?
for文警察出来て楽しかったでちゅか?
594デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 15:37:11.41ID:/Gi8XN260 こんなゴミ溜めでイキリ倒さないと自分を保てない → 依頼心が強い
全くつながらなくて説得力ないね
子供言葉にお似合いのしょーもない言い返しだなw
全くつながらなくて説得力ないね
子供言葉にお似合いのしょーもない言い返しだなw
595デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 15:46:04.40ID:DOhL3WBHd j「コンパイラの警告は全てゴミだから無視するべき、なぜなら>>558のfor文がダサいから」なんて主張をしてる奴への罵倒になぜ論理性が求められるのか分からない
バカアホマヌケ依頼心野郎で充分だろお前もそうなんだし
バカアホマヌケ依頼心野郎で充分だろお前もそうなんだし
596デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 15:55:18.34ID:/Gi8XN260 へー、この流れをそう読んでいたのか
我ながらひどく買い被りすぎてたもんだ
そりゃー話になるわけないよな
我ながらひどく買い被りすぎてたもんだ
そりゃー話になるわけないよな
597デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 15:58:59.97ID:/Gi8XN260 警告は内容によっては無視する場合があると言ったのを
全て無視すると改変してまで言い返さないと気が済まないのか
子供言葉にry
全て無視すると改変してまで言い返さないと気が済まないのか
子供言葉にry
598デフォルトの名無しさん (ワッチョイ 4501-oojT)
2023/02/18(土) 16:00:51.47ID:hE3AXWNH0 そのうち惰性で内容を吟味せずに無視するようになりそうなので
がんばって警告は消してくスタイル
がんばって警告は消してくスタイル
599デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 16:02:45.49ID:/Gi8XN260 無視してたらコンパイラのバージョンが上がって警告しなくなったやつもあるな
600デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 16:04:23.86ID:kbl+yJpad なるほど558は警告を無視する場合な訳ね、理由はfor文がダサいからw
やっぱこのチンパンジーオモロイわ
何か言い返してくるだろうけど、畜生の鳴き声に論理性なんて求めないから本能剥き出してくれていいよ
かわいいね
やっぱこのチンパンジーオモロイわ
何か言い返してくるだろうけど、畜生の鳴き声に論理性なんて求めないから本能剥き出してくれていいよ
かわいいね
601デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 16:05:46.49ID:c4QxGie20 >>592
IDコロコロに触れられず顔真っ赤w
IDコロコロに触れられず顔真っ赤w
602デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 16:13:38.69ID:/Gi8XN260 for文の話で脳死が出てくる自己紹介な人だから
for文についての指摘が警告の話に短絡してしまったわけか
治してあげんの面倒臭いから放置するぜ
for文についての指摘が警告の話に短絡してしまったわけか
治してあげんの面倒臭いから放置するぜ
603デフォルトの名無しさん (スッププ Sd43-Kpzp)
2023/02/18(土) 16:20:07.00ID:QwP9/dM9d 凄い、>>602が何一つ意味が分からない
本当に猿がランダムな日本語もどき書いてたんだな感動した
本当に猿がランダムな日本語もどき書いてたんだな感動した
604デフォルトの名無しさん (ワッチョイ 3d12-+91A)
2023/02/18(土) 16:31:14.25ID:/Gi8XN260 忘れてるかも知れんがここは全世界から閲覧かのうな掲示板だよ
おまえさんの発言見てんの俺だけじゃないからね
第三者にクスクスされる文面には気をつけたら?
おまえさんの発言見てんの俺だけじゃないからね
第三者にクスクスされる文面には気をつけたら?
605デフォルトの名無しさん (ワッチョイ fd10-h1Ka)
2023/02/18(土) 16:43:35.96ID:xVxS8guk0 自覚あったのに驚き。
606デフォルトの名無しさん (ワッチョイ 1501-rc3u)
2023/02/18(土) 16:47:29.84ID:c4QxGie20 顔真っ赤な人はクスクスどころかドン引きされてるみたいだけどねw
607デフォルトの名無しさん (オッペケ Sre1-ywjO)
2023/02/18(土) 17:27:32.13ID:GQ7TKK8Hr 小杉の煽りが下手すぎてつまらん
608デフォルトの名無しさん (オイコラミネオ MM91-4mn0)
2023/02/18(土) 22:16:29.02ID:tx6k3oAyM >>563
unorderd_map のテストプログラムを作り、デバッガのステップ実行で、
ソースを調査することを進めます。デバッガを併用すると、単純にテキスト
エディタでソースを眺めるより楽です。
わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
確認したりもしてみてください。
unorderd_map のテストプログラムを作り、デバッガのステップ実行で、
ソースを調査することを進めます。デバッガを併用すると、単純にテキスト
エディタでソースを眺めるより楽です。
わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
確認したりもしてみてください。
609デフォルトの名無しさん (オイコラミネオ MM91-4mn0)
2023/02/18(土) 22:20:44.13ID:tx6k3oAyM >>608
誤: ソースを調査することを進めます。
正: ソースを調査することを薦めます。
誤: わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
正: わざとrehashされる条件を作っておいて、&*it が返すポインタが変化してないことを
unorderd_map<K,V>::iterator it に対して *it が V 型、&*it が V* 型ですね、確か。
誤: ソースを調査することを進めます。
正: ソースを調査することを薦めます。
誤: わざとrehashされる条件を作っておいて、*it が返すポインタが変化してないことを
正: わざとrehashされる条件を作っておいて、&*it が返すポインタが変化してないことを
unorderd_map<K,V>::iterator it に対して *it が V 型、&*it が V* 型ですね、確か。
610デフォルトの名無しさん (スップ Sd03-ivXK)
2023/02/19(日) 01:04:05.04ID:j1lo6n64d 警告警察
goto警察
例外警察
いろいろいるね
goto警察
例外警察
いろいろいるね
611デフォルトの名無しさん (ワッチョイ 755f-rVJW)
2023/02/19(日) 02:44:27.50ID:XBUFkCxR0 本題から逸れた細かいことばかり言う人って他人から相談されなくなるよね
とりあえず本題に触れてあげたほうがいいと思う
とりあえず本題に触れてあげたほうがいいと思う
612デフォルトの名無しさん (オッペケ Sre1-/VjF)
2023/02/20(月) 10:46:49.72ID:4EtRnxBTr >>607
小杉?
小杉?
613デフォルトの名無しさん (アウアウエー Sa13-o4eO)
2023/02/20(月) 21:38:28.53ID:bUrAUmQja614デフォルトの名無しさん (ワッチョイ 1bba-/+FQ)
2023/02/20(月) 23:51:57.53ID:7qph/rf50 >>610
警察警察もじきにあらわれるでしょう
警察警察もじきにあらわれるでしょう
615デフォルトの名無しさん (スップ Sd03-f8s2)
2023/02/21(火) 06:19:53.28ID:lGumlqGfd >>613
なんで?
なんで?
616デフォルトの名無しさん (ワッチョイ 23ad-TXHw)
2023/02/23(木) 12:36:30.12ID:v5/05dNG0 >>613
セーブ警察(定期的に保存しない者を取り締まる人)ですね
セーブ警察(定期的に保存しない者を取り締まる人)ですね
617デフォルトの名無しさん (ワッチョイ 7a28-SAq/)
2023/02/25(土) 09:42:29.51ID:EkXmct6Y0 >>616
西部警察が東部を取り締まるみたいなロジック何それ……
西部警察が東部を取り締まるみたいなロジック何それ……
618デフォルトの名無しさん (ワッチョイ b17c-SWHG)
2023/02/25(土) 10:26:54.98ID:+hyOJw/l0 まともなエディタなら自動セーブ機能くらいあるだろ
メモ帳で開発してんの?
メモ帳で開発してんの?
619デフォルトの名無しさん (ワッチョイ daad-OFS/)
2023/02/25(土) 10:42:44.98ID:FxeL/Fyd0 池袋駅は東口に西武デパートあるから問題ない
そして西口に東武
そして西口に東武
620デフォルトの名無しさん (ワッチョイ 7a28-SAq/)
2023/02/25(土) 12:32:14.92ID:EkXmct6Y0 質問なのですが<random>の疑似乱数クラス(いっぱいある)って共通の基底クラスとかインターフェースとか無
いの?
乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを
関数foo()に渡したりして使いまわしたいのだけどfoo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を疑似乱数クラスTを受け取るテンプレートで実装するとか自作のインターフェースで疑似乱数クラスをwrapする以外に他無し?
それともそもそもそういうことはすべきではない(関数の中で都度乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを作れ
と神はお命じなのやろうか……
いの?
乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを
関数foo()に渡したりして使いまわしたいのだけどfoo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を疑似乱数クラスTを受け取るテンプレートで実装するとか自作のインターフェースで疑似乱数クラスをwrapする以外に他無し?
それともそもそもそういうことはすべきではない(関数の中で都度乱数のseedをプログラムの中で1回だけ与えて初期化した疑似乱数オブジェクトを作れ
と神はお命じなのやろうか……
621デフォルトの名無しさん (ワッチョイ 7a28-SAq/)
2023/02/25(土) 12:35:52.57ID:EkXmct6Y0 訂正orz、
誤: 自作のインターフェースで疑似乱数クラスをwrapする
正: 自作のインターフェースで疑似乱数クラスとDistributionクラスをセットでwrapする
<random>はテンプレート全振りすぎてオブジェクト指向的でない
ヤヴァイ……
誤: 自作のインターフェースで疑似乱数クラスをwrapする
正: 自作のインターフェースで疑似乱数クラスとDistributionクラスをセットでwrapする
<random>はテンプレート全振りすぎてオブジェクト指向的でない
ヤヴァイ……
622デフォルトの名無しさん (ワッチョイ 76f2-l+fH)
2023/02/25(土) 12:52:10.86ID:k1cc/WLc0623デフォルトの名無しさん (ワッチョイ 0d01-PJrl)
2023/02/25(土) 13:02:15.45ID:sAnrfOr80 >>620
>関数foo()に渡したりして使いまわしたいのだけど
>foo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を関数テンプレートにし疑似乱数クラスをテンプレート引数とする
じゃだめなの?
>関数foo()に渡したりして使いまわしたいのだけど
>foo()は特定の疑似乱数クラスに依存させたくないという場合、
foo()を関数テンプレートにし疑似乱数クラスをテンプレート引数とする
じゃだめなの?
624デフォルトの名無しさん (ワッチョイ 7a28-SAq/)
2023/02/25(土) 13:06:02.14ID:EkXmct6Y0 >foo()を関数テンプレートにし疑似乱数クラスをテンプレート引数とする
>じゃだめなの?
通常はそれでも良いが
foo()が1万行ある関数だったとしてヘッダファイルに書くのかっていうか、
なんで疑似乱数を使うことと、書き方がテンプレートに制限されてしまうことが相関されねばならないのか
疑問に思わないのかそうか、、、
>じゃだめなの?
通常はそれでも良いが
foo()が1万行ある関数だったとしてヘッダファイルに書くのかっていうか、
なんで疑似乱数を使うことと、書き方がテンプレートに制限されてしまうことが相関されねばならないのか
疑問に思わないのかそうか、、、
625デフォルトの名無しさん (ワッチョイ 7a28-SAq/)
2023/02/25(土) 13:19:38.23ID:EkXmct6Y0 んまー現実解としてはどうせstd::mt19937をstd::random_deviceで初期化するような使い方しかしないのだろうから
using rand_t = std::random_device;
using psrand_t = std::mt19937;
class FooTest : public ::testing::Test {
protected:
psrand_t m_psrand;
public:
FooTest() : m_psrand(rand_t()()) { }
};
ぐらいで過度の抽象化はやめておいた方が良いのかもしれん……
(別名にする、程度にしておけば疑似乱数クラスの選択とDistributionクラスの選択を分離できる
using rand_t = std::random_device;
using psrand_t = std::mt19937;
class FooTest : public ::testing::Test {
protected:
psrand_t m_psrand;
public:
FooTest() : m_psrand(rand_t()()) { }
};
ぐらいで過度の抽象化はやめておいた方が良いのかもしれん……
(別名にする、程度にしておけば疑似乱数クラスの選択とDistributionクラスの選択を分離できる
626デフォルトの名無しさん (ワッチョイ 615f-+MOc)
2023/02/25(土) 13:21:23.18ID:a4UZTu4a0 標準ライブラリのテンプレートもみんなヘッダに書いてるんだしいらない疑問だと思うが……
使ったことは無いけど、気にするならC++20モジュールとして書いてみるといいかもしれない
使ったことは無いけど、気にするならC++20モジュールとして書いてみるといいかもしれない
627デフォルトの名無しさん (ワッチョイ 0d01-PJrl)
2023/02/25(土) 13:25:58.19ID:sAnrfOr80628デフォルトの名無しさん (ワッチョイ 9d5f-XTx3)
2023/02/25(土) 15:15:43.98ID:0MW4CaX30629デフォルトの名無しさん (ワッチョイ 2e9a-0raA)
2023/02/25(土) 19:34:51.11ID:pcyV0/Fb0630デフォルトの名無しさん (テテンテンテン MM0e-Z5QA)
2023/02/26(日) 06:44:53.09ID:wlYkLcj5M631デフォルトの名無しさん (ワッチョイ b6d2-xnN+)
2023/02/26(日) 07:48:51.16ID:Gr0Cvu5K0632デフォルトの名無しさん (ワッチョイ b6d2-xnN+)
2023/02/26(日) 07:49:07.86ID:Gr0Cvu5K0 _engine
633デフォルトの名無しさん (ワッチョイ 9d5f-XTx3)
2023/02/27(月) 00:29:36.28ID:gYXyoIsy0 _eringi
634デフォルトの名無しさん (アウアウエー Sa02-mjxs)
2023/02/27(月) 17:17:04.08ID:3MgFEhuya サンプラザ中野が亡くなったのはびっくり
635デフォルトの名無しさん (アウアウウー Sa39-EsFZ)
2023/02/27(月) 18:32:42.37ID:uiaf09PPa >>634
どこ情報?
どこ情報?
636デフォルトの名無しさん (ワッチョイ 9501-ZYAP)
2023/02/28(火) 06:11:10.06ID:gPlIR4bB0 会議で「テレメトリーの結果、オートコレクトをオフにしているユーザーさんが多い、どうしたら良いか」ということを話し合った。
「小文字にする方法」を解説するページを作っておけば儲かるぞ。
「小文字にする方法」を解説するページを作っておけば儲かるぞ。
637デフォルトの名無しさん (スップ Sdda-5jsL)
2023/02/28(火) 07:28:04.38ID:K4SOyNvXd どこの誤爆だろう
638デフォルトの名無しさん (スッップ Sdfa-bCJ8)
2023/02/28(火) 07:34:53.09ID:3dbS5K+md くんさんついてない方の事では?
639デフォルトの名無しさん (アウウィフ FF39-mjxs)
2023/02/28(火) 14:17:12.73ID:8Tfx2t07F https://youtu.be/OC1PvKjgREo
C++沼へようこそ
C++沼へようこそ
640デフォルトの名無しさん (スップ Sdfa-5jsL)
2023/02/28(火) 15:20:52.24ID:dNNgH11Kd g++のu8クソ過ぎワロタ
641デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/04(土) 12:36:42.18ID:Rl7ZOdOT0 stdexceptの各例外の使い分けがわかりません
まず
・エラーは「実行時エラー (runtime error) 」と「論理エラー (logic error) 」との2つに大別される。
とのことでinvalid_argumentはlogic_errorの派生クラスみたいなのですが
foo()に不正な引数が渡る状況はたいてい呼び出し元bar()の実行時エラーなわけじゃん?
しかしそれだと論理エラーの出る幕が一切なくなるので、
foo()視点でfoo()に不正な引数が渡る状況は論理エラーである、とみなす立場が考えられるますが、
しかしfoo()が投げた例外を補足する箇所はfoo()の外なわけで、そんなローカル視点知ったことか、となるわけじゃん?
もうstdexceptのうちでユザープログラムから投げるのはruntime_error(<適当なメッセージ>)だけで良い?
まず
・エラーは「実行時エラー (runtime error) 」と「論理エラー (logic error) 」との2つに大別される。
とのことでinvalid_argumentはlogic_errorの派生クラスみたいなのですが
foo()に不正な引数が渡る状況はたいてい呼び出し元bar()の実行時エラーなわけじゃん?
しかしそれだと論理エラーの出る幕が一切なくなるので、
foo()視点でfoo()に不正な引数が渡る状況は論理エラーである、とみなす立場が考えられるますが、
しかしfoo()が投げた例外を補足する箇所はfoo()の外なわけで、そんなローカル視点知ったことか、となるわけじゃん?
もうstdexceptのうちでユザープログラムから投げるのはruntime_error(<適当なメッセージ>)だけで良い?
642デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/04(土) 13:04:37.77ID:Rl7ZOdOT0 だいたい自己解決しましたサーセン、
1. cassertにおけるassert()条件に書くような、設計上絶対起こり得ないやつ(起きたらバグ)はlogic_error
2. 上記以外(設計上起き得ないことを保証しかねる不整合)はruntime_error
で、さらに細分化可能な場合(明らかに派生クラスにあてはまるやつ)は派生クラスにする
例外を補足する個所では、logic_error& eかruntime_error& eで捕捉する(そうすれば派生クラスも捕捉できうる
でFA?
1. cassertにおけるassert()条件に書くような、設計上絶対起こり得ないやつ(起きたらバグ)はlogic_error
2. 上記以外(設計上起き得ないことを保証しかねる不整合)はruntime_error
で、さらに細分化可能な場合(明らかに派生クラスにあてはまるやつ)は派生クラスにする
例外を補足する個所では、logic_error& eかruntime_error& eで捕捉する(そうすれば派生クラスも捕捉できうる
でFA?
643デフォルトの名無しさん (オイコラミネオ MM15-zbnh)
2023/03/04(土) 13:33:21.64ID:MZ+gWi90M ソケットプログラミングがマジ解らん。
コネクトするコード書いてもエラー起こすし、バインドしてみたらエラー返してきてどうしようもないし
どうすればインだー。
コネクトするコード書いてもエラー起こすし、バインドしてみたらエラー返してきてどうしようもないし
どうすればインだー。
644デフォルトの名無しさん (ワッチョイ 295f-FjNh)
2023/03/04(土) 14:05:40.41ID:XDSJ2ABs0 throw EINVL;
646デフォルトの名無しさん (ワッチョイ 59f0-G4VO)
2023/03/04(土) 18:55:56.69ID:x4fRAuLN0 >>643
まずはサンプルを動かすところから始めよう
まずはサンプルを動かすところから始めよう
647デフォルトの名無しさん (ワッチョイ 8b89-Wv9y)
2023/03/04(土) 19:13:48.29ID:no85xIV40 解決する気があるなら書いたコードと返ってくるエラーぐらい貼ろうぜ
648デフォルトの名無しさん (ワッチョイ 1305-5I03)
2023/03/04(土) 20:37:57.16ID:2zCyTihi0 このスレ見て久しぶりにC++やったら今まで丸暗記してたことが
他の言語にも適用できる感じ理解できてしまったわ
他の言語にも適用できる感じ理解できてしまったわ
649デフォルトの名無しさん (スププ Sd33-MJlW)
2023/03/05(日) 12:17:19.55ID:tgZ89GxTd >>643
馬鹿には無理
馬鹿には無理
650デフォルトの名無しさん (ワッチョイ 4110-W5Lg)
2023/03/05(日) 14:10:43.43ID:V5cM5Nk90 >>642
分類としてはそんな感じでいいと思うけど、型でcatchし分けるのはお勧めしない。
分類としてはそんな感じでいいと思うけど、型でcatchし分けるのはお勧めしない。
651デフォルトの名無しさん (オイコラミネオ MM15-zbnh)
2023/03/06(月) 21:47:32.00ID:iiB2MEh2M652デフォルトの名無しさん (ワッチョイ 295f-3zFX)
2023/03/06(月) 22:52:55.64ID:K6iDrUwm0 最後の「ばインだー」はバインドとかけてるのか?いや、まさかな…
653デフォルトの名無しさん (スププ Sd33-MJlW)
2023/03/07(火) 12:11:28.12ID:f9Hon4H6d W32APIにfork入れなかったのは嫌がらせか
654デフォルトの名無しさん (ワッチョイ 0901-nyng)
2023/03/07(火) 12:49:30.34ID:gZ1LpnCS0 Cygwinを使うとか?
655デフォルトの名無しさん (ワッチョイ 13ad-Qpn1)
2023/03/07(火) 12:51:18.28ID:5oG+IrWl0 fork自体あまり良い設計ではないから、マネしなかったのは良いことだと思うよ
656デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/07(火) 14:18:28.28ID:YRf34T/Q0 NTの構造上、forkをWin32サブシステムに入れる筋合いはどこにもないからな
657デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/07(火) 19:14:40.99ID:OIq1O0Ib0 Unixの構造上ならどう筋合いがあるんじゃ……
親プロセスから子プロセスになんか引き継ぎたいとき便利(そういうのが多いときコピーオンライトで高速化も可能)だというのはわかるが
そもそも親プロセスから子プロセスに引き継がれるべき情報ってそんなに重大で大容量なのがなんかあるっけ、、、
親プロセスから子プロセスになんか引き継ぎたいとき便利(そういうのが多いときコピーオンライトで高速化も可能)だというのはわかるが
そもそも親プロセスから子プロセスに引き継がれるべき情報ってそんなに重大で大容量なのがなんかあるっけ、、、
658デフォルトの名無しさん (ワッチョイ 8bf2-4fLd)
2023/03/07(火) 19:35:58.81ID:nDfu8VY70 代わりにspawnがあるからでしょ
659デフォルトの名無しさん (ワッチョイ 117c-u9cX)
2023/03/07(火) 20:12:06.52ID:yBXOBLOe0 そもそもプロセスって並列処理のためのもので、並列処理って同じ仕事する奴をたくさん用意するものなんだからforkは自然な設計
現代のPCやデバイスと噛み合ってないのはその通り
現代のPCやデバイスと噛み合ってないのはその通り
660デフォルトの名無しさん (スップ Sd73-Wv9y)
2023/03/07(火) 20:19:21.43ID:hnN7reTEd 俺の使い方だとshellのビルトインコマンドをパイプで繋げるときと、PS1に色々仕込むぐらいしか恩恵ないかな
Windows(cygwin)でパイプ使いまくるとクソ重い
他はネットワークサーバーでaccept→forkのサンプルコードをよく見る
Windows(cygwin)でパイプ使いまくるとクソ重い
他はネットワークサーバーでaccept→forkのサンプルコードをよく見る
661デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/08(水) 06:43:43.40ID:D4+z1pfo0662デフォルトの名無しさん (アウアウウー Sa1d-KHHX)
2023/03/08(水) 07:31:55.78ID:I9WABGt0a 何を言ってるんだお前は
663デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/08(水) 07:38:01.65ID:D4+z1pfo0 何か間違ったこと言ったか?
664デフォルトの名無しさん (ラクッペペ MMeb-UQad)
2023/03/08(水) 07:49:03.77ID:H+IAPgT9M 天然か
665デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/08(水) 07:52:01.79ID:D4+z1pfo0 何も言えんヘタレか
つまらんぞ
つまらんぞ
666デフォルトの名無しさん (ワッチョイ 13ad-Qpn1)
2023/03/08(水) 10:54:15.94ID:/Tvc5S700 forkはそのままではメモリ共有できないので並列処理の定石とは言い難い
667デフォルトの名無しさん (テテンテンテン MMeb-rgVR)
2023/03/08(水) 15:41:08.30ID:hz03AXgUM if (auto result = Hoge())
{
}
else
{
}
て書いたときelseブロックでもresult参照できるのめっちゃ違和感あるんですけど、こうなってる理由ってどこかに書いてありますか?
{
}
else
{
}
て書いたときelseブロックでもresult参照できるのめっちゃ違和感あるんですけど、こうなってる理由ってどこかに書いてありますか?
668デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/08(水) 16:00:38.16ID:D4+z1pfo0 違和感? 何で?
ブレースは必須じゃねえだろ
if (auto result = Hoge()) ; else /* ここでresultが使えるのおかしいか? */ ;
{
else /* これはできないわけで、elseはifの続きだぞ */
}
ブレースは必須じゃねえだろ
if (auto result = Hoge()) ; else /* ここでresultが使えるのおかしいか? */ ;
{
else /* これはできないわけで、elseはifの続きだぞ */
}
669デフォルトの名無しさん (ワッチョイ 119c-8Eq5)
2023/03/08(水) 16:22:00.73ID:ytiNTw1F0 try で宣言した変数を catch や finally で参照できるようにして欲しいと思ったことが 5億回はある
670はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 013e-zdzo)
2023/03/08(水) 16:26:12.41ID:sNgBrAzK0 >>669
出来たとしても catch したときには解体済み (または構築していない) なはずなのでだめぽ。
出来たとしても catch したときには解体済み (または構築していない) なはずなのでだめぽ。
671デフォルトの名無しさん (ワッチョイ 119c-8Eq5)
2023/03/08(水) 16:36:24.71ID:ytiNTw1F0 うん、ダメな理由は分かる
でもみんな try に書いてた変数を catch や finally で必要になってから外出しした経験あるよね
でもみんな try に書いてた変数を catch や finally で必要になってから外出しした経験あるよね
672はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 013e-zdzo)
2023/03/08(水) 16:38:09.65ID:sNgBrAzK0 >>667
C with Classes が C++ になる頃にそこに宣言を書けることにした話はD&E に言及がある。
Algol68 の真似をしたつもりだったが
実は設計者の勘違いで Algol68 にそんな仕様はなかったということも書かれている。
スコープのことまでは書かれていなかったが、
たぶんそれも当時の設計者の脳内 Algol68 ではそうだったってだけなんだろう。
まあ else も if 文の一部なので自然に考えれば全体がスコープになるほうが
理屈に合うように思えるし、私は疑問に感じたことは無かったな。
C with Classes が C++ になる頃にそこに宣言を書けることにした話はD&E に言及がある。
Algol68 の真似をしたつもりだったが
実は設計者の勘違いで Algol68 にそんな仕様はなかったということも書かれている。
スコープのことまでは書かれていなかったが、
たぶんそれも当時の設計者の脳内 Algol68 ではそうだったってだけなんだろう。
まあ else も if 文の一部なので自然に考えれば全体がスコープになるほうが
理屈に合うように思えるし、私は疑問に感じたことは無かったな。
673デフォルトの名無しさん (テテンテンテン MMeb-rgVR)
2023/03/08(水) 18:30:22.29ID:lmBqNRkPM >>672
ありがとうございます。
ifでの宣言は初期化とテストが一緒にされるわけで、テストに失敗した結果実行されるelseブロックでそれが使えることがちょっと納得できませんでした。
言われてみれば、中身がnullptrとは限らないし、エラーハンドリングとかで使ってるんですかね
ありがとうございます。
ifでの宣言は初期化とテストが一緒にされるわけで、テストに失敗した結果実行されるelseブロックでそれが使えることがちょっと納得できませんでした。
言われてみれば、中身がnullptrとは限らないし、エラーハンドリングとかで使ってるんですかね
674デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/08(水) 22:20:58.55ID:tb9BYlUU0 それよか
int outlierCnt; // ←これのスコープのが問題
do {
outlierCnt = 0;
for (int j = 0; j < n; j++) {
if (...) {
outlierCnt++;
}
}
} while (outlierCnt > 0);
// ループを出たらoutlierCntは用済み
int outlierCnt; // ←これのスコープのが問題
do {
outlierCnt = 0;
for (int j = 0; j < n; j++) {
if (...) {
outlierCnt++;
}
}
} while (outlierCnt > 0);
// ループを出たらoutlierCntは用済み
675デフォルトの名無しさん (ワッチョイ 8bcf-W5Lg)
2023/03/08(水) 22:35:27.94ID:vNfcyURF0 見えてほしい範囲とか見えてほしくない範囲があんならブロック使って任意にスコープ作ればいいんでは
676デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/08(水) 23:51:23.50ID:tb9BYlUU0 >>675
bool bUniqueList; // ← constにできない
{
bUniqueList = true;
std::set<T> dupChk;
foreach (auto it = vec.begin(); it != vec.end(); it++) {
auto result = dupChk.insert(*it);
if (!result.second) {
bUniqueList = false;
break;
}
}
}
if (bUniqueList) { ... }
bool bUniqueList; // ← constにできない
{
bUniqueList = true;
std::set<T> dupChk;
foreach (auto it = vec.begin(); it != vec.end(); it++) {
auto result = dupChk.insert(*it);
if (!result.second) {
bUniqueList = false;
break;
}
}
}
if (bUniqueList) { ... }
677デフォルトの名無しさん (ワッチョイ 0901-nyng)
2023/03/09(木) 00:39:11.87ID:3j1Ekj6a0 >>676
const bool bUniqueList
{
[&]
{
bool bUniqueList = true;
std::set<T> dupChk;
for (auto it = vec.begin(); it != vec.end(); it++) {
auto result = dupChk.insert(*it);
if (!result.second) {
bUniqueList = false;
break;
}
}
return bUniqueList;
} ()
};
if (bUniqueList) { /* ... */ }
const bool bUniqueList
{
[&]
{
bool bUniqueList = true;
std::set<T> dupChk;
for (auto it = vec.begin(); it != vec.end(); it++) {
auto result = dupChk.insert(*it);
if (!result.second) {
bUniqueList = false;
break;
}
}
return bUniqueList;
} ()
};
if (bUniqueList) { /* ... */ }
678デフォルトの名無しさん (ワッチョイ 59f0-G4VO)
2023/03/09(木) 06:47:29.67ID:Kr9kVNlI0 do while が一番パフォーマンス的に有利なんだから
もう少し使いやすくしてほしかったなあ
もう少し使いやすくしてほしかったなあ
679デフォルトの名無しさん (ワッチョイ 59f0-G4VO)
2023/03/09(木) 06:51:51.75ID:Kr9kVNlI0 >>677
行数増えてんじゃん
行数増えてんじゃん
680デフォルトの名無しさん (アウアウエー Sae3-4fLd)
2023/03/09(木) 14:14:05.11ID:lc0skjdva // みんなこうやってんの
{
int outlierCnt; // ←これのスコープのが問題
do {
outlierCnt = 0;
for (int j = 0; j < n; j++) {
if (...) {
outlierCnt++;
}
}
} while (outlierCnt > 0);
}
{
int outlierCnt; // ←これのスコープのが問題
do {
outlierCnt = 0;
for (int j = 0; j < n; j++) {
if (...) {
outlierCnt++;
}
}
} while (outlierCnt > 0);
}
681デフォルトの名無しさん (スップ Sd33-G4VO)
2023/03/09(木) 15:04:30.56ID:80vOWs2Ed for (A;B;C){
} while (D);
こんなのがあれば万能
} while (D);
こんなのがあれば万能
682デフォルトの名無しさん (ワッチョイ 13ad-5bTy)
2023/03/09(木) 15:15:47.17ID:AnxNC5rK0 for (A;B;C){
if(!D) break;
}
解決した
if(!D) break;
}
解決した
683デフォルトの名無しさん (スップ Sd33-G4VO)
2023/03/09(木) 15:41:20.30ID:80vOWs2Ed >>682
論理逆だし行も増えるし
論理逆だし行も増えるし
684デフォルトの名無しさん (ワッチョイ 13ad-5bTy)
2023/03/09(木) 15:46:07.32ID:AnxNC5rK0 >>683
Dの横の一文字が見えない?
Dの横の一文字が見えない?
685デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/09(木) 17:40:38.10ID:zXViYC6t0 ループの条件が2箇所になってるのは
構造化プログラミングのパラダイムからは外れる形だね
俺は教条主義者ではないが、あんまり気が乗らない
構造化プログラミングのパラダイムからは外れる形だね
俺は教条主義者ではないが、あんまり気が乗らない
686デフォルトの名無しさん (スップ Sd33-G4VO)
2023/03/09(木) 17:45:05.69ID:80vOWs2Ed >>684
見やすさの観点から論理は非常に重要
見やすさの観点から論理は非常に重要
687デフォルトの名無しさん (スップ Sd33-G4VO)
2023/03/09(木) 17:47:03.73ID:80vOWs2Ed 見やすさや行数を無視するなら
for、while、do while なんかいらない
gotoで良い
for、while、do while なんかいらない
gotoで良い
688デフォルトの名無しさん (ワッチョイ d163-PMd1)
2023/03/09(木) 17:51:18.91ID:zXViYC6t0 えー<algorithm>だろ、C++的には
689デフォルトの名無しさん (ワッチョイ 117c-u9cX)
2023/03/09(木) 18:07:24.33ID:Uk52+MzN0 doとかいう貴重な2文字キーワードをこんなとこで無駄遣いしてるのは正直ダサい
690デフォルトの名無しさん (スップ Sd33-G4VO)
2023/03/09(木) 18:41:24.17ID:80vOWs2Ed {
A
if(!B)goto L0002;
{
}
C
if (D) goto L0001;
L0002:;
}
A
if(!B)goto L0002;
{
}
C
if (D) goto L0001;
L0002:;
}
691デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 19:54:06.46ID:maTPLFSP0 >>681
do {} while (!D) は,ループの事後条件として,Dが条件として成立することを保証している。
(until D として欲しかったが)
for (a;b;c) {} while (D) じゃ,ループの事後条件として何が成立してるのかわからないので
こんなコードは却下だな
do {} while (!D) は,ループの事後条件として,Dが条件として成立することを保証している。
(until D として欲しかったが)
for (a;b;c) {} while (D) じゃ,ループの事後条件として何が成立してるのかわからないので
こんなコードは却下だな
692デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 20:02:25.15ID:maTPLFSP0 逆に, B | D が成立してほしいなら
A; do { C } while (!(B|D)) と書くべき
A; do { C } while (!(B|D)) と書くべき
693デフォルトの名無しさん (ワッチョイ 4110-6803)
2023/03/09(木) 20:06:14.82ID:pAfi+zPk0 こんなので
dowhile(int cnt; cnt > 0)
{
cnt=0
cnt++;
}
dowhile(int cnt; cnt > 0)
{
cnt=0
cnt++;
}
694デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 20:11:30.40ID:maTPLFSP0 for (int cnt=0; cnt>0;) {
cnt++
}
でいいんじゃないの?
cnt++
}
でいいんじゃないの?
695デフォルトの名無しさん (ワッチョイ fbda-TnyN)
2023/03/09(木) 20:22:51.74ID:kUujduR60 do{}while(){}
セミコロン最後に付けるならスコープでいいよな
セミコロン最後に付けるならスコープでいいよな
696デフォルトの名無しさん (ワッチョイ fbda-TnyN)
2023/03/09(木) 20:24:42.25ID:kUujduR60 do{}for(){}
とかなぜないのか
とかなぜないのか
697デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 20:27:29.69ID:maTPLFSP0 ループ終了条件を,ループ制御変数以外で書きたいということ?
別に書いてもいいけど,わかりにくと思うんだ
for (int i=0; i<0 || D ; ++i) { … }
で良いんでは?
別に書いてもいいけど,わかりにくと思うんだ
for (int i=0; i<0 || D ; ++i) { … }
で良いんでは?
698デフォルトの名無しさん (ワッチョイ fbda-TnyN)
2023/03/09(木) 20:28:43.40ID:kUujduR60 do(int i=0){}for(i<n;i++);
こんな感じか
こんな感じか
699デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 20:32:17.74ID:maTPLFSP0 for を前に書こうが、後ろに書こうが,for ループを抜けた時は,
for ループの終了条件が成立しているので,前に書いたら良い
for ループの終了条件が成立しているので,前に書いたら良い
700デフォルトの名無しさん (ワッチョイ 715f-Tvj1)
2023/03/09(木) 20:35:31.74ID:maTPLFSP0 for (A; B||D; C,D) { … } じゃダメなの?
701デフォルトの名無しさん (ワッチョイ 59f0-G4VO)
2023/03/09(木) 21:57:49.10ID:Kr9kVNlI0 >>691
頭悪いって言われない?
頭悪いって言われない?
702デフォルトの名無しさん (ワッチョイ 295f-3zFX)
2023/03/09(木) 22:20:20.74ID:fJ6NWa1S0 アスペのこだわり大会かよ
703デフォルトの名無しさん (ワッチョイ 5328-zbnh)
2023/03/10(金) 23:18:44.72ID:hCUBJoIo0704デフォルトの名無しさん (ブーイモ MM4d-fQ2h)
2023/03/11(土) 03:20:25.02ID:gMabCRDUM inline 指定子って前方宣言と定義の少なくとも一方に付ければ良いんですかね?
普通は inline 関数を宣言と定義分けて書くことはあまりしないと思いますが
普通は inline 関数を宣言と定義分けて書くことはあまりしないと思いますが
705デフォルトの名無しさん (ワッチョイ dd01-a+nz)
2023/03/11(土) 20:44:27.01ID:+PZMhSrI0 宣言にはつけなくね?
706デフォルトの名無しさん (スップ Sd9a-67MV)
2023/03/12(日) 12:26:00.35ID:/+cwNiL3d メンバ関数の定義にinlineは普通にやる
707デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/15(水) 13:16:39.32ID:T1RUme5O0 inlineの元々の意味はもう存在感なくなってきてるな
今はODRに違反するものを通して貰ったり
namespaceのアレとかで使う
今はODRに違反するものを通して貰ったり
namespaceのアレとかで使う
708デフォルトの名無しさん (ワッチョイ f94e-mIEw)
2023/03/15(水) 13:44:43.53ID:yzqSYUc10 本来の意味では、コンパイラ依存になっちゃうけどalways_inlineとか__forceinlineっていうのがあったりするな
これもちゃんと規格化した方が良いよね
これもちゃんと規格化した方が良いよね
709デフォルトの名無しさん (ワッチョイ a163-DvKe)
2023/03/15(水) 15:22:25.13ID:T1RUme5O0 [[force_inline]]か
710デフォルトの名無しさん (ワッチョイ 4d10-2f2l)
2023/03/15(水) 20:13:46.16ID:3bZGOkgE0 モジュールだとinlineは元の意味になる、forceではないけど
711デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/18(土) 00:24:08.81ID:AshFX+nM0 enum class Fooの項目数を取得するにはどうすれば良いですの?
昔ながらに
enum class Foo { A = 0, B, C, D, E, NELEMS };
みたいに要素数NELEMSを定義しないと駄目?
昔ながらに
enum class Foo { A = 0, B, C, D, E, NELEMS };
みたいに要素数NELEMSを定義しないと駄目?
712デフォルトの名無しさん (ワッチョイ a1ba-kL5v)
2023/03/18(土) 00:34:08.94ID:4yjyip5Y0 はい
713デフォルトの名無しさん (ブーイモ MM8b-xxKT)
2023/03/18(土) 08:22:34.90ID:X2nJJgpEM714デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/18(土) 09:34:19.12ID:AshFX+nM0 ファッ?!
715はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/18(土) 09:37:45.79ID:XgD5JQEe0 >>711
現在の言語仕様の範囲内でやるならそれがたぶん一番に簡単な方法。
magic_enum を活用するのもいいけど処理系の拡張を利用しているのでもしもメンテが
滞ることがあったら処理系の変化について行けなくて破綻するかも? (余計な心配かも?)
要素数を数えるためだけに導入するならちょっと大げさという感じがする。
将来の C++ にリフレクション系の機能を追加しようとする提案はある。
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4818.pdf
試験的に GCC に追加したブランチもあって、
オンラインコンパイラで試せるところがあったはずなんだがどこだったか思い出せない。 すまぬ……。
現在の言語仕様の範囲内でやるならそれがたぶん一番に簡単な方法。
magic_enum を活用するのもいいけど処理系の拡張を利用しているのでもしもメンテが
滞ることがあったら処理系の変化について行けなくて破綻するかも? (余計な心配かも?)
要素数を数えるためだけに導入するならちょっと大げさという感じがする。
将来の C++ にリフレクション系の機能を追加しようとする提案はある。
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/n4818.pdf
試験的に GCC に追加したブランチもあって、
オンラインコンパイラで試せるところがあったはずなんだがどこだったか思い出せない。 すまぬ……。
716デフォルトの名無しさん (ワッチョイ e97c-+SA5)
2023/03/18(土) 10:54:33.77ID:bCJ0RWMx0 どうやってんのかと思ったらゴリ押しで草
717デフォルトの名無しさん (ワッチョイ 91f0-BQ3C)
2023/03/19(日) 02:53:52.21ID:aov6FzNY0 std::vectorを初期化せず要素数を変更する方法が存在しないそうですが、どうにかなりませんか?
718デフォルトの名無しさん (ワッチョイ 13ad-F0re)
2023/03/19(日) 07:02:58.28ID:/XQ3/AVL0 >>717
初期化しないことを指定するフラグをメンバ変数に追加し、resize(n,c)の二番目の引数でそのフラグを立てたインスタンスcを渡す。
コピーコンストラクタが呼び出されるので、渡されてきたインスタンスcの該当フラグを見て、初期化するかどうか判定して分岐させる。
初期化しないことを指定するフラグをメンバ変数に追加し、resize(n,c)の二番目の引数でそのフラグを立てたインスタンスcを渡す。
コピーコンストラクタが呼び出されるので、渡されてきたインスタンスcの該当フラグを見て、初期化するかどうか判定して分岐させる。
719はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 09:21:23.84ID:6gmOWdI+0 >>717
vector が要素のデフォルトコンストラクタを呼ぶことは保証されるが
デフォルトコンストラクタが初期化しないようにしておけば初期化されない。
https://wandbox.org/permlink/8SepeggcI18hio7W
vector が要素のデフォルトコンストラクタを呼ぶことは保証されるが
デフォルトコンストラクタが初期化しないようにしておけば初期化されない。
https://wandbox.org/permlink/8SepeggcI18hio7W
720はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 10:57:57.35ID:6gmOWdI+0 >>711
列挙型を定義するときには要素の数は分かっているのだから要素数を書いた定義も書いておけば十分かもしれない。
#include <type_traits>
// プライマリテンプレート (実際にはこれが使われたらエラー)
template <class T>
class enum_count {
template <class U>
class helper : public std::integral_constant<bool, false> {};
static_assert(helper<T>::value, "expected known enum.");
};
// 列挙型を定義
enum class Foo {A, B, C, D, E};
// 列挙型 Foo の要素数が 5 であることは分かっているので 5 で定義しておく
template <> class enum_count<Foo> : public std::integral_constant<std::size_t, 5> {};
int main(void) {
// 列挙型の要素数をカウントしたかのように見える
static_assert(enum_count<Foo>::value == 5);
}
列挙型の定義と要素数の定義を同時にするようなマクロでも作っておけばなおよいと思う。
Boost にそんな感じのライブラリがあった気がするが使ったことが無いのでよく知らない。
列挙型を定義するときには要素の数は分かっているのだから要素数を書いた定義も書いておけば十分かもしれない。
#include <type_traits>
// プライマリテンプレート (実際にはこれが使われたらエラー)
template <class T>
class enum_count {
template <class U>
class helper : public std::integral_constant<bool, false> {};
static_assert(helper<T>::value, "expected known enum.");
};
// 列挙型を定義
enum class Foo {A, B, C, D, E};
// 列挙型 Foo の要素数が 5 であることは分かっているので 5 で定義しておく
template <> class enum_count<Foo> : public std::integral_constant<std::size_t, 5> {};
int main(void) {
// 列挙型の要素数をカウントしたかのように見える
static_assert(enum_count<Foo>::value == 5);
}
列挙型の定義と要素数の定義を同時にするようなマクロでも作っておけばなおよいと思う。
Boost にそんな感じのライブラリがあった気がするが使ったことが無いのでよく知らない。
721デフォルトの名無しさん (テテンテンテン MM8b-LjWS)
2023/03/19(日) 12:15:12.56ID:+MpLv2UeM >>717
vectorが連続した領域を確保するので仕方ないかと。
vector のreserveで十分な領域を予約する
vectorにインスタンスじゃなくてsmart pointerを格納する
vectorじゃなくてlistかdequeを使う
クラスを弄くれるなら、move constructorでどうにかならんかね?
vectorが連続した領域を確保するので仕方ないかと。
vector のreserveで十分な領域を予約する
vectorにインスタンスじゃなくてsmart pointerを格納する
vectorじゃなくてlistかdequeを使う
クラスを弄くれるなら、move constructorでどうにかならんかね?
722デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/19(日) 14:31:05.87ID:qEtAe03H0 >>717
どんな要素?クラス?
どんな要素?クラス?
723デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 15:04:28.20ID:5NoJOqaP0 >>720
レス㌧クスしかし……
enum class FooはFoo::AとかFoo::Bとかいう形でしか使われないのだから個数を返す専用のテンプレートの特ちゅ化を行うよりは
Fooという名前のを何らかの手段でwrapしてやってcountメンバを持たせる方が自然なような、
enum class Foo0 { A = 0, B, C, D, E };
だとして現状class Foo : public Foo0 { ... }みたいなことは書けないから、手段としては次の2つ……
(1) クラスれwrap
struct Foo {
enum { A, B, C, D, E }; // 古き良きenum、
static size_t count() { return 5; }
};
(2) namespaceでwrap
namespace Foo {
enum { A, B, C, D, E }; // 古き良きenum、
inline size_t count() { return 5; }
};
規格委員会が斜め上の行動に出なければこういう方向性が自然に感じる……
レス㌧クスしかし……
enum class FooはFoo::AとかFoo::Bとかいう形でしか使われないのだから個数を返す専用のテンプレートの特ちゅ化を行うよりは
Fooという名前のを何らかの手段でwrapしてやってcountメンバを持たせる方が自然なような、
enum class Foo0 { A = 0, B, C, D, E };
だとして現状class Foo : public Foo0 { ... }みたいなことは書けないから、手段としては次の2つ……
(1) クラスれwrap
struct Foo {
enum { A, B, C, D, E }; // 古き良きenum、
static size_t count() { return 5; }
};
(2) namespaceでwrap
namespace Foo {
enum { A, B, C, D, E }; // 古き良きenum、
inline size_t count() { return 5; }
};
規格委員会が斜め上の行動に出なければこういう方向性が自然に感じる……
724デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 15:13:02.52ID:5NoJOqaP0 >>717
std::vector<T>をとったら初期化が来る ほんとに早いわ
初期化さえ無かったなら チューリングマシンは楽しいとこ
初期化はきらいだった 私
夢ばかりみていたのよ 私
でもデフォルトコンストラクタとコピコンと代入演算しだけでも
まじめにしておけば
今頃私はかっこいいC++er
初期化はしないよりも しておいたほうがいいわ
std::vector<T>をとったら初期化が来る ほんとに早いわ
初期化さえ無かったなら チューリングマシンは楽しいとこ
初期化はきらいだった 私
夢ばかりみていたのよ 私
でもデフォルトコンストラクタとコピコンと代入演算しだけでも
まじめにしておけば
今頃私はかっこいいC++er
初期化はしないよりも しておいたほうがいいわ
725デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 15:17:35.62ID:5NoJOqaP0 初期化はしないよりも しておいたほうがいいわ
726デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/19(日) 15:18:07.23ID:bKnYO/UZ0 必要があれば初期化するし
必要なければ余計なことはしない
判断できましぇ~んなアホにはなりたくない
必要なければ余計なことはしない
判断できましぇ~んなアホにはなりたくない
727デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 15:25:40.86ID:5NoJOqaP0728デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 16:19:34.73ID:5NoJOqaP0729デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/19(日) 16:35:25.46ID:bKnYO/UZ0730デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 16:37:36.01ID:5NoJOqaP0731デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 16:41:22.65ID:5NoJOqaP0 なんにせよ未初期化(メモリ内容不定)というのはチューリングマシンのプログラミングモデルでは絶対悪
であることは街行く人100人に聞いたら100人全員がそう答えるので
マウントをとろうとして無駄にあがいているかさもなくば無知なのは>>729の方ででケテーイ……
であることは街行く人100人に聞いたら100人全員がそう答えるので
マウントをとろうとして無駄にあがいているかさもなくば無知なのは>>729の方ででケテーイ……
732デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/19(日) 16:47:15.92ID:bKnYO/UZ0 捏造データ使うやつの相手はしとれん
俺はどっかの大臣みたいに寛大ではない
俺はどっかの大臣みたいに寛大ではない
733デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 16:51:34.77ID:5NoJOqaP0 どこが捏造データなのかkwsk、
街行く人を引き合いに出したのは統計の結果という誤解を与えたのかもしれんが
チューリングマシンのプログラミングモデルにおいて、初期化を行わないまま次のステップに進めない(やったら動作が不定になる)のは
覆りようが無い真実、、、
街行く人を引き合いに出したのは統計の結果という誤解を与えたのかもしれんが
チューリングマシンのプログラミングモデルにおいて、初期化を行わないまま次のステップに進めない(やったら動作が不定になる)のは
覆りようが無い真実、、、
734デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/19(日) 16:55:07.81ID:bKnYO/UZ0 循環バッファ作るときの配列なんかいちいちゼロクリアせんだろ
学校で習いたての未消化の知識で思い込んでんなよ
アホくせ
俺は夕飯の買い物に行くぜ
学校で習いたての未消化の知識で思い込んでんなよ
アホくせ
俺は夕飯の買い物に行くぜ
735デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 17:00:25.55ID:5NoJOqaP0736デフォルトの名無しさん (ワッチョイ 5328-53XG)
2023/03/19(日) 17:05:21.48ID:5NoJOqaP0 ちと訂正orz、
循環バッファに入れるのが、STLのクラスをメンバに持つような高級なクラスだったとしよう、
すると循環バッファ作るときの配列を未初期化のままとすると、最初のencueueでいきなり代入から始まるから
(代入演算子が呼ばれる)から、未初期化オブジェクトに対する代入演算子が機能したとしてもそれはたまたまという話になる……
よって
>循環バッファ作るときの配列なんかいちいちゼロクリアせんだろ
これの主張は偽。ハイ論破、
循環バッファに入れるのが、STLのクラスをメンバに持つような高級なクラスだったとしよう、
すると循環バッファ作るときの配列を未初期化のままとすると、最初のencueueでいきなり代入から始まるから
(代入演算子が呼ばれる)から、未初期化オブジェクトに対する代入演算子が機能したとしてもそれはたまたまという話になる……
よって
>循環バッファ作るときの配列なんかいちいちゼロクリアせんだろ
これの主張は偽。ハイ論破、
737はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 17:48:11.34ID:6gmOWdI+0 >>723
メンバを持てない型にメンバっぽいものを結び付けたい場合 (たとえば char_traits や numeric_limits) だとか、
既存の型をいじらずに拡張できる余地を用意したい場合 (allocator_traits) 、
メタプログラミング用のメタ関数 (type_traits) といったものはトレイトの形にすることもそんなに珍しくはない。
ところで Godbolt でリフレクション (N4818) 実装版の clang が使えた。
列挙子の数を数えるメタ関数を簡易的に書いたらこんな感じ。
https://godbolt.org/z/G4jf65j8f
将来的にはこういう機能が C++ に入るかもしれない。
メンバを持てない型にメンバっぽいものを結び付けたい場合 (たとえば char_traits や numeric_limits) だとか、
既存の型をいじらずに拡張できる余地を用意したい場合 (allocator_traits) 、
メタプログラミング用のメタ関数 (type_traits) といったものはトレイトの形にすることもそんなに珍しくはない。
ところで Godbolt でリフレクション (N4818) 実装版の clang が使えた。
列挙子の数を数えるメタ関数を簡易的に書いたらこんな感じ。
https://godbolt.org/z/G4jf65j8f
将来的にはこういう機能が C++ に入るかもしれない。
738デフォルトの名無しさん (ワッチョイ e15f-7LVk)
2023/03/19(日) 18:51:39.67ID:xw5DwAwo0 >>737
get_size_v<get_enumerators_t<reflexpr(Enum)>> でよい。
標準で enum_count みたいなの用意しといて欲しいよね。誰が書いても同じになるんだから。
get_size_v<get_enumerators_t<reflexpr(Enum)>> でよい。
標準で enum_count みたいなの用意しといて欲しいよね。誰が書いても同じになるんだから。
739はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 20:19:21.80ID:6gmOWdI+0 >>738
おっ、そんな便利なのを見落としておったわ……。
将来的には enum_count みたいなのは入ると思う。
現時点では基礎になるスコープの広い部分を検討中だから
おそらくその上に実装されるであろう部分をどうこういうのは時期尚早ってことなんだろう。
おっ、そんな便利なのを見落としておったわ……。
将来的には enum_count みたいなのは入ると思う。
現時点では基礎になるスコープの広い部分を検討中だから
おそらくその上に実装されるであろう部分をどうこういうのは時期尚早ってことなんだろう。
740デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/19(日) 20:47:43.45ID:bKnYO/UZ0 >>735
覆したかどうかジャッジは衆目に任せようや
覆したかどうかジャッジは衆目に任せようや
741デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/19(日) 23:30:56.76ID:qEtAe03H0 初期化の必要はないけど、しても負荷はないに等しいという状況もよくあるからなんとも
742はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/19(日) 23:39:18.94ID:6gmOWdI+0 形式的には初期化をしてても最適化を通ると消えてるってこともあるし……。
743デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/20(月) 15:45:00.03ID:ORIjxPLV0 必要ないことはしないってだけなのに何か悪いのかよ
見も知らん馬の骨のご機嫌取るのも必要ないかんな
見も知らん馬の骨のご機嫌取るのも必要ないかんな
744デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/20(月) 15:53:20.87ID:ORIjxPLV0 まるでマスク警察だな
初期化警察
初期化警察
745デフォルトの名無しさん (スプッッ Sd73-nGUn)
2023/03/20(月) 17:50:53.62ID:xiC6G7QOd >>742
例えばどんな場合?
例えばどんな場合?
746デフォルトの名無しさん (テテンテンテン MM8b-LjWS)
2023/03/20(月) 18:48:41.76ID:UaylDbEEM747デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/20(月) 20:03:19.49ID:KynYd7/p0 例えばプログラムでアドレスを計算してる場合に、そのアドレスのメモリが
初期化されてるかどうかをコンパイラが判断するのは難しいだろうね
他にもライブラリとか別のプログラムで初期化されてもわからない
初期化されてるかどうかをコンパイラが判断するのは難しいだろうね
他にもライブラリとか別のプログラムで初期化されてもわからない
748デフォルトの名無しさん (アウアウウー Sa95-8mIh)
2023/03/20(月) 20:14:42.31ID:GZpDpxkna749デフォルトの名無しさん (ワッチョイ 91f0-BQ3C)
2023/03/20(月) 20:22:11.60ID:hNMIxENu0 vectorに対してcopyとかtransform使うとき、あらかじめコピー元とコピー先のサイズを揃えますけど
この時ほぼほぼ初期化省かれてるなっての分かるじゃないですか
それなら最初から初期化を省くメソッド用意してくれてもいいんじゃないか?と思うわけです
この時ほぼほぼ初期化省かれてるなっての分かるじゃないですか
それなら最初から初期化を省くメソッド用意してくれてもいいんじゃないか?と思うわけです
750デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/20(月) 20:58:12.86ID:KynYd7/p0 まあ、要素がPODの場合にvector::resizeで初期化しないでほしいと思うことはあるけど、
それで仕方なく不要な初期化をして遅くなった試しがないからなぁ・・・
それで仕方なく不要な初期化をして遅くなった試しがないからなぁ・・・
751はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/20(月) 21:35:36.48ID:c1bWUyRU0 >>749
そのためにサイズとは別にキャパシティの概念があるんじゃないの。
書き込む順序が変な場合だったりすると上手くいかんかもしれんが
copy や transform を使う分には事前にキャパシティを調整した上で
値の書き込みは back_inserter を使えば無駄な初期化も再配置も起こらない。
そのためにサイズとは別にキャパシティの概念があるんじゃないの。
書き込む順序が変な場合だったりすると上手くいかんかもしれんが
copy や transform を使う分には事前にキャパシティを調整した上で
値の書き込みは back_inserter を使えば無駄な初期化も再配置も起こらない。
752デフォルトの名無しさん (ワッチョイ e15f-7LVk)
2023/03/20(月) 21:40:04.28ID:hzdgbGAw0 >>749
insert_iterator は嫌なの?
insert_iterator は嫌なの?
753デフォルトの名無しさん (ワッチョイ e15f-7LVk)
2023/03/20(月) 21:40:53.83ID:hzdgbGAw0 あ、被った。ごめん。
754デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/20(月) 22:56:55.34ID:4g6dG7Pp0 初期化が重いならコンストラクタと初期化を分ければ良いし
微妙なコピーによるパフォーマンスを気にするなら自作すれば良い
無い物ねだりは時間の無駄
微妙なコピーによるパフォーマンスを気にするなら自作すれば良い
無い物ねだりは時間の無駄
755蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-byLE)
2023/03/20(月) 23:03:48.48ID:W64rVTKed アロケータ自作もアリ。
756はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/20(月) 23:17:51.49ID:c1bWUyRU0757デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/21(火) 06:23:01.76ID:UyD8IPHr0 int a = 0; //こうしないとエラーな環境なんてイラネーヨ
if(cin >> a) cout << a;
if(cin >> a) cout << a;
758デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/21(火) 07:38:26.62ID:gGh7BvK80 最速チューンならvectorなんか使うな
759デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/21(火) 07:39:32.98ID:gGh7BvK80 sprintfの使用がエラーになる環境もある
760デフォルトの名無しさん (ブーイモ MM0d-xxKT)
2023/03/21(火) 17:14:11.67ID:uh1D01cuM >>751
そうすると一々サイズとキャパシティ比較するif文挟むから結局オーバーヘッドあるやん
まあstd::vector使うなというのはもっともでこういうときのためにstd::make_XXX_for_overwriteがある
そうすると一々サイズとキャパシティ比較するif文挟むから結局オーバーヘッドあるやん
まあstd::vector使うなというのはもっともでこういうときのためにstd::make_XXX_for_overwriteがある
761デフォルトの名無しさん (テテンテンテン MM8b-LjWS)
2023/03/22(水) 07:23:54.33ID:9C9l1JTzM >>760
vector::reserveをご存知でない?
vector::reserveをご存知でない?
762はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/22(水) 09:35:50.58ID:GXnnX9o30 >>761
back_insert_iterator での値の追加は push_back するのに等しい。
https://timsong-cpp.github.io/cppwp/n3337/back.insert.iter.op=
push_back するときはキャパシティが足りるかどうかで動作が異なる。
https://timsong-cpp.github.io/cppwp/n3337/vector.modifiers
結果的にキャパシティが足りていてもキャパシティが足りているかどうかのチェックはおこなわれる。
そのことを >>760 は言ってる。
back_insert_iterator での値の追加は push_back するのに等しい。
https://timsong-cpp.github.io/cppwp/n3337/back.insert.iter.op=
push_back するときはキャパシティが足りるかどうかで動作が異なる。
https://timsong-cpp.github.io/cppwp/n3337/vector.modifiers
結果的にキャパシティが足りていてもキャパシティが足りているかどうかのチェックはおこなわれる。
そのことを >>760 は言ってる。
763デフォルトの名無しさん (ワッチョイ 13ad-F0re)
2023/03/22(水) 16:48:53.83ID:X+UQzyz90 STLコンテナのうちvectorだけがC言語やシステムコールで使う配列との互換性を保証するのだから「vector使うな」とか噴飯ものだよ
764はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/22(水) 16:56:07.11ID:GXnnX9o30 >>760
いわれてみれば確かにゼロコストというわけではないね。
現代的な CPU だと分岐予測が効く場合だと思うので実行時間的には小さいと思うが……。
スマートポインタに for_overwrite 版が入ったなら vector でもやろうという提案は
絶対に出るだろうと思って検索してみたら vector については見つけられなかったが
basic_string::resize_and_overwrite を足す提案はあったわ。
http://wg21.link/P1072R10
いわれてみれば確かにゼロコストというわけではないね。
現代的な CPU だと分岐予測が効く場合だと思うので実行時間的には小さいと思うが……。
スマートポインタに for_overwrite 版が入ったなら vector でもやろうという提案は
絶対に出るだろうと思って検索してみたら vector については見つけられなかったが
basic_string::resize_and_overwrite を足す提案はあったわ。
http://wg21.link/P1072R10
765デフォルトの名無しさん (ワッチョイ 9b9f-kL5v)
2023/03/22(水) 17:09:49.01ID:gZ+A13pt0 std::vector<bool>さん…
766デフォルトの名無しさん (ワッチョイ 693c-UUBt)
2023/03/22(水) 18:28:48.27ID:qjwjL2/30767はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 993e-7LVk)
2023/03/22(水) 19:15:35.45ID:GXnnX9o30768デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/22(水) 20:15:46.78ID:V+0jsH670 極限チューンしたいならvectorなんか使うな
vector使うなら多少のオーバーヘッドは気にするな
vector使うなら多少のオーバーヘッドは気にするな
769デフォルトの名無しさん (ワッチョイ e15f-7LVk)
2023/03/22(水) 20:22:41.22ID:w6cUkLD60 極限チューンしたいならC++なんか使うな
C++使うなら多少のオーバーヘッドは気にするな
とか言っちゃうのかねこういう人は。
C++使うなら多少のオーバーヘッドは気にするな
とか言っちゃうのかねこういう人は。
770デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/22(水) 20:30:41.10ID:V+0jsH670 C++でダメならアセンブラ
771デフォルトの名無しさん (スップ Sd33-sVu9)
2023/03/22(水) 20:54:34.32ID:bSdzjV5Ad >最速チューン
>極限チューン
特にしたくありせん
>極限チューン
特にしたくありせん
772デフォルトの名無しさん (ブーイモ MMc5-xxKT)
2023/03/22(水) 21:54:01.77ID:1hDeVWBQM >>764
だいぶ前に記事そのものがあったわ
リンク先読んでないけど過去に提案されてるっぽい?
https://faithandbrave.hateblo.jp/entry/20131203/1386054567
だいぶ前に記事そのものがあったわ
リンク先読んでないけど過去に提案されてるっぽい?
https://faithandbrave.hateblo.jp/entry/20131203/1386054567
773デフォルトの名無しさん (ワッチョイ d1f0-nGUn)
2023/03/22(水) 22:26:40.76ID:V+0jsH670 >>771
じゃあ細かい事は気にするな
じゃあ細かい事は気にするな
774デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/23(木) 09:55:02.98ID:QwfINZIH0 極限とか感情的バイアスで話すやつはマトモに相手しとれん
775デフォルトの名無しさん (アウアウウー Sa95-lF85)
2023/03/23(木) 11:09:09.78ID:AQHpwrnPa >>768-769
deque
deque
776デフォルトの名無しさん (ワッチョイ c902-4ISk)
2023/03/23(木) 15:45:01.00ID:I4BdcjQJ0 DQN?
777デフォルトの名無しさん (ワッチョイ 13f0-BQ3C)
2023/03/23(木) 20:01:05.89ID:AO0LAUkv0 昔は煽って情報引き出そうとする輩もおったけど、今はAIに聞けば全部教えてくれるんだよな
778デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/23(木) 20:36:59.72ID:QwfINZIH0 AIねえ・・ライダハンて何って聞くとキムチ臭いことを「教えてくれる」けど
おまえはそれを何だ? 神様のお告げとか思ってるの?
アホなの? それともバカなの? 今すぐ首吊って死ねよ
おまえはそれを何だ? 神様のお告げとか思ってるの?
アホなの? それともバカなの? 今すぐ首吊って死ねよ
779デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/23(木) 20:44:08.19ID:QwfINZIH0 機械と人間の違いがわからねーやつは人類全ての敵だ
機械は言われたとおりにやってるだけ
そこにポリシーも夢もひとかけもない
呆れ果てたスーパー情弱のために教えておいてやるが
機械にできるのは演繹だけで帰納はできないって根本的な問題があるんだよ
教わったことが絶対でどんなにおかしい答えも平然と言ってのける
日教組に洗脳されたおまえとそっくりだなwww
機械は言われたとおりにやってるだけ
そこにポリシーも夢もひとかけもない
呆れ果てたスーパー情弱のために教えておいてやるが
機械にできるのは演繹だけで帰納はできないって根本的な問題があるんだよ
教わったことが絶対でどんなにおかしい答えも平然と言ってのける
日教組に洗脳されたおまえとそっくりだなwww
780デフォルトの名無しさん (ワッチョイ e15f-XP14)
2023/03/23(木) 22:27:29.21ID:Df8F7oRN0 代わりに辞書を引いてくれるだけでも大したもんだよ
引き方によってはちょっとした会話にもなるしな
引き方によってはちょっとした会話にもなるしな
781デフォルトの名無しさん (ワッチョイ 13f0-BQ3C)
2023/03/23(木) 22:43:25.00ID:AO0LAUkv0 辞書じゃなくて仕様書な?
782デフォルトの名無しさん (ラクッペペ MM8b-xJOq)
2023/03/24(金) 08:04:10.44ID:p0qI+e9PM 根本的な話をすると脳のニューロン組織とAIプログラムのニューラルネットワークは動作原理は同じ
生体細胞の圧倒的物量による並列処理能力の高さと半導体素子の圧倒的記憶演算能力による方向性の違いだけ
いずれ学習が飛躍的に進めば機械が脳を超える時が来る
生体細胞の圧倒的物量による並列処理能力の高さと半導体素子の圧倒的記憶演算能力による方向性の違いだけ
いずれ学習が飛躍的に進めば機械が脳を超える時が来る
783デフォルトの名無しさん (ワッチョイ 693c-UUBt)
2023/03/24(金) 10:59:13.15ID:LuP95mud0 脳内でバックプロパゲーションとか起こってると思ってるならあまりにももの知らんねキミ
784デフォルトの名無しさん (ワッチョイ 1305-Dpq4)
2023/03/24(金) 11:29:29.53ID:iD/qyfMR0 まあ中枢神経でも逆行性の情報伝達は起きてるけどな
そんなことより改行の後スペースは何回打つのがメジャーなんか?
なおタブ派の意見は聞かない
そんなことより改行の後スペースは何回打つのがメジャーなんか?
なおタブ派の意見は聞かない
785デフォルトの名無しさん (ワッチョイ 1305-Dpq4)
2023/03/24(金) 11:33:31.33ID:iD/qyfMR0 ちなみに俺は7回だ
786デフォルトの名無しさん (ワッチョイ ebda-VjVf)
2023/03/24(金) 15:08:24.40ID:h3NqECut0 ChatGPT研究所
@ctgptlb
今回、驚くべき実験結果が得られました。ChatGPTには敬語で接すると、出力が大幅に良くなる可能性が示唆されました!
https://chatgpt-lab.com/n/nd8dde92016ec
https://ul.h3z.jp/FMiV1SBC.png
https://ul.h3z.jp/cA2maV7H.jpeg
AIも雑なヤロウには雑に扱う
@ctgptlb
今回、驚くべき実験結果が得られました。ChatGPTには敬語で接すると、出力が大幅に良くなる可能性が示唆されました!
https://chatgpt-lab.com/n/nd8dde92016ec
https://ul.h3z.jp/FMiV1SBC.png
https://ul.h3z.jp/cA2maV7H.jpeg
AIも雑なヤロウには雑に扱う
787デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/24(金) 15:19:50.19ID:A6TekdSG0 なんか上から目線でえばってるくせに帰納の意味がわかってなさそうなのがいるなksks
789デフォルトの名無しさん (ワッチョイ a963-4ZMk)
2023/03/24(金) 22:17:35.84ID:A6TekdSG0 人が作った焼き物に手を合わせて神のご加護をってやつだろwww
790デフォルトの名無しさん (ワッチョイ ff9a-Pd8U)
2023/04/01(土) 01:18:43.60ID:TiOY9/eM0 priority_queueに渡す比較関数って、functionでインライン的に書くより
別途ラムダを書いてそれをdecltype()で渡す方がいいんですかね?
後者と同等なインライン的な書き方はあります?
別途ラムダを書いてそれをdecltype()で渡す方がいいんですかね?
後者と同等なインライン的な書き方はあります?
791デフォルトの名無しさん (ワッチョイ 7fad-kVuH)
2023/04/01(土) 06:57:15.82ID:Q/l4fj4H0 >>790
ラムダ式は視認性を改善する目的で使うものなので、ラムダ式のせいでかえって視認性が悪くなるようであればあきらめ時
ラムダ式は視認性を改善する目的で使うものなので、ラムダ式のせいでかえって視認性が悪くなるようであればあきらめ時
792デフォルトの名無しさん (ワッチョイ 7f16-icd+)
2023/04/01(土) 07:50:02.77ID:mhQOcPkw0793デフォルトの名無しさん (ワッチョイ 5f5f-I0N1)
2023/04/01(土) 14:13:57.01ID:STWEvCbN0 >>790
インライン的な書き方ってどんな書き方?
インライン的な書き方ってどんな書き方?
794デフォルトの名無しさん (ワッチョイ ff9a-Pd8U)
2023/04/01(土) 14:26:59.20ID:TiOY9/eM0 例えばfunctionを使って比較関数をインライン的に書くとこうですよね
priority_queue<int, vector<int>, function<bool(int a, int b)>> pq([](int a, int b){return a > b;});
一方ラムダを使った場合は例えばこんなですよね
auto comp = [](int a, int b) { return a > b; };
priority_queue<int, vector<int>, decltype(comp)> pq(comp);
で疑問に思ったのが
- 上記の例で後者の場合もインライン的に書ける? まソース的には1行目と2行目を改行なしで
書けばいいのかもしれないけどw
- function を使う場合と decltype を使う場合の違いに何が違う?
ということです
priority_queue<int, vector<int>, function<bool(int a, int b)>> pq([](int a, int b){return a > b;});
一方ラムダを使った場合は例えばこんなですよね
auto comp = [](int a, int b) { return a > b; };
priority_queue<int, vector<int>, decltype(comp)> pq(comp);
で疑問に思ったのが
- 上記の例で後者の場合もインライン的に書ける? まソース的には1行目と2行目を改行なしで
書けばいいのかもしれないけどw
- function を使う場合と decltype を使う場合の違いに何が違う?
ということです
795デフォルトの名無しさん (ワッチョイ ff9a-Pd8U)
2023/04/01(土) 14:29:01.96ID:TiOY9/eM0 う、二番目の質問がおかしい
- function と delctype で単に書き方が違うという以上の違いはありますか?
- function と delctype で単に書き方が違うという以上の違いはありますか?
796デフォルトの名無しさん (ワッチョイ ff9a-Pd8U)
2023/04/01(土) 14:31:10.70ID:TiOY9/eM0 function と decltype は単にシンタックスが違うだけというなら、これからは一番最初の
function を使った書き方で行こうかなと思います
function を使った書き方で行こうかなと思います
797デフォルトの名無しさん (ワッチョイ 7f7f-icd+)
2023/04/01(土) 15:00:44.48ID:IfOudlag0 C++17以降ならdeduction guideが使える
priority_queue pq { [](int a, int b){return a > b;}, vector<int>{} };
priority_queue pq { [](int a, int b){return a > b;}, vector<int>{} };
798デフォルトの名無しさん (ワッチョイ 7f28-TZ4b)
2023/04/02(日) 08:51:08.20ID:t9D8iOvK0 メモリ確保と同時に初期化、
これをしないことによる顕著なメリットの説明がそろそろあってしかるべき……
初期化をしないことによってメモリ確保はメモリ確保1回あたり(デフォルトコンストラクタにもよるが)数千~数万クロックサイクルぐらい早くなるかもしれないが
プログラムの実行速度を追求したいならそもそもメモリ確保とかいっぱい回るループの中ですべきではないし、
そもそも領域を確保しておいて初期化を後回しにするとか、プログラミを不必要に複雑なピタゴラスイッチ化するだけ……
もっとも、毎秒1万回std::vector<T>を構築するとか、サイズ3TBのFIFOを作るとかなアフォ
構想時点で極めて特殊な設計なら話は別やが……
これをしないことによる顕著なメリットの説明がそろそろあってしかるべき……
初期化をしないことによってメモリ確保はメモリ確保1回あたり(デフォルトコンストラクタにもよるが)数千~数万クロックサイクルぐらい早くなるかもしれないが
プログラムの実行速度を追求したいならそもそもメモリ確保とかいっぱい回るループの中ですべきではないし、
そもそも領域を確保しておいて初期化を後回しにするとか、プログラミを不必要に複雑なピタゴラスイッチ化するだけ……
もっとも、毎秒1万回std::vector<T>を構築するとか、サイズ3TBのFIFOを作るとかなアフォ
構想時点で極めて特殊な設計なら話は別やが……
799デフォルトの名無しさん (ワッチョイ 7f28-TZ4b)
2023/04/02(日) 09:00:08.86ID:t9D8iOvK0 それよか一番危険なのは、
>必要があれば初期化するし
>必要なければ余計なことはしない
>
>判断できましぇ~んなアホにはなりたくない (キリ
とのたまう人が、encueカウンタやdecueueカウンタが未初期かなFIFO、みたいな
益体も無い例を持ち出してみたり、冒す必要のない危険を冒してまでリリースしてしまうことや……
>必要があれば初期化するし
>必要なければ余計なことはしない
>
>判断できましぇ~んなアホにはなりたくない (キリ
とのたまう人が、encueカウンタやdecueueカウンタが未初期かなFIFO、みたいな
益体も無い例を持ち出してみたり、冒す必要のない危険を冒してまでリリースしてしまうことや……
800デフォルトの名無しさん (ワッチョイ 7f28-TZ4b)
2023/04/02(日) 09:31:47.33ID:t9D8iOvK0 >>784
教師信号はどこから来るというんじゃ……
教師信号はどこから来るというんじゃ……
801デフォルトの名無しさん (ワッチョイ 5f5f-9P2W)
2023/04/02(日) 10:42:08.81ID:B65ZsGdj0 まず、えんきゅーできゅーのスペル確認ぐらいしてくれ。
802デフォルトの名無しさん (ワッチョイ 7f28-TZ4b)
2023/04/02(日) 10:44:15.18ID:t9D8iOvK0 まともな回答を寄越してくれたら直してしんぜよう、
803デフォルトの名無しさん (ワッチョイ ffcf-icd+)
2023/04/02(日) 10:52:59.44ID:iUrLRRfa0804デフォルトの名無しさん (ワッチョイ df63-2Vho)
2023/04/02(日) 11:02:53.69ID:WgpY8vNM0 char fifo[256] = 俺はここのことを言った
char* enq = ここの話に逸らした時点でアホの相手はやめた
char* enq = ここの話に逸らした時点でアホの相手はやめた
805デフォルトの名無しさん (ワッチョイ 5f69-9P2W)
2023/04/02(日) 16:04:22.42ID:MRqRSiku0 CUE!難民発見
806はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ff3e-9P2W)
2023/04/02(日) 16:50:57.97ID:gP4vNTAJ0 >>796
std::function は実行時に型を切り替える機能をもったクラスで、
後から切り替える可能性が無い場面では無駄になるから避けるのが普通だと思う。
#include <functional>
int foo(void) { return 1; }
int main() {
// 関数ポインタとクロージャは異なる型だが
// std::function は呼出しの形式が同じならどちらでも扱える
std::function<int(void)> bar = foo; // 関数ポインタを格納できる
bar = [](void) -> int { return 1; }; // クロージャも格納できる
}
std::function は実行時に型を切り替える機能をもったクラスで、
後から切り替える可能性が無い場面では無駄になるから避けるのが普通だと思う。
#include <functional>
int foo(void) { return 1; }
int main() {
// 関数ポインタとクロージャは異なる型だが
// std::function は呼出しの形式が同じならどちらでも扱える
std::function<int(void)> bar = foo; // 関数ポインタを格納できる
bar = [](void) -> int { return 1; }; // クロージャも格納できる
}
807デフォルトの名無しさん (ワッチョイ 5f5f-I0N1)
2023/04/02(日) 17:17:55.77ID:Pu7bAi6b0 コンパイラと標準ライブラリによるんだろうけど、
std::functionはラップしてるぶんラムダに比べて遅いだろうね
でもラップしてるおかげで柔軟だから用途次第で使い分けるのがいいね
std::functionはラップしてるぶんラムダに比べて遅いだろうね
でもラップしてるおかげで柔軟だから用途次第で使い分けるのがいいね
808デフォルトの名無しさん (ワッチョイ df63-2Vho)
2023/04/02(日) 17:20:28.25ID:WgpY8vNM0 anyみたいにRTTIを使っているわけじゃないけどね
809デフォルトの名無しさん (ワッチョイ c69a-RdFw)
2023/04/08(土) 06:18:03.35ID:AxtXnxq40 bool型を整数に変換した時、false -> 0, true -> 1 は保証される?
810デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/08(土) 06:19:18.69ID:jYlViDaH0 される
811デフォルトの名無しさん (ワッチョイ c69a-RdFw)
2023/04/08(土) 06:40:35.49ID:AxtXnxq40 ですか
何個条件が成り立っているかを数えるときに上記を使ってるっぽいコードがあったので
何個条件が成り立っているかを数えるときに上記を使ってるっぽいコードがあったので
812デフォルトの名無しさん (ワッチョイ c5da-Lh5z)
2023/04/08(土) 08:36:57.00ID:v6ilm6510 WindowsのBOOLは保障されない点だけ気を付けよう
==TRUEとかやっちゃダメだからね
==TRUEとかやっちゃダメだからね
813はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/08(土) 09:17:21.57ID:CT+2+9fN0814デフォルトの名無しさん (ワッチョイ 6ecf-Rzwh)
2023/04/08(土) 10:10:31.03ID:zFgkwmzh0 TRUE==1 FALSE==0 は仕様で明確に保証されていたかは知らんが事実上変えようがないから実害はないな。
注意するのは「FALSEでない値」とTRUEは違うってことで。
注意するのは「FALSEでない値」とTRUEは違うってことで。
815はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/08(土) 11:19:32.51ID:CT+2+9fN0 >>814
ドキュメントに書いてあるから仕様と言ってよさそう。
https://learn.microsoft.com/en-us/windows/win32/learnwin32/windows-coding-conventions#boolean-type
ドキュメントに書いてあるから仕様と言ってよさそう。
https://learn.microsoft.com/en-us/windows/win32/learnwin32/windows-coding-conventions#boolean-type
816デフォルトの名無しさん (ワッチョイ a190-6ENU)
2023/04/08(土) 11:52:43.24ID:x/nopyOk0 #define True !Fales はもう昔の話か
817デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/08(土) 16:50:36.81ID:jYlViDaH0 GetMessage() < 0 とかもうアボカド
818デフォルトの名無しさん (アウウィフ FF05-883t)
2023/04/09(日) 09:19:40.13ID:Dm0aM9sgF #define True !False
printf("%d", True);
# 1
printf("%d", True);
# 1
819デフォルトの名無しさん (アウウィフ FF05-883t)
2023/04/09(日) 09:20:16.12ID:Dm0aM9sgF >>817
ほんそれ++
ほんそれ++
820デフォルトの名無しさん (アウアウウー Sa05-/Yip)
2023/04/09(日) 23:45:39.86ID:Gr5O5zRWa c++の入門書のサンプルでは、整数を 42で初期化するケースが多い気がします
この 42(fooやbarを使うように)には意味があるのでしょうか
この 42(fooやbarを使うように)には意味があるのでしょうか
821デフォルトの名無しさん (ワッチョイ 495f-/aea)
2023/04/09(日) 23:49:54.13ID:mWJqmDjC0822デフォルトの名無しさん (アウアウウー Sa05-/Yip)
2023/04/10(月) 00:03:58.95ID:PpQYou85a >>821
thx!
thx!
823デフォルトの名無しさん (ワッチョイ 6ea7-/aea)
2023/04/10(月) 10:38:06.12ID:auMz+cIB0 constevalな関数の中でchar配列中からintを読み取る場合ってポインタ使えないから下記のようにするしかない?
arr[index] | ((int)arr[index + 1] << 8) | ((int)arr[index + 2] << 16) | ((int)arr[index + 3] << 24);
arr[index] | ((int)arr[index + 1] << 8) | ((int)arr[index + 2] << 16) | ((int)arr[index + 3] << 24);
824デフォルトの名無しさん (ワッチョイ 495f-/aea)
2023/04/10(月) 13:13:53.16ID:j1Pkk3Kb0825デフォルトの名無しさん (ワッチョイ 495f-MO2j)
2023/04/10(月) 13:14:40.33ID:Y31i0sl00 >>823
共用体は使えないの?
共用体は使えないの?
826デフォルトの名無しさん (スップ Sd82-qF+M)
2023/04/10(月) 15:33:11.04ID:3mw67OVid 32bit-little endianであることを前提になるがいいか?
あとこれarr[3]が0-127に収まってないとintの符号ビット壊しそうだし、
charが符号付きの環境だとシフト+bit orが意図通りにならなそう
あとこれarr[3]が0-127に収まってないとintの符号ビット壊しそうだし、
charが符号付きの環境だとシフト+bit orが意図通りにならなそう
827デフォルトの名無しさん (ワッチョイ a910-Mkip)
2023/04/11(火) 00:04:23.89ID:Ta/4j/O20 >>823
consteval使えるならbit_castも使えるのでは
consteval使えるならbit_castも使えるのでは
828はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/11(火) 00:07:23.43ID:HzbpoBAH0829デフォルトの名無しさん (スプッッ Sd22-b+kJ)
2023/04/11(火) 12:34:29.16ID:Ii6omevMd >>826
おもいっきり環境依存なコードに対して環境依存を心配するアホ
おもいっきり環境依存なコードに対して環境依存を心配するアホ
830デフォルトの名無しさん (スプッッ Sd22-b+kJ)
2023/04/11(火) 12:34:35.05ID:Ii6omevMd >>826
おもいっきり環境依存なコードに対して環境依存を心配するアホ
おもいっきり環境依存なコードに対して環境依存を心配するアホ
831デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/11(火) 15:29:28.26ID:No77oSsN0 右シフトはおもいっきり符号にひっぱられるけど左シフトならセーフだべ?
832デフォルトの名無しさん (ワッチョイ a961-rbmB)
2023/04/11(火) 15:38:30.59ID:aQanOcc40 char→intで符号拡張されちゃうべ
833デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/11(火) 15:39:28.74ID:No77oSsN0 んだんだ 0xff で マスクするべな
834デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/11(火) 15:43:02.02ID:No77oSsN0 (0x0ff & (int)a[i]) |
(0x0ff & (a[i+1] <<8)) |
(0x0ff & (a[i+2] <<16)) |
(0x0ff & (a[i+3] <<24))
これでよろしかですかの?
(0x0ff & (a[i+1] <<8)) |
(0x0ff & (a[i+2] <<16)) |
(0x0ff & (a[i+3] <<24))
これでよろしかですかの?
835デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/11(火) 15:43:45.69ID:No77oSsN0 ひでぇ間違えた もういいー
836デフォルトの名無しさん (ワッチョイ 254e-Rzwh)
2023/04/11(火) 15:47:35.33ID:ukUq4n2Z0 >>834
そんなことしなくても (int)(unsigned char) でいいのでは?
そんなことしなくても (int)(unsigned char) でいいのでは?
837デフォルトの名無しさん (ワッチョイ c5c9-hq/O)
2023/04/11(火) 16:07:55.56ID:No77oSsN0 んだな
838デフォルトの名無しさん (スッップ Sd22-b+kJ)
2023/04/11(火) 17:30:55.22ID:K2f5iX7Sd (int) いらね
839デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/11(火) 18:27:39.70ID:3b0RAKoL0 (unsigned int)arr[index] | ((unsigned int)arr[index + 1] << 8) | ((unsigned int)arr[index + 2] << 16) | ((unsigned int)arr[index + 3] << 24);
840デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/11(火) 18:33:47.48ID:3b0RAKoL0 いや、こうか
arr[index] | int((unsigned)arr[index + 1] << 8) | int((unsigned)arr[index + 2] << 16) | int((unsigned)arr[index + 3] << 24);
arr[index] | int((unsigned)arr[index + 1] << 8) | int((unsigned)arr[index + 2] << 16) | int((unsigned)arr[index + 3] << 24);
841デフォルトの名無しさん (アウアウエー Sa0a-0l8A)
2023/04/11(火) 18:49:44.57ID:HmfbYrEaa 以下はTCP/IPのクライアントを作成する例なのですが、このコードにタイムアウト値を付けるにはどうしたら良いですか?
http://onishi-lab.jp/programming/tcp_win.html
// Windows の場合
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);
// 相手先アドレスの入力と送る文字の入力
printf("サーバーマシンのIPは?:");
scanf("%s", destination);
// sockaddr_in 構造体のセット
memset(&dstAddr, 0, sizeof(dstAddr));
dstAddr.sin_port = htons(PORT);
dstAddr.sin_family = AF_INET;
dstAddr.sin_addr.s_addr = inet_addr(destination);
// ソケットの生成
dstSocket = socket(AF_INET, SOCK_STREAM, 0);
//接続
if(connect(dstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr))){
printf("%s に接続できませんでした\n",destination);
return(-1);
}
http://onishi-lab.jp/programming/tcp_win.html
// Windows の場合
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);
// 相手先アドレスの入力と送る文字の入力
printf("サーバーマシンのIPは?:");
scanf("%s", destination);
// sockaddr_in 構造体のセット
memset(&dstAddr, 0, sizeof(dstAddr));
dstAddr.sin_port = htons(PORT);
dstAddr.sin_family = AF_INET;
dstAddr.sin_addr.s_addr = inet_addr(destination);
// ソケットの生成
dstSocket = socket(AF_INET, SOCK_STREAM, 0);
//接続
if(connect(dstSocket, (struct sockaddr *) &dstAddr, sizeof(dstAddr))){
printf("%s に接続できませんでした\n",destination);
return(-1);
}
842デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/11(火) 19:25:01.15ID:BlUKqEB00 winsock2 connect タイムアウト
843デフォルトの名無しさん (アウアウエー Sa0a-0l8A)
2023/04/12(水) 20:53:53.05ID:slmCp11Ka >>842
ありがとうございます。
この記事のWindows版を参考にしてタイムアウトつき接続できたのですが
https://qiita.com/hidetaka0/items/501ad17b4c23c3adee03
これってちゃんとサーバーに接続できた場合、接続できたことをコード内のどこで判別すれば良いのでしょうか?
色んな箇所にprintを仕込んでみたのですがよくわかりませんでした。
ありがとうございます。
この記事のWindows版を参考にしてタイムアウトつき接続できたのですが
https://qiita.com/hidetaka0/items/501ad17b4c23c3adee03
これってちゃんとサーバーに接続できた場合、接続できたことをコード内のどこで判別すれば良いのでしょうか?
色んな箇所にprintを仕込んでみたのですがよくわかりませんでした。
844デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/12(水) 21:19:15.87ID:3roUAINp0 //読み書きできる状態
845デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/12(水) 21:38:01.94ID:IOSSRt+R0 ネットワークプログラミングスレってあったと思うんだけど
何でここで質問するのか理解できない
何でここで質問するのか理解できない
846デフォルトの名無しさん (スプープ Sd22-pvw1)
2023/04/13(木) 00:15:12.61ID:ndOnjJhod847デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/13(木) 01:15:15.35ID:DRH76Ra10848デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/13(木) 01:23:34.33ID:DRH76Ra10849デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/13(木) 01:28:55.79ID:DRH76Ra10 あと考えられる問題は、スレッドのスタックが足りなくてprintfがコールできていない可能性だな
いろいろと洗ってみれ
いろいろと洗ってみれ
850デフォルトの名無しさん (スプープ Sd22-0l8A)
2023/04/13(木) 02:30:15.77ID:/ixh6GMqd >>847
以下のようにprintというかcoutを挟むと、接続前はずっと"1"が出力されるのに、接続後は何も出力されなくなります。
エラーも出ず、プログラムは動き続けます。
int sockNum = select(socket + 1, &readFd, &writeFd, &errFd, &timeout);
if(0 == sockNum)
{
//timeout
std::cout << "1" << std::endl;
return -1;
}
else if(FD_ISSET(socket, &readFd) || FD_ISSET(socket, &writeFd) )
{
std::cout << "2" << std::endl;
}
else
{
//error
std::cout << "3" << std::endl;
return -1;
}
std::cout << "4" << std::endl;
以下のようにprintというかcoutを挟むと、接続前はずっと"1"が出力されるのに、接続後は何も出力されなくなります。
エラーも出ず、プログラムは動き続けます。
int sockNum = select(socket + 1, &readFd, &writeFd, &errFd, &timeout);
if(0 == sockNum)
{
//timeout
std::cout << "1" << std::endl;
return -1;
}
else if(FD_ISSET(socket, &readFd) || FD_ISSET(socket, &writeFd) )
{
std::cout << "2" << std::endl;
}
else
{
//error
std::cout << "3" << std::endl;
return -1;
}
std::cout << "4" << std::endl;
851デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/13(木) 02:46:49.32ID:DRH76Ra10 そこ、コードが間違ってるな
selectのエラーは負の値返したときだよ
selectのエラーは負の値返したときだよ
852デフォルトの名無しさん (ワッチョイ aeda-Lh5z)
2023/04/13(木) 06:22:49.75ID:DRH76Ra10 だがしかし、エラーじゃなくてタイムアウト検査して0と比較しているからこのままでも問題はないか
timevalのタイムアウト値がまちがってんじゃねーの?とは思う
timevalのタイムアウト値がまちがってんじゃねーの?とは思う
853デフォルトの名無しさん (ワッチョイ 0279-90pI)
2023/04/13(木) 07:23:10.38ID:8nXR27xn0 socket + 1って何だっけ
おかしい原因これじゃないの?こういうもんだっけ?
おかしい原因これじゃないの?こういうもんだっけ?
854デフォルトの名無しさん (ワッチョイ a2fb-qF+M)
2023/04/13(木) 08:05:52.88ID:AKmB1uVA0 VisualStudio使ってるんならステップ実行したほうがはやいんじゃね
1行ずつ実行してどこでクラッシュ/待たされてるかすぐにわかるぞ
1行ずつ実行してどこでクラッシュ/待たされてるかすぐにわかるぞ
855デフォルトの名無しさん (ワッチョイ 495f-cPl8)
2023/04/13(木) 10:00:54.60ID:4kBfFXBL0 接続後にConnect呼んでないだけでしょ
856デフォルトの名無しさん (スプープ Sd22-pvw1)
2023/04/13(木) 10:36:58.20ID:GsnZRt31d >>855
コード内のどこでconnectを呼べば良いですか?
コード内のどこでconnectを呼べば良いですか?
857デフォルトの名無しさん (ワッチョイ 495f-cPl8)
2023/04/13(木) 15:55:39.85ID:4kBfFXBL0 >>856
ソースをうpは無理?
ソースをうpは無理?
858デフォルトの名無しさん (ワッチョイ c69a-gTA8)
2023/04/13(木) 17:56:14.36ID:iNDrHE0O0 初心者なのですが、find()で結果がないときnposの場合と.hoge.end()の場合、
イテレータで hoge.begin()とする場合と begin(hoge)とする場合(end()も同様)、等
混乱しております。これは...
イテレータで hoge.begin()とする場合と begin(hoge)とする場合(end()も同様)、等
混乱しております。これは...
859デフォルトの名無しさん (ワッチョイ 2d63-r2C4)
2023/04/13(木) 18:12:14.03ID:zEEI4t8g0 nposってstd::basic_stringのか?
#include <algorithm>のfindとは別物だぞ
メンバ関数でfindを持っているオブジェクトならhoge.begin()
持っていないオブジェクトにはbegin(hoge)
#include <algorithm>のfindとは別物だぞ
メンバ関数でfindを持っているオブジェクトならhoge.begin()
持っていないオブジェクトにはbegin(hoge)
860はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-/aea)
2023/04/13(木) 18:22:14.89ID:y5cvZaYN0 >>858
algorithm にある std::find と string にある std::string::find の違いのことかな?
それはまあ名前が同じだけの別物なんでそういうものと思うしか仕方がない。
begin については、
異なるものが共通のインターフェイスで扱えるとテンプレート内で扱いやすいだろうというのが基本的な事情。
でも配列とかポインタがメンバを持つことは出来ないからこれらも含めて共通の扱いをしたい場合は
メンバ関数の begin よりも非メンバ関数の std::begin を使う必要がある。
メンバに begin を持っている場合はそれを直接に呼んでも std::begin を使っても結果は同じだよ。
C++ には ADL という仕組みがあって引数に関連する名前空間も関数を探す探索対象になるというルールがある。
std::begin は ADL の仕組みと相性が悪いところがあって扱いづらいので
新しい仕様は std::ranges::begin が導入された。
ややこしいんだが全部を一貫して説明できるような統制された理屈があるわけではなくて
細々とした歴史的事情の積み重ねでグダグダになってるだけ。
algorithm にある std::find と string にある std::string::find の違いのことかな?
それはまあ名前が同じだけの別物なんでそういうものと思うしか仕方がない。
begin については、
異なるものが共通のインターフェイスで扱えるとテンプレート内で扱いやすいだろうというのが基本的な事情。
でも配列とかポインタがメンバを持つことは出来ないからこれらも含めて共通の扱いをしたい場合は
メンバ関数の begin よりも非メンバ関数の std::begin を使う必要がある。
メンバに begin を持っている場合はそれを直接に呼んでも std::begin を使っても結果は同じだよ。
C++ には ADL という仕組みがあって引数に関連する名前空間も関数を探す探索対象になるというルールがある。
std::begin は ADL の仕組みと相性が悪いところがあって扱いづらいので
新しい仕様は std::ranges::begin が導入された。
ややこしいんだが全部を一貫して説明できるような統制された理屈があるわけではなくて
細々とした歴史的事情の積み重ねでグダグダになってるだけ。
861デフォルトの名無しさん (ワッチョイ c71f-CTeB)
2023/04/15(土) 01:20:02.46ID:dgB6RPkk0 intとsize_tって足し算したらsize_tになるんか・・・?
862デフォルトの名無しさん (ワッチョイ 0701-ieXZ)
2023/04/15(土) 02:11:09.11ID:KQOFatDn0 bit数の大きい側に拡張してから演算するんやっけ
863デフォルトの名無しさん (ワッチョイ 7fda-OGDT)
2023/04/15(土) 02:27:21.46ID:m2iUDqjP0 不安ならキャストせい
864デフォルトの名無しさん (ワッチョイ c71f-CTeB)
2023/04/15(土) 02:33:26.00ID:dgB6RPkk0 改めて書くと
std::vector<...> vec;
int neg = -15;
for(int x = neg ; x < neg + vec.size() ; x++){ ...
こんな感じのfor文の中になぜか入ってこず
for(int x = neg ; x < neg + (int)vec.size() ; x++){ ...
こう書き換えたらfor文の中にちゃんと入ってきたので
何事かと
std::vector<...> vec;
int neg = -15;
for(int x = neg ; x < neg + vec.size() ; x++){ ...
こんな感じのfor文の中になぜか入ってこず
for(int x = neg ; x < neg + (int)vec.size() ; x++){ ...
こう書き換えたらfor文の中にちゃんと入ってきたので
何事かと
865デフォルトの名無しさん (ワッチョイ 7fda-OGDT)
2023/04/15(土) 02:57:32.14ID:m2iUDqjP0 そりゃビット数の多いsize_tに自動的にキャストされるからな
866デフォルトの名無しさん (ワッチョイ 277c-H95I)
2023/04/15(土) 09:19:08.06ID:9E7JiVxa0 コンパイラの警告出てるでしょそれ
867デフォルトの名無しさん (ワッチョイ 5ffb-ZLJR)
2023/04/15(土) 12:55:47.51ID:ZHLNp/Uz0 32bit intが表現できる範囲(-21億〜+21億)と
size_tが表現できる範囲(32bit環境なら0〜42億、64bit環境なら1800京)が違うんだよね
直接キャストしたり比較演算した結果が一目で分からないし、
未規定の動作も紛れてるから
コンパイラによって結果が変わったりする
size_tが表現できる範囲(32bit環境なら0〜42億、64bit環境なら1800京)が違うんだよね
直接キャストしたり比較演算した結果が一目で分からないし、
未規定の動作も紛れてるから
コンパイラによって結果が変わったりする
868はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/15(土) 15:43:33.34ID:5Qe8Q1VE0 ちなみに更に厳密なことを言うと std::vector::size() の返却値の型は std::vector::size_type であって、
一般的な実装では size_t の別名として定義されることが多いけどそうでないこともありうる。
一般的な実装では size_t の別名として定義されることが多いけどそうでないこともありうる。
869デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/15(土) 17:41:19.21ID:SXeCdLds0 移植性を気にする人ってtypename std::vector<hoge>::size_typeとか書いてるの?
870デフォルトの名無しさん (ワッチョイ 277c-H95I)
2023/04/15(土) 18:32:47.38ID:9E7JiVxa0 こんなかなあ
不用意にsize_t決め打ちはなるべくしない(せざるをえない場合もある)
auto N = v.size();
for(decltype(N) i = 0; i < N; ++i) { /**/ }
不用意にsize_t決め打ちはなるべくしない(せざるをえない場合もある)
auto N = v.size();
for(decltype(N) i = 0; i < N; ++i) { /**/ }
871デフォルトの名無しさん (ワッチョイ 5f79-uE6i)
2023/04/15(土) 20:20:15.05ID:iq3ZlEDB0 単にsize_tの型とイコールじゃなかったらエラーではねとけばいいんじゃね
想定外環境でも何でもかんでも通そううなんて思考はバグの元になるし
想定外環境でも何でもかんでも通そううなんて思考はバグの元になるし
872デフォルトの名無しさん (ワッチョイ 674e-baic)
2023/04/15(土) 20:53:24.33ID:9nQxeRw/0 NAXDE
873デフォルトの名無しさん (ワッチョイ 674e-baic)
2023/04/15(土) 20:58:21.87ID:9nQxeRw/0 なんでsize_tをunsigned にしたんだろうな…
874デフォルトの名無しさん (ワッチョイ 5fad-soEM)
2023/04/15(土) 21:05:21.11ID:r+oi7xUE0 そりゃサイズに負数はあり得ないからでは?
-12バイトのファイルなんてありえないですし
-12バイトのファイルなんてありえないですし
875デフォルトの名無しさん (ワッチョイ 4701-ieXZ)
2023/04/15(土) 21:41:39.88ID:fX0vt5Cu0 奥さん! そこでssize_tですよ!
876デフォルトの名無しさん (ワッチョイ 7fcf-baic)
2023/04/15(土) 22:41:45.51ID:21huWqOn0 数の概念が生まれた当初は負の数なんて想像つかなかったしな。
マイナス3個のリンゴとか存在しないし。
マイナス3個のリンゴとか存在しないし。
877デフォルトの名無しさん (ワッチョイ 5fad-soEM)
2023/04/15(土) 22:44:53.66ID:r+oi7xUE0 つまりマイナスの概念が存在しない時からsize_tは存在していた!?
878デフォルトの名無しさん (ワッチョイ a702-em59)
2023/04/15(土) 23:18:30.96ID:mFN3uRP10 負数があるならssize_tやptrdiff_tと使い分けなよ…
879デフォルトの名無しさん (ワッチョイ 5f28-C4RG)
2023/04/16(日) 09:49:57.27ID:KtrVYfy50 for (size_t k = 999; k >= 0; k--) {
...
...
880デフォルトの名無しさん (ワッチョイ 7fda-OGDT)
2023/04/16(日) 12:17:04.86ID:mZTbxJpt0 for (size_t k = 999; k+1 > 0; k--) {
...
...
881デフォルトの名無しさん (スププ Sd7f-wMyH)
2023/04/16(日) 17:59:44.79ID:gghWvzSgd k > -1
882デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/16(日) 21:30:04.86ID:SbMfPVDO0 k < -1
883デフォルトの名無しさん (ワッチョイ a702-em59)
2023/04/16(日) 23:08:58.58ID:EOwLLPBr0 くノ一
884デフォルトの名無しさん (アウアウウー Sacb-/q5i)
2023/04/17(月) 20:58:44.15ID:RKcegE7fa size_t の変数を 0 との大小で比較しても
常に >= 0 だから変なことになる
for で -- してるときは特に注意な
常に >= 0 だから変なことになる
for で -- してるときは特に注意な
885デフォルトの名無しさん (ラクッペペ MM8f-bKDU)
2023/04/18(火) 07:58:45.20ID:EVDEK+w/M 負の数、虚の数
886デフォルトの名無しさん (ワッチョイ 7fa7-zN3t)
2023/04/18(火) 09:29:12.70ID:hwR9qYx/0 符号無しループはグーグルだとコーディング規約違反だからな
887デフォルトの名無しさん (ワッチョイ 2763-7nfa)
2023/04/19(水) 11:20:40.34ID:twYHK80b0 コーディング基準はあくまで特定案件での決めごとに過ぎず
井の外で何かを批判する根拠に使っても説得力はない
井の外で何かを批判する根拠に使っても説得力はない
888デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/19(水) 11:50:42.02ID:rE0e6VM+0 符号ありしかない言語もあるから、それなりに一般性あるかと
889デフォルトの名無しさん (ワッチョイ 2763-7nfa)
2023/04/19(水) 12:06:58.70ID:twYHK80b0 特定案件つーてるのに他の言語?
話通じないやつだな
話通じないやつだな
890デフォルトの名無しさん (ワッチョイ c75f-nEk4)
2023/04/19(水) 12:12:27.61ID:rE0e6VM+0 あれ?話広げたいんじゃなかったのか こりゃ失礼
891デフォルトの名無しさん (ワッチョイ 5f28-C4RG)
2023/04/21(金) 06:54:24.86ID:zpP4hMgV0 std::vector<T>::size()やstrlen()が符号無しで返してくるからそれらを使った汎用ライブラリ的なものを書く場合に仕方なくsize_tを使うこともあるだけでループ変数については符号有りで大して困らない希ガスだいたいOS記述言語であるところのC言語がアセンブラでは常識的に利用されるゼロフラグやキャリーフラグの概念を捨て去った設計した点をかみしめるべきや整数表現のMSBまで符号以外の意味で使わねばならないシチュエーションはマジ少ない多倍長演算であってさえ2のべき乗範囲に拘るのを捨てたらゼロフラグやキャリーフラグを駆使してビット幅全部使う記述と同等以上の効率にできうる
892デフォルトの名無しさん (ワッチョイ 277c-H95I)
2023/04/21(金) 07:19:21.58ID:opTauXds0 句読点を入れろ
893デフォルトの名無しさん (ワッチョイ 279c-3fkD)
2023/04/21(金) 08:49:31.32ID:6fw7yQrg0 江戸時代かよ。
894デフォルトの名無しさん (ワッチョイ 7fa7-S3w6)
2023/04/21(金) 11:52:07.81ID:Er6tcVYC0 スレチだと思うけどx86intrinsicsに詳しい人がいたらNonTemporal命令について教えてもらいたい
_mm_stream_load_si128や_mm_stream_si32はCPUキャッシュに対象範囲が無い場合はキャッシュスルーして確実にメモリを読み書きするということは分かったけど、
CPUキャッシュにある場合の挙動は一般的な命令同様にCPU内だけで完結してしまう?
_mm_stream_load_si128や_mm_stream_si32はCPUキャッシュに対象範囲が無い場合はキャッシュスルーして確実にメモリを読み書きするということは分かったけど、
CPUキャッシュにある場合の挙動は一般的な命令同様にCPU内だけで完結してしまう?
895デフォルトの名無しさん (アウアウウー Sa21-YWDm)
2023/04/26(水) 10:00:37.79ID:N7+hGpB4a896デフォルトの名無しさん (スプッッ Sdea-sIDl)
2023/04/26(水) 12:19:22.01ID:eD6bPnvLd897デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/26(水) 19:26:58.67ID:4J8YauGVM 素人考えで悪いけどメモリへの書き込みがされずCPU内だけで終わると困ると思うけど
勝手なイメージ
書き込むアドレス内容がキャッシュに
ある
キャッシュのデータも書き換える → 通常の動作
ない
_mm_stream_si32の場合 キャッシュへデータを読み込まない → 速い
その他の場合 キャッシュへデータを読み込む → 遅い
勝手なイメージ
書き込むアドレス内容がキャッシュに
ある
キャッシュのデータも書き換える → 通常の動作
ない
_mm_stream_si32の場合 キャッシュへデータを読み込まない → 速い
その他の場合 キャッシュへデータを読み込む → 遅い
898デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/26(水) 20:14:03.72ID:4J8YauGVM avx2でnon temporay loadの方を比較したけどほぼ変わらない
サイズが小さすぎたせいかもしれないけど
サイズが小さすぎたせいかもしれないけど
899デフォルトの名無しさん (ワッチョイ 66a7-ASru)
2023/04/26(水) 22:05:00.98ID:T6VCSheE0900デフォルトの名無しさん (ワッチョイ 66a7-ASru)
2023/04/26(水) 22:12:18.77ID:T6VCSheE0 >>898
本来のnon temporal命令の利点はその命令自体の速度ではなくキャッシュ汚染防止だね
例えば離れたアドレスにあるであろうstatic変数にアクセスするとき、その付近のデータには一定期間内に一度しかアクセスしないと分かりきっているなら、CPUの親切心による近隣メモリのキャッシュへの先読みはどうせ使われないのでむしろペナルティでしかなく不要となる
あとはmemcpyにおいてキャッシュはソース側に集中させてディスト側へは_mm_streamでキャッシュ汚染を抑えてコピーをするというテクニックもあって多分メジャーどころのコンパイラ実装は大体そうなってる
IvyBridge以降であればsimdより強化版rep movsbの方が早いケースも多くて分岐によってそっちに行くこともあるだろうけど
本来のnon temporal命令の利点はその命令自体の速度ではなくキャッシュ汚染防止だね
例えば離れたアドレスにあるであろうstatic変数にアクセスするとき、その付近のデータには一定期間内に一度しかアクセスしないと分かりきっているなら、CPUの親切心による近隣メモリのキャッシュへの先読みはどうせ使われないのでむしろペナルティでしかなく不要となる
あとはmemcpyにおいてキャッシュはソース側に集中させてディスト側へは_mm_streamでキャッシュ汚染を抑えてコピーをするというテクニックもあって多分メジャーどころのコンパイラ実装は大体そうなってる
IvyBridge以降であればsimdより強化版rep movsbの方が早いケースも多くて分岐によってそっちに行くこともあるだろうけど
901デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/26(水) 22:46:41.52ID:4J8YauGVM902デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/26(水) 22:54:06.40ID:4J8YauGVM それとx86intrinsicsと書かれてるのはSystem.Runtime.Intrinsics.X86 名前空間で.netなんだ
コンパイラがキャッシュを気にしたIL吐いたりそこから最適化されたネイティブコードを吐くようにはできてないと思う
コンパイラがキャッシュを気にしたIL吐いたりそこから最適化されたネイティブコードを吐くようにはできてないと思う
903デフォルトの名無しさん (ワッチョイ 1701-o+T5)
2023/04/30(日) 10:58:06.37ID:W+TV1tj50 これまでなんとなくinitializer_listを使ってきたのですが
このクラスって他のクラスと異なりコンパイラによって特別な解釈をされるのでしょうか?
以下のhoge::initializer_listはstdからコピペしてpublicメンバ以外を除外したものです
hoge::initializer_listを実体化するとコンパイルエラーとなります
コンパイラは g++ (Debian 10.2.1-6) 10.2.1 20210110 です
#include <initializer_list>
#include <cstddef>
namespace hoge {
template<class _E>
class initializer_list {
private: // 割愛
public:
typedef _E value_type;
typedef const _E& reference;
typedef const _E& const_reference;
typedef size_t size_type;
typedef const _E* iterator;
typedef const _E* const_iterator;
constexpr initializer_list() noexcept;
constexpr size_type size() const noexcept;
constexpr const_iterator begin() const noexcept;
constexpr const_iterator end() const noexcept;
};
}
int main () {
std::initializer_list <int> il0 = {10, 100, 1000};
hoge::initializer_list <int> il1 = {10, 100, 1000}; // <- コンパイルエラー
return 0;
}
エラーメッセージは
error: could not convert ‘{10, 100, 1000}’from ‘<brace-enclosed initializer list>’ to ‘hoge::initializer_list<int>’
このクラスって他のクラスと異なりコンパイラによって特別な解釈をされるのでしょうか?
以下のhoge::initializer_listはstdからコピペしてpublicメンバ以外を除外したものです
hoge::initializer_listを実体化するとコンパイルエラーとなります
コンパイラは g++ (Debian 10.2.1-6) 10.2.1 20210110 です
#include <initializer_list>
#include <cstddef>
namespace hoge {
template<class _E>
class initializer_list {
private: // 割愛
public:
typedef _E value_type;
typedef const _E& reference;
typedef const _E& const_reference;
typedef size_t size_type;
typedef const _E* iterator;
typedef const _E* const_iterator;
constexpr initializer_list() noexcept;
constexpr size_type size() const noexcept;
constexpr const_iterator begin() const noexcept;
constexpr const_iterator end() const noexcept;
};
}
int main () {
std::initializer_list <int> il0 = {10, 100, 1000};
hoge::initializer_list <int> il1 = {10, 100, 1000}; // <- コンパイルエラー
return 0;
}
エラーメッセージは
error: could not convert ‘{10, 100, 1000}’from ‘<brace-enclosed initializer list>’ to ‘hoge::initializer_list<int>’
904デフォルトの名無しさん (ワッチョイ 1701-o+T5)
2023/04/30(日) 11:09:10.55ID:W+TV1tj50 エラーメッセージから考えると
1. { ..., ..., ..., }はstd::initializer_listと解釈される
2. std::initializer_listをhoge::initializer_listに変換しようとしてエラー
ということだと予想しますが
上記の1がstd::initializer_listを特殊なクラスとしている言語仕様と考えれば良い?
1. { ..., ..., ..., }はstd::initializer_listと解釈される
2. std::initializer_listをhoge::initializer_listに変換しようとしてエラー
ということだと予想しますが
上記の1がstd::initializer_listを特殊なクラスとしている言語仕様と考えれば良い?
905デフォルトの名無しさん (ワッチョイ b7f4-Z8yw)
2023/04/30(日) 11:20:07.93ID:bMmQu4ho0 >>903
constexpr initializer_list(std::initializer_list<_E> const&) noexcept { }
これを追加すると通る
コンパイラは { } で std::initializer_list を生じる、という意味で「特別な解釈」をする
似たような話で typeid() で std::type_info を生じるのと同様
constexpr initializer_list(std::initializer_list<_E> const&) noexcept { }
これを追加すると通る
コンパイラは { } で std::initializer_list を生じる、という意味で「特別な解釈」をする
似たような話で typeid() で std::type_info を生じるのと同様
906デフォルトの名無しさん (ワッチョイ 57da-nKsc)
2023/04/30(日) 11:20:11.94ID:orzgKU680 継承も何もしてないのにhoge::で上手く行くワケないだろ
907デフォルトの名無しさん (ワッチョイ 57da-nKsc)
2023/04/30(日) 11:25:59.75ID:orzgKU680 せめて>>985みたいにstd::initializer_listを何かしらの形で受け入れ口としてコンストラクタに実装してやらないと通らないだろ
908デフォルトの名無しさん (ワッチョイ b77c-0tm6)
2023/04/30(日) 11:31:13.64ID:9Izkr3hY0 一般にstd名前空間のものは全部言語仕様と一体のものとしてあらゆる特別扱いが許されてるので
ヘッダからコピペして作った自作クラスが標準と同じように振る舞ってくれない可能性は常にある
ヘッダからコピペして作った自作クラスが標準と同じように振る舞ってくれない可能性は常にある
909デフォルトの名無しさん (ワッチョイ 1701-o+T5)
2023/04/30(日) 11:36:13.87ID:W+TV1tj50910デフォルトの名無しさん (ワッチョイ 375f-k3Rv)
2023/04/30(日) 11:38:03.98ID:cNEEfLAb0 初期化リストは式ではない
911デフォルトの名無しさん (JP 0H6b-zzYQ)
2023/04/30(日) 18:30:04.58ID:KfqDu01oH 低レベルな質問ですが、よろしくお願いします
char str[10] = {0};
char str[10] = {0,};
この二つって違うんですか?
char str[10] = {0};
char str[10] = {0,};
この二つって違うんですか?
912デフォルトの名無しさん (ワッチョイ fff2-XHS2)
2023/04/30(日) 18:59:49.81ID:F7/GeCtB0 >>911
下は0,0と同じ意味じゃないかな
下は0,0と同じ意味じゃないかな
913デフォルトの名無しさん (ワッチョイ 57f0-7ciQ)
2023/04/30(日) 19:05:00.57ID:3Dh4f3TB0 どっちも10個とも0になる
914デフォルトの名無しさん (ワッチョイ 57da-nKsc)
2023/04/30(日) 19:21:03.63ID:orzgKU680 最後のカンマの次に項目を書かなくてもエラーにならなくなった名残だな
915はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f3e-By2c)
2023/04/30(日) 19:25:11.20ID:AIS6Ui5R0 >>911
最後のカンマに文法上の機能はなく、単に余計なカンマを許容するだけ。
どちらも 0 がひとつ与えられる初期化子であるという扱いになる。
コードジェネレータで生成するときに余計なカンマを許容したほうが便利だからそうなってる。
初期化子の数が配列の大きさに足りない場合は >>913 の解説の通り 0 が補われるので10個の要素全部がゼロになる。
なので全部をゼロにしたいときは char str[10] = {}; というように書いてもよい。
(新しい規格では改定されているが) C では波括弧の中に 1 個以上の値を必要としたので
それに合わせて必ずひとつは 0 を書くというスタイルで書く人もいる。
最後のカンマに文法上の機能はなく、単に余計なカンマを許容するだけ。
どちらも 0 がひとつ与えられる初期化子であるという扱いになる。
コードジェネレータで生成するときに余計なカンマを許容したほうが便利だからそうなってる。
初期化子の数が配列の大きさに足りない場合は >>913 の解説の通り 0 が補われるので10個の要素全部がゼロになる。
なので全部をゼロにしたいときは char str[10] = {}; というように書いてもよい。
(新しい規格では改定されているが) C では波括弧の中に 1 個以上の値を必要としたので
それに合わせて必ずひとつは 0 を書くというスタイルで書く人もいる。
916デフォルトの名無しさん (JP 0H6b-zzYQ)
2023/04/30(日) 19:26:34.51ID:KfqDu01oH 丁寧な解説ありがとうございました。
どちらとも10個ともに0になるんですね
どちらとも10個ともに0になるんですね
917デフォルトの名無しさん (ワッチョイ bf9a-2+ec)
2023/05/01(月) 10:47:39.75ID:X35rXuLL0 STLにある、k番目の要素を見つけるnth_element()は計算量がO(n)だそうですが、
これの中身が何をやっているかの日本語の(できるだけむずかしくない)解説ってどこかに
ありますかね?
これの中身が何をやっているかの日本語の(できるだけむずかしくない)解説ってどこかに
ありますかね?
918デフォルトの名無しさん (ワッチョイ ffd6-HoNx)
2023/05/01(月) 11:27:54.04ID:6GFefuEp0 選択アルゴリズムとかクイックセレクトでググれ
919デフォルトの名無しさん (ワッチョイ 1701-o+T5)
2023/05/01(月) 12:10:58.53ID:58qbKD3W0 GPT-4の説明が分かりやすかった
std::nth_elementの説明として正しいかは分からんが
うまく動きそうではある
GPT-4に知らないことを聞くのはかなり危険だなぁ...
std::nth_elementの説明として正しいかは分からんが
うまく動きそうではある
GPT-4に知らないことを聞くのはかなり危険だなぁ...
920青木康善 (アウアウウー Sa1b-zK5j)
2023/05/03(水) 13:17:48.41ID:BsTGSOzGa Javaより断然速いんでしょプラプラは。
921デフォルトの名無しさん (アウアウウー Sa1b-ywfW)
2023/05/03(水) 13:57:16.79ID:0S5RwOvCa チンチンプラプラ
922デフォルトの名無しさん (ワッチョイ b7f4-Z8yw)
2023/05/04(木) 05:42:07.54ID:uUOiJSNY0923デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/04(木) 07:42:34.11ID:/cLVFXSd0 状況によってはJavaのほうが速いこともあるね
924デフォルトの名無しさん (ワッチョイ ffa7-By2c)
2023/05/05(金) 11:15:11.08ID:Y+XZO+i30 サブルーチン単位で見たらJavaやC#の方が早いこともあるけどそれはC++側のコードが糞なときだからな
マネージド言語はループ回すにしても強制的に一々長さチェック入ったりするので本気出したC++にはいずれにせよ敵わない
マネージド言語はループ回すにしても強制的に一々長さチェック入ったりするので本気出したC++にはいずれにせよ敵わない
925デフォルトの名無しさん (スプッッ Sd3f-wQ6u)
2023/05/05(金) 11:37:06.46ID:ByZ/Uyt6d 昔、JavaでもC++同等性能出せます(ただしメモリ使用量は10倍)
みたいなネット記事を見たのを思い出したわ
みたいなネット記事を見たのを思い出したわ
926デフォルトの名無しさん (オイコラミネオ MM6b-fitb)
2023/05/05(金) 11:57:14.32ID:tbrjl4OGM そんなの実際はほぼないだろ
ありうるとしたらC++のコードは最適化がかからないでC#は最適化掛かってsimd使ってましたとかじゃないのか?
ありうるとしたらC++のコードは最適化がかからないでC#は最適化掛かってsimd使ってましたとかじゃないのか?
927はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-By2c)
2023/05/05(金) 12:23:29.18ID:6VYfhEYJ0 メモリの管理やチェックもしてくれた上で条件によっては C++ を超えることもあるってくらいなら充分以上に速くはあるけどな。
928デフォルトの名無しさん (ワッチョイ ffa7-By2c)
2023/05/05(金) 12:44:08.47ID:Y+XZO+i30 >>926
C#の場合はコードジェネレーターが発達してきてるからC++はprintfで動的フォーマット、C#はprintfをジェネレーターで静的展開みたいなパターンで後者の方が早いという事があり得る
jsonのパースやシリアライズとか特に
C#の場合はコードジェネレーターが発達してきてるからC++はprintfで動的フォーマット、C#はprintfをジェネレーターで静的展開みたいなパターンで後者の方が早いという事があり得る
jsonのパースやシリアライズとか特に
929デフォルトの名無しさん (ワッチョイ b7da-nKsc)
2023/05/05(金) 13:09:57.48ID:xFd6jGVP0 そこら辺は自作すればどうとでもなる
930デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 14:28:48.55ID:Ds39Rblr0 x86ターゲットでビルドしたC/C++プログラムをARMでx86エミュレーション実行すると遅い
Java/.NETは中間コードだからランタイムさえARM版になっていれば性能が出せるね
Java/.NETは中間コードだからランタイムさえARM版になっていれば性能が出せるね
931デフォルトの名無しさん (ワッチョイ 1701-o+T5)
2023/05/05(金) 15:39:52.77ID:kHrmJumu0 それはエミュレータの性能では?
932デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 15:46:51.10ID:Ds39Rblr0 C/C++はコンパイル時に命令が決まるから中間コードよりビルド済バイナリの長期運用では不利になるよね
ソースコードからリビルドできる環境があれば問題ないんだけどさ
ソースコードからリビルドできる環境があれば問題ないんだけどさ
933デフォルトの名無しさん (ワッチョイ d73a-jFBQ)
2023/05/05(金) 15:52:51.36ID:VDYHFDsH0 ARMをリビルト出来ない環境とは?
934デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 15:55:40.50ID:Ds39Rblr0 環境なんて開発者それぞれでしょ
Macbook使ってるけどx86エミュレーションで動いてるアプリがいくつかあるんだよ
開発者さんがまだM1/M2を持ってなくてARMビルドがリリースできてないんだと思う(もしくは飽きて開発放棄してるのか)
Macbook使ってるけどx86エミュレーションで動いてるアプリがいくつかあるんだよ
開発者さんがまだM1/M2を持ってなくてARMビルドがリリースできてないんだと思う(もしくは飽きて開発放棄してるのか)
935デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 16:00:19.83ID:Ds39Rblr0 とにかく既存バイナリを異なるCPUアーキテクチャで動かす状況が現実にあるわけ
Macに限らずWindowsでもね
そのような状況では.NETアプリは軽快にどうさするのにC/C++アプリは遅いということになる
Macに限らずWindowsでもね
そのような状況では.NETアプリは軽快にどうさするのにC/C++アプリは遅いということになる
936デフォルトの名無しさん (ワッチョイ b7da-nKsc)
2023/05/05(金) 16:10:23.07ID:xFd6jGVP0 めちやくちゃだな
C++の開発環境にハンデ付けたらそうなるわ
C++の開発環境にハンデ付けたらそうなるわ
937デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 16:16:39.25ID:Ds39Rblr0 Javaや.NETの中間コードにしてCPU命令セットに依存させないアプローチはポータビリティだけでなくランタイムごとの最適化を可能にするメリットがあるの
これC/C++では無理でしょ
これC/C++では無理でしょ
938デフォルトの名無しさん (ワッチョイ d73a-jFBQ)
2023/05/05(金) 16:22:19.51ID:VDYHFDsH0 ランタイムが対応していない環境ではC++の勝ちだな
939デフォルトの名無しさん (ワッチョイ 3702-ITaW)
2023/05/05(金) 16:47:17.33ID:s0hcsFgN0 C++のスレで「ネイティブなバイナリはエミュレータ上で遅い」って主張して何の意味があるのか?
場違いなこと言ってないか少し考えような
場違いなこと言ってないか少し考えような
940デフォルトの名無しさん (オイコラミネオ MM6b-4Js7)
2023/05/05(金) 17:09:02.02ID:alqNdYA9M941デフォルトの名無しさん (ワッチョイ b77c-0tm6)
2023/05/05(金) 17:10:06.81ID:sSc+RF200 「C++は速い」って盲目的に信じてるキッズの目を覚ます意味がある
942デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 17:10:53.16ID:Ds39Rblr0 ターゲットを限定できる組み込み系開発ならともかく
一般消費者向けのアプリではC/C++が最速とは限らないという話だよ
一般消費者向けのアプリではC/C++が最速とは限らないという話だよ
943デフォルトの名無しさん (ワッチョイ b77c-0tm6)
2023/05/05(金) 17:15:38.26ID:sSc+RF200 仮想化やエミュレーションを何重にも重ねて実行するのが当たり前の現代的コンピューティングでは
「ネイティブで速い」なんて限定的な状況での一つの特長にすぎないんだよね
「ネイティブで速い」なんて限定的な状況での一つの特長にすぎないんだよね
944デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 17:20:08.41ID:Ds39Rblr0 >>940
マイクロソフトは異なるCPUアーキテクチャに挑戦し続けてきたよ
そもそもNTのマイクロカーネルアプローチは様々なCPUアーキテクチャに対応するためのものだった
Alpha、PowerPC、IA-64で動作するWindowsが過去には存在した
既存のx86バイナリを動かせなかったことから失敗してしまったけどね
今はARM Windowsに挑戦中
これはMac同様にx86エミュレーションで既存バイナリを動かせるようにしてる
アプリ開発者としてターゲット環境を1つに限定すると不利になっていく思うよ
マイクロソフトは異なるCPUアーキテクチャに挑戦し続けてきたよ
そもそもNTのマイクロカーネルアプローチは様々なCPUアーキテクチャに対応するためのものだった
Alpha、PowerPC、IA-64で動作するWindowsが過去には存在した
既存のx86バイナリを動かせなかったことから失敗してしまったけどね
今はARM Windowsに挑戦中
これはMac同様にx86エミュレーションで既存バイナリを動かせるようにしてる
アプリ開発者としてターゲット環境を1つに限定すると不利になっていく思うよ
945デフォルトの名無しさん (ワッチョイ 1f4b-zzYQ)
2023/05/05(金) 17:27:05.17ID:CaQRnUAH0 >>942
C言語はUnixをマルチターゲットで実現するするために作られた言語である件について:
プログラム作成にいくら手間がかかっても良いという話なら
#ifdef / #else / #endifの山でマルチターゲットに配慮しつつ高級アセンブラ的に使用したときのC言語が
中間言語実行または中間言語からのJITで巻けるシチュがわからん
説明できるんならkwsk、
C言語はUnixをマルチターゲットで実現するするために作られた言語である件について:
プログラム作成にいくら手間がかかっても良いという話なら
#ifdef / #else / #endifの山でマルチターゲットに配慮しつつ高級アセンブラ的に使用したときのC言語が
中間言語実行または中間言語からのJITで巻けるシチュがわからん
説明できるんならkwsk、
946デフォルトの名無しさん (ワッチョイ 1f4b-zzYQ)
2023/05/05(金) 17:31:37.61ID:CaQRnUAH0 そうではなくてプログラム作成の手間も込みの話なら
特定の応用においてErlangがC言語に勝った話は有名な話
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=12&file_id=1&file_no=1
やが、C言語で書かれたオープンなErlangのVMでそのパフォーマンスをたたき出した場合、
何の言語が勝ったことになるんじゃ……
特定の応用においてErlangがC言語に勝った話は有名な話
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&item_id=12&file_id=1&file_no=1
やが、C言語で書かれたオープンなErlangのVMでそのパフォーマンスをたたき出した場合、
何の言語が勝ったことになるんじゃ……
947デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 17:33:05.29ID:Ds39Rblr0 >>945
それは既に説明したよ
C/C++が想定したターゲットに対して最適なバイナリを出力できるのは事実
でも既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ
実際にM1/M2 MacやARM Windowsでそういう状況が生まれてる
それは既に説明したよ
C/C++が想定したターゲットに対して最適なバイナリを出力できるのは事実
でも既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ
実際にM1/M2 MacやARM Windowsでそういう状況が生まれてる
948デフォルトの名無しさん (ワッチョイ 1f4b-zzYQ)
2023/05/05(金) 17:38:21.35ID:CaQRnUAH0 >>947
>C/C++が想定したターゲットに対して最適なバイナリを出力できるのは事実
>でも既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ
話が矛盾している
既存のVM(これも既存バイナリのうち)がなんで常に最適な速度を出せることになるんdai?
>C/C++が想定したターゲットに対して最適なバイナリを出力できるのは事実
>でも既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ
話が矛盾している
既存のVM(これも既存バイナリのうち)がなんで常に最適な速度を出せることになるんdai?
949デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 17:43:37.99ID:Ds39Rblr0 >>948
個々のアプリをリビルドせずにVMだけリビルドすれば済むからエコシステムを維持しやすいの
たしかM1 Macが出てから半年も経たずにARM版JavaVMが登場したと思う
JavaアプリはIntel MacでもM1 Macでも同等の性能が出る
ネイティブアプリは各開発者がARMビルドをリリースするのを待たなければならなかった(まだIntel版しか存在しないアプリも多い)
個々のアプリをリビルドせずにVMだけリビルドすれば済むからエコシステムを維持しやすいの
たしかM1 Macが出てから半年も経たずにARM版JavaVMが登場したと思う
JavaアプリはIntel MacでもM1 Macでも同等の性能が出る
ネイティブアプリは各開発者がARMビルドをリリースするのを待たなければならなかった(まだIntel版しか存在しないアプリも多い)
950デフォルトの名無しさん (ワッチョイ 1f4b-zzYQ)
2023/05/05(金) 17:53:15.49ID:CaQRnUAH0 >>949
>個々のアプリをリビルドせずにVMだけリビルドすれば済むからエコシステムを維持しやすいの
>たしかM1 Macが出てから半年も経たずにARM版JavaVMが登場したと思う
>JavaアプリはIntel MacでもM1 Macでも同等の性能が出る
>ネイティブアプリは各開発者がARMビルドをリリースするのを待たなければならなかった(まだIntel版しか存在しないアプリも多い)
そのネイティブアプリとは一体……
およびそんな特定のケースを言語の優劣の一般論として展開してよい根拠とは一体……
および>>946はどうなるんじゃ……
さらに言うと、VMの改修による新規プラットフォームのトータルサポートが、特定の応用で#ifdef/#else/#endifを何個か追加して
ソースからビルドするより常に早いとする根拠は一体……
>個々のアプリをリビルドせずにVMだけリビルドすれば済むからエコシステムを維持しやすいの
>たしかM1 Macが出てから半年も経たずにARM版JavaVMが登場したと思う
>JavaアプリはIntel MacでもM1 Macでも同等の性能が出る
>ネイティブアプリは各開発者がARMビルドをリリースするのを待たなければならなかった(まだIntel版しか存在しないアプリも多い)
そのネイティブアプリとは一体……
およびそんな特定のケースを言語の優劣の一般論として展開してよい根拠とは一体……
および>>946はどうなるんじゃ……
さらに言うと、VMの改修による新規プラットフォームのトータルサポートが、特定の応用で#ifdef/#else/#endifを何個か追加して
ソースからビルドするより常に早いとする根拠は一体……
951デフォルトの名無しさん (ワッチョイ b79c-+Iiy)
2023/05/05(金) 18:01:52.41ID:Ds39Rblr0 ごめんね
話が噛み合わないようだからこれで最後にする
一般論として言語の優劣を語ってるつもりはないです
ソースコードからのリビルドよりVMが速いとは言ってないです
開発者の事情でリビルドされない既存バイナリで性能が出ない状況が実際にあると言ってるだけです
話が噛み合わないようだからこれで最後にする
一般論として言語の優劣を語ってるつもりはないです
ソースコードからのリビルドよりVMが速いとは言ってないです
開発者の事情でリビルドされない既存バイナリで性能が出ない状況が実際にあると言ってるだけです
952デフォルトの名無しさん (オイコラミネオ MM6b-fitb)
2023/05/05(金) 18:11:56.10ID:tbrjl4OGM さっきも書いたけど常にc++の最適化が他の仕組みに勝つとは限らないから
他の言語でsimd化されてc++でsimd化されない場合もあるだろうと
他の言語でsimd化されてc++でsimd化されない場合もあるだろうと
953デフォルトの名無しさん (アウアウウー Sa1b-iyid)
2023/05/05(金) 18:18:32.71ID:gmBJZ0Nwa データベースでは長期運用でデータ数が変わるから、
統計情報を参考にして、使われるアルゴリズムも変わる
特に、IBM では全自動のみ。
自分で、使うアルゴリズムを指定できない
統計情報を参考にして、使われるアルゴリズムも変わる
特に、IBM では全自動のみ。
自分で、使うアルゴリズムを指定できない
954デフォルトの名無しさん (ワッチョイ 5701-wHlW)
2023/05/05(金) 18:19:38.90ID:ugKRRbai0 C++はメモリーのフラグメンテーションを解消できないからJavaより遅いというエンジニアの意見は有名だと思う
955デフォルトの名無しさん (ワッチョイ d73a-jFBQ)
2023/05/05(金) 20:13:04.57ID:VDYHFDsH0 データベースでは独自のガベージコレクションくらい実装している
956デフォルトの名無しさん (ワッチョイ 9fad-fitb)
2023/05/05(金) 21:20:11.75ID:WL3Heqk40 Java仮想マシンとARM向けx64仮想マシンの比較ですか
957デフォルトの名無しさん (オイコラミネオ MM0f-AgQJ)
2023/05/06(土) 03:05:01.42ID:eTXbn+faM958デフォルトの名無しさん (オイコラミネオ MM0f-AgQJ)
2023/05/06(土) 03:08:16.87ID:eTXbn+faM キャッシュの乱れによる速度低下を防ぎたいなら:
・ソートは本当に必要な場合だけ行なう。
・ソートする場合でも、要素数が少なければ特に問題ない。
すべてがキャッシュに載ってしまえば、キャッシュミスが起きないから。
・そもそも物理シミュレーターではソートは必要ないことが多い。
なぜなら自然の物理法則はソートの概念を用いていないから。
・レイトレーシングなども物理法則に基くので、基本的にソートを
余り使わないでよいアルゴリズムを作ることが出来る。
・ソートは本当に必要な場合だけ行なう。
・ソートする場合でも、要素数が少なければ特に問題ない。
すべてがキャッシュに載ってしまえば、キャッシュミスが起きないから。
・そもそも物理シミュレーターではソートは必要ないことが多い。
なぜなら自然の物理法則はソートの概念を用いていないから。
・レイトレーシングなども物理法則に基くので、基本的にソートを
余り使わないでよいアルゴリズムを作ることが出来る。
959デフォルトの名無しさん (ワッチョイ c24b-y4C+)
2023/05/06(土) 03:48:50.75ID:H05Eo8AC0 >開発者の事情でリビルドされない既存バイナリで性能が出ない状況が実際にあると言ってるだけです
そういう話ならそういう話で、
>既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ(>>947
と言ったときに、何と何の比較なのか(何なら「最適な」速度なのか)というレギュレーションを先に示して……
ソースコードからリビルドするだけで元より速くなるケースが本当にあるなら、そういうケースの提示をすっとばして
Javaや.NETの中間コードにしてCPU命令セットに依存させないアプローチの話なんてしないで……
一般的な速度比較ではなくて、他の言語でsimd化されてc++でsimd化されない場合の速度比較ならその話だけして……
アスペにill-definedなビミョーなネタ振りをしないで……
そういう話ならそういう話で、
>既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ(>>947
と言ったときに、何と何の比較なのか(何なら「最適な」速度なのか)というレギュレーションを先に示して……
ソースコードからリビルドするだけで元より速くなるケースが本当にあるなら、そういうケースの提示をすっとばして
Javaや.NETの中間コードにしてCPU命令セットに依存させないアプローチの話なんてしないで……
一般的な速度比較ではなくて、他の言語でsimd化されてc++でsimd化されない場合の速度比較ならその話だけして……
アスペにill-definedなビミョーなネタ振りをしないで……
960デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/06(土) 03:54:48.32ID:cJf94Ar10 いや俺3行以上は読まないから
961デフォルトの名無しさん (ワッチョイ c24b-y4C+)
2023/05/06(土) 03:55:54.11ID:H05Eo8AC0 補足、
>既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ(>>947
と言ったときに、最適な速度をたたき出すブツが発言者の脳内にしか無いのだとしたら
そんなの単なるお気持ちの表明やんけ……
自分は最初から正しい論理展開をしていたみたいな顔するのはやめて……
>既存バイナリの長期運用では最適な速度を出せない状況に遭遇することがあるんだ(>>947
と言ったときに、最適な速度をたたき出すブツが発言者の脳内にしか無いのだとしたら
そんなの単なるお気持ちの表明やんけ……
自分は最初から正しい論理展開をしていたみたいな顔するのはやめて……
962デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/06(土) 03:57:28.42ID:cJf94Ar10 あと2行削れば読んでやるよ
963デフォルトの名無しさん (スッップ Sd32-Itme)
2023/05/06(土) 07:33:39.33ID:ZJYG9vPbd それも度が過ぎとるな
964デフォルトの名無しさん (ブーイモ MM0e-wpjJ)
2023/05/06(土) 08:23:03.54ID:1oIUqUCFM >>961
はじめから「中間コード」と「ビルド済バイナリの長期運用」って書いてあるぞ?
はじめから「中間コード」と「ビルド済バイナリの長期運用」って書いてあるぞ?
965デフォルトの名無しさん (ブーイモ MM0e-wpjJ)
2023/05/06(土) 08:31:13.11ID:1oIUqUCFM 俺は産業用システムのフロントエンドUIをC#で組むことが多いんだが、とあるデバイスの制御APIがネイティブDLL(.NETアセンブリではない)で提供されていたんだ
そのデバイスメーカーはなぜか32ビット版のDLLしか提供してくれなかった
それでC#プログラムも32ビット版.NETランタイムで動かさなきゃならなくなった
C++が速いとかどうでもいいけどさ、せめて64ビットビルドできるようになってから言ってくれないかな?
そのデバイスメーカーはなぜか32ビット版のDLLしか提供してくれなかった
それでC#プログラムも32ビット版.NETランタイムで動かさなきゃならなくなった
C++が速いとかどうでもいいけどさ、せめて64ビットビルドできるようになってから言ってくれないかな?
966デフォルトの名無しさん (ワッチョイ 12ad-OJpS)
2023/05/06(土) 09:34:57.34ID:UeJlmTL80 C++が速いとか関係なく、そのデバイスメーカーに言え
967デフォルトの名無しさん (オイコラミネオ MM0f-itXZ)
2023/05/06(土) 09:50:15.65ID:ZqhRZXgdM 64ビット版.NETランタイムから32ビットDLL使う方法あるでしょ
NeeViewがそういうことしてる
NeeViewがそういうことしてる
968デフォルトの名無しさん (オイコラミネオ MM0f-KeI6)
2023/05/06(土) 10:15:28.65ID:SIOBPdzxM 最近のc++プログラマってプロセス間通信も知らないの?
969デフォルトの名無しさん (ワッチョイ ff61-iOH5)
2023/05/06(土) 11:51:45.90ID:P9lpeDx50 NeeViewもSusieプラグイン用の32bitプロセス起動してプロセス間通信してるだけやで
970デフォルトの名無しさん (ワッチョイ 3302-Gqxk)
2023/05/06(土) 12:09:15.03ID:avN3CO0q0 もうC++の話しじゃねーじゃん
971デフォルトの名無しさん (ワッチョイ 335f-LLT0)
2023/05/06(土) 14:00:34.30ID:O4KUwdol0 比較と称して対立煽りすればスレの勢いが伸びる
ただし意味のある議論はほぼ発生しない
技術板にアイデンティティを勝手に感じている技術力ゼロの雑魚だけがこういう話を振り、乗っかる
ただし意味のある議論はほぼ発生しない
技術板にアイデンティティを勝手に感じている技術力ゼロの雑魚だけがこういう話を振り、乗っかる
972デフォルトの名無しさん (スッップ Sd32-svlT)
2023/05/06(土) 16:35:41.29ID:OFKQ7dHId ない環境の仕事が長くなってさわりしか覚えてないな
973デフォルトの名無しさん (ワッチョイ 7228-nMxP)
2023/05/07(日) 12:16:32.15ID:ExrtxK200974デフォルトの名無しさん (ワッチョイ 639c-wpjJ)
2023/05/07(日) 13:31:09.45ID:Hp3D+to80 同じアプリである必要あるか?
975デフォルトの名無しさん (ワッチョイ 7228-nMxP)
2023/05/07(日) 18:18:18.80ID:ExrtxK200 >同じアプリである必要あるか?
ある
「中間コード」と「ビルド済バイナリの長期運用」の速度を比較しようとしているのだから、
それらの違い以外は同じに保たねば正しい比較にならない
ある
「中間コード」と「ビルド済バイナリの長期運用」の速度を比較しようとしているのだから、
それらの違い以外は同じに保たねば正しい比較にならない
976デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/07(日) 18:20:17.74ID:+pQ1lZnP0 0xの頃のように混とんとしてきたが、あの頃の熱さはないな
977デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/07(日) 18:21:16.14ID:+pQ1lZnP0 C++20で飯の三杯くらいは食えると思うが
978デフォルトの名無しさん (ワッチョイ af90-LdDt)
2023/05/08(月) 12:43:08.47ID:pyo/bzDB0 昔Windows上でJavaがエラー吐いたとき
VCのエラーを出力してたから
裏ではC++使ってるんだろ
つまりJavaもC++のパワー借りてんだから
C++のほうが速いって話にならない?
VCのエラーを出力してたから
裏ではC++使ってるんだろ
つまりJavaもC++のパワー借りてんだから
C++のほうが速いって話にならない?
980デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/08(月) 18:41:34.65ID:A57Tkf070 C++はエンジン、Javaはターボという関係では?
981デフォルトの名無しさん (ワッチョイ fff0-HLMt)
2023/05/08(月) 20:29:15.27ID:COjnYNf80 JavaってAVXとかNEONとか使えるの?
982デフォルトの名無しさん (ワッチョイ 639c-wpjJ)
2023/05/08(月) 21:28:12.53ID:DEBLNIPs0 JavaでもAVX等の拡張命令は使われるみたいよ
https://www.slideshare.net/nttdata-tech/java-maximize-cpu-2019-nttdata-suenaga
https://www.slideshare.net/nttdata-tech/java-maximize-cpu-2019-nttdata-suenaga
983デフォルトの名無しさん (ワッチョイ fff0-HLMt)
2023/05/09(火) 01:01:11.52ID:y3l/xMzR0 命令を記述出来るかってこと
AVXやNEONはコンパイラじゃ性能出ない
AVXやNEONはコンパイラじゃ性能出ない
984デフォルトの名無しさん (ワッチョイ 639c-wpjJ)
2023/05/09(火) 01:14:10.24ID:A/U8BALn0 あー 自分で書きたいのか
Javaの場合はJEP417 Vector APIでAVX命令を扱えるよ
Javaの場合はJEP417 Vector APIでAVX命令を扱えるよ
985デフォルトの名無しさん (スプッッ Sd52-Itme)
2023/05/09(火) 07:03:13.01ID:1INpcxJUd つstd::valarray
986デフォルトの名無しさん (ワッチョイ fff0-HLMt)
2023/05/09(火) 07:36:45.97ID:y3l/xMzR0987デフォルトの名無しさん (ワッチョイ 639c-wpjJ)
2023/05/09(火) 09:28:23.14ID:A/U8BALn0 ???
JavaのVector APIはSIMDを扱うために新たに策定されたもの
C++の動的配列std::vectorとはまったくの別物よ?
JavaのVector APIはSIMDを扱うために新たに策定されたもの
C++の動的配列std::vectorとはまったくの別物よ?
988デフォルトの名無しさん (スッププ Sd32-HLMt)
2023/05/09(火) 12:20:03.88ID:Ac7S+28Ld ごく一部の命令をごく一部の処理で使えたってダメだよ
1000個以上も命令あるんだし
コンパイラが使いこなせなそうな命令の具体例を上げてるのに
CやC++ならいろんな方法で使えるわけで
・ライブラリ経由
・Intrinsics
・インラインアセンブラ
・アセンブラ
1000個以上も命令あるんだし
コンパイラが使いこなせなそうな命令の具体例を上げてるのに
CやC++ならいろんな方法で使えるわけで
・ライブラリ経由
・Intrinsics
・インラインアセンブラ
・アセンブラ
989デフォルトの名無しさん (ワッチョイ 335f-nt/6)
2023/05/09(火) 12:24:30.62ID:oJhOeTc40 また無意味な比較合戦が始まった
990デフォルトの名無しさん (ワッチョイ df01-ouLR)
2023/05/10(水) 05:01:02.91ID:w0EnrJsq0 >>986
Javaはかなり速いのでは?
Javaはかなり速いのでは?
991デフォルトの名無しさん (ワッチョイ af90-LdDt)
2023/05/10(水) 10:09:03.15ID:ZeVzc+se0 意味の無い比較じゃなくて
目的に対して適切な言語を使うのが大事だよな
ところでrustはc++より速いの?
目的に対して適切な言語を使うのが大事だよな
ところでrustはc++より速いの?
992デフォルトの名無しさん (スプッッ Sd52-8wHc)
2023/05/10(水) 10:20:22.13ID:EQN2Q+xhd 速いけど早くない
あとつらい
あとつらい
993はちみつ餃子 ◆8X2XSCHEME (ワッチョイ de3e-tcUg)
2023/05/10(水) 10:43:52.47ID:Fy7GG/DG0994デフォルトの名無しさん (スプッッ Sd52-Itme)
2023/05/10(水) 16:25:34.12ID:/njob5Qxd 処理系定義や未規定を未定義と誤認するやつ
理由がコンパイラに警告されたからとか
笑っちまうよな
理由がコンパイラに警告されたからとか
笑っちまうよな
995デフォルトの名無しさん (オイコラミネオ MM0f-KeI6)
2023/05/12(金) 00:22:08.92ID:AXk6Vn1nM 未定義踏みぬくなんて高度なことをやってるんだなと書きながら
単純化すると
cout < i++ < i++ < i++;
みたいなコードを書いている
単純化すると
cout < i++ < i++ < i++;
みたいなコードを書いている
996デフォルトの名無しさん (オイコラミネオ MM0f-KeI6)
2023/05/12(金) 00:35:46.20ID:AXk6Vn1nM うーん酔ってるな
<< << <<
おわかりいただけだろうか?
<< << <<
おわかりいただけだろうか?
997デフォルトの名無しさん (オイコラミネオ MM0f-itXZ)
2023/05/12(金) 12:44:21.56ID:AudFgWb9M C++相談室 part164
http://mevius.5ch.net/test/read.cgi/tech/1683600652/
http://mevius.5ch.net/test/read.cgi/tech/1683600652/
998デフォルトの名無しさん (ワッチョイ 3302-Gqxk)
2023/05/12(金) 18:01:57.78ID:6OZpLVgk0 >>997
甲
甲
999デフォルトの名無しさん (ワッチョイ 3302-Gqxk)
2023/05/12(金) 18:02:15.57ID:6OZpLVgk0 乙
1000デフォルトの名無しさん (ワッチョイ eb4e-O5MS)
2023/05/12(金) 18:03:13.12ID:8/ssS+jd0 質問いいですか?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 132日 18時間 46分 42秒
新しいスレッドを立ててください。
life time: 132日 18時間 46分 42秒
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を超えています。これ以上書き込みはできません。
ニュース
- インド軍が係争地のパキスタン側に攻撃 26人犠牲テロへの報復 [七波羅探題★]
- 【文春】《記事予告》国民的女優&人気俳優 不倫スクープ第2弾 ★5 [Ailuropoda melanoleuca★]
- アイヌに対する差別偏見“見聞きしたことある”回答の1割 政府 [香味焙煎★]
- 【サッカー】UEFA-CL準決勝第2戦 インテル×バルセロナ [久太郎★]
- 若年層も注意「人や物の名前が出てこない」もしかしたらスマホ認知症かも…原因は「スマホの使い過ぎ」 [七波羅探題★]
- 日テレ「マジカル頭脳パワー!!」「THE夜もヒッパレ」「天声慎吾」「歌の大辞テン」など装い新たに蘇る [ひかり★]
- 【動画】日本さん、ゾンビが発生したら銃がないので確実に詰むことが証明されてしまう これ銃ないと絶対無理だろ、、、 [689851879]
- 「45歳だけど、大学に行って勉強し直そうと思う」 なぜかこれが日本だと笑われる件。おかしくないか?この国 [377388547]
- 最後にお風呂入ったのいつ?
- ダブパンマン出禁の🏡
- 【正論】玉木雄一郎「テスラやBYDのEVからはガソリン税を取れない😤暫定税率は廃止するべき😤」 [519511584]
- マチュ「キラキラだぁ」「シュウジ♥」「ニャァン💢」👈逆にこいつに共感できるやついるの? [606757419]