探検
0からの、超初心者C++相談室
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2018/11/12(月) 14:55:13.35ID:Tf74ZWQr 何にも知らない0からの出発、超初心者のためのC++相談室
989はちみつ餃子 ◆8X2XSCHEME
2025/04/28(月) 12:35:00.60ID:clGXfLYj >>986
簡潔な回答としては「できない」ということになる。
関数ひとつで終わるような簡単なコールバックならラムダ式で渡せるように設計する。
もう少し複雑なものになると……式の中に定義を書けるのは見通しが悪いし、出来てしまう Java のほうが良くなさそう。
別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。
質問の本筋ではないが気になる点として、
new で生成したものはどこかで delete しなきゃならないからそのコードだけから判断できる範囲ではなんだか筋が悪そうに見える。
つまりそもそも new する意味がないんじゃない? と思う。
簡潔な回答としては「できない」ということになる。
関数ひとつで終わるような簡単なコールバックならラムダ式で渡せるように設計する。
もう少し複雑なものになると……式の中に定義を書けるのは見通しが悪いし、出来てしまう Java のほうが良くなさそう。
別の場所 (といっても直前で良いけれど) で定義すれば何も困らないよ。
質問の本筋ではないが気になる点として、
new で生成したものはどこかで delete しなきゃならないからそのコードだけから判断できる範囲ではなんだか筋が悪そうに見える。
つまりそもそも new する意味がないんじゃない? と思う。
990デフォルトの名無しさん
2025/04/28(月) 13:12:28.38ID:PR6E6U1X991デフォルトの名無しさん
2025/05/02(金) 09:24:43.58ID:k5bGwZZ0 size_t を返す hoge.count() みたいなのがあって
for(int i = hoge.count(); --i >= 0){...} と描くと
型が違うって怒られるのですが
for(int i = (int)hoge.count(); --i >= 0){...}
for(unsigned long i = (unsigned long)hoge.count(); --i >= 0){...}
for(size_t i = hoge.count(); --i >= 0){...}
どれが正解?
for(int i = hoge.count(); --i >= 0){...} と描くと
型が違うって怒られるのですが
for(int i = (int)hoge.count(); --i >= 0){...}
for(unsigned long i = (unsigned long)hoge.count(); --i >= 0){...}
for(size_t i = hoge.count(); --i >= 0){...}
どれが正解?
993はちみつ餃子 ◆8X2XSCHEME
2025/05/02(金) 11:40:02.44ID:n0wyIh3y >>991
for 文の括弧の中はセミコロンで区切られた三つの節を持つ形式である必要があるが、二つの節しかないのが根本的な間違い。
そんでそれを脇に置くとして、ループカウンタ i が unsigned であるときに --i >= 0 という式で判定しようとするのが間違い。
0 以下になることはありえないのだから判定の意味がない。 (無限ループを意図したのでない限りは。)
整数を別の整数型に型変換したときに型変換後の型で表現可能な範囲の値であるならば同じ数値のままであることは保証されて何も問題はない。
逆に言えば扱う値の範囲次第では違う数値に変わったり未定義になったりすることがある。
hoge.count() が返す型が size_t なら最後まで size_t で扱うのが基本的には好ましい。
値が取りうる範囲を把握しているなら問題を起こさない範囲で適切に型変換するのはプログラマの裁量による。
状況によって判断するしかない。
for 文の括弧の中はセミコロンで区切られた三つの節を持つ形式である必要があるが、二つの節しかないのが根本的な間違い。
そんでそれを脇に置くとして、ループカウンタ i が unsigned であるときに --i >= 0 という式で判定しようとするのが間違い。
0 以下になることはありえないのだから判定の意味がない。 (無限ループを意図したのでない限りは。)
整数を別の整数型に型変換したときに型変換後の型で表現可能な範囲の値であるならば同じ数値のままであることは保証されて何も問題はない。
逆に言えば扱う値の範囲次第では違う数値に変わったり未定義になったりすることがある。
hoge.count() が返す型が size_t なら最後まで size_t で扱うのが基本的には好ましい。
値が取りうる範囲を把握しているなら問題を起こさない範囲で適切に型変換するのはプログラマの裁量による。
状況によって判断するしかない。
994デフォルトの名無しさん
2025/05/02(金) 12:05:12.81ID:b7t9YOim 我慢できなくなって説明しちゃうはちみつさん
995デフォルトの名無しさん
2025/05/02(金) 19:42:35.68ID:rPO248eK for(long long i = (long long)hoge.count(); --i >= 0; ){...}
996デフォルトの名無しさん
2025/05/04(日) 09:19:50.28ID:RkNPiBO2 Rust使えばもっと楽になるかと思いきや
面倒が増えただけだったでござる
面倒が増えただけだったでござる
997デフォルトの名無しさん
2025/05/04(日) 10:01:55.29ID:CPTw2I9A >size_t を返す hoge.count() みたいなのがあって
>for(int i = hoge.count(); --i >= 0){...}
Rustなら単に (0..hoge.count()).rev()
>for(int i = hoge.count(); --i >= 0){...}
Rustなら単に (0..hoge.count()).rev()
998はちみつ餃子 ◆8X2XSCHEME
2025/05/04(日) 11:51:46.75ID:w7r9Yiaa 全体としては Rust のほうがだいぶん楽だと思うけどなぁ。
好みや慣れの要素があるから単純には比較できないのだけれど。
好みや慣れの要素があるから単純には比較できないのだけれど。
999デフォルトの名無しさん
2025/05/04(日) 11:59:34.01ID:RkNPiBO2 はちみつさんもRust使ってるんだね
1000デフォルトの名無しさん
2025/05/04(日) 11:59:44.18ID:RkNPiBO2 かわいい
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2364日 21時間 4分 32秒
新しいスレッドを立ててください。
life time: 2364日 21時間 4分 32秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【芸能】『バンダイナムコフェス』上海公演 日本人歌手・大槻マキが歌唱中に強制退場… 急に音を止められスタッフらしき人達に [冬月記者★]
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 [ぐれ★]
- 橋下徹氏 高市首相“台湾有事”発言に「政治家の失言で一部の人でも仕事がキャンセルに…我々は認めていいのかな」疑問呈す [muffin★]
- 「インバウンド政策上、中国は重要」、訪日自粛で金子国交相「早く通常の状況に戻っていただきたい」★2 [ぐれ★]
- Amazonブラックフライデー 活況の裏に過酷労働 事故やケガを「自己責任にしないで」配達員ら4年連続抗議 [蚤の市★]
- 高市首相が代表の政党支部、企業から上限超える寄付 公表後に訂正 [どどん★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1811
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1810
- 巨専】 ★2
- 【D専】
- こいせん 全レス転載禁止
- とらせん IP
- ( ・᷄ὢ・᷅ )忘年会のネタ考えるか
- 散歩した方がええんか
- 【動画】上海バンダイナムコフェス、ワンピース歌ってる途中に中国政府「日本人の公演全面禁止」発令された瞬間強制終了 怖すぎ★4 [579392623]
- よいよい❤って言って餅つきするあれ
- イヤホンヘッドホホって何万円からのがいいの?
- 千晴と4Get'sバトルしたいやつこい✊😡
