!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
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bbda-Axul)
2022/12/30(金) 23:16:31.37ID:DPUEZfMS0622デフォルトの名無しさん (ワッチョイ 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でどうにかならんかね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本の立場説明へ…外務省局長が北京到着 “台湾有事”首相答弁に中国反発 ★3 [煮卵★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★2 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も [1ゲットロボ★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★2 [1ゲットロボ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 【悲報】女性初の総理大臣 高市早苗氏、安倍晋三さんが積み上げてきたものを一瞬でぶっ壊してしまう😱wwwwwwwwwwwwwwwwwwwwww [871926377]
- トランプ聖帝「中国を倒すのではなく協力することでアメリカは強くなる!MAGA!」 高市どうすんのこれ… [878970802]
- 愛国者ナザレンコ「左翼は自己中な差別主義者で偽善者。日本人ファーストを叩いておいて台湾人が死んでも知らな〜いでしょ。中露の犬」 [856698234]
- 【高市悲報】お米券、予算効率が極悪!額面440円を500円で取得。1割以上手数料。これに事務費かけたらムダばかり。マイナ口座で良いだろ [219241683]
- 【悲報】有名ウヨ論客、「現実的に考えて中国と仲直りするしかなくね?」と言ったら野良ウヨから総叩きにあう [856698234]
- 【高市悲報】経団連会長、高市と面談「おい!ちゃんと中国と対話しろよ!😨」 [359965264]
