[過去ログ]
C++相談室 part164 (1002レス)
C++相談室 part164 http://mevius.5ch.net/test/read.cgi/tech/1683600652/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
279: デフォルトの名無しさん (ワッチョイ 32fb-dYQK) [] 2023/06/21(水) 00:07:10.76 ID:2lh42auf0 C++11のSFIANE地獄へようこそ https://wandbox.org/permlink/2sfUVeEBrErqvI2R template関数の実体化が1つだけ成功して、 他が失敗するように仕掛ければ呼び分けは可能。 ただ見ての通り相当面倒なことを書かなきゃならない。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/279
280: デフォルトの名無しさん (ワッチョイ 8101-1tDD) [sage] 2023/06/21(水) 00:28:02.40 ID:CWKUsltc0 >>279 >>266と本質的に何が違うのか分からない 解説よろしく (templateでやってることは無駄なのでは?) http://mevius.5ch.net/test/read.cgi/tech/1683600652/280
281: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/21(水) 00:41:42.51 ID:3HBFHOpK0 >>280 いや、 >>279 のほうがちょっと柔軟で使いやすい。 たとえば void f3(long int, long int) {} みたいなのを渡したとき >>266 ではエラーになる。 引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと 厳密に int そのものでなければならないというのとでは制約の厳しさが違う。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/281
282: デフォルトの名無しさん (ワッチョイ 515f-9XmN) [sage] 2023/06/21(水) 00:42:09.27 ID:LxMKpynY0 templateでやるのは質問者の与えた要件だな 宿題なんじゃね、しらんけど http://mevius.5ch.net/test/read.cgi/tech/1683600652/282
283: デフォルトの名無しさん (ワッチョイ 32fb-9xvA) [] 2023/06/21(水) 00:52:13.25 ID:2lh42auf0 C++14にはif constexprが存在しないから template使ったオーバーロードしか手段がない 質問者がC++14環境でって言ってたからこんなクソ面倒くさいことやれば一応できるっていう例示 http://mevius.5ch.net/test/read.cgi/tech/1683600652/283
284: デフォルトの名無しさん (ワッチョイ 8101-1tDD) [sage] 2023/06/21(水) 01:17:47.52 ID:CWKUsltc0 >>281,283 ありがとう >引数として int を渡せる (int から暗黙に変換可能な仮引数を持っている) というのと >厳密に int そのものでなければならないというのとでは制約の厳しさが違う。 こういうことね http://mevius.5ch.net/test/read.cgi/tech/1683600652/284
285: デフォルトの名無しさん (ワッチョイ a901-UvLK) [] 2023/06/21(水) 04:29:46.61 ID:IDPPhD2V0 >>260 あー本来グローバルも対象になるのか、適当こいてスマソ だが>>248で質問者が言ってるように、元のコードで順序を変えてもダメなのよ 何故か考えてはちみつのコードを以下のようにしたら同様に通らなかった namespace ns { template <class T = int> struct foo{}; // added struct hoge{}; int operator +(const hoge &x, const hoge &y) {return 1;} }; ns::foo<> operator+(const ns::foo<>& x, const ns::foo<>& y) { return ns::foo<>(); } namespace ns { template <class T> void bar(const T&) { T() + T(); } }; int main() { bar(ns::foo<>()); } すでに名前空間内に同名の関数があった場合はダメっぽい http://mevius.5ch.net/test/read.cgi/tech/1683600652/285
286: デフォルトの名無しさん (ワッチョイ a901-UvLK) [] 2023/06/21(水) 09:44:10.00 ID:IDPPhD2V0 あ、すまんfooがクラステンプレートになってるの直し忘れた(直しても同じだが) http://mevius.5ch.net/test/read.cgi/tech/1683600652/286
287: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/21(水) 10:22:19.76 ID:3HBFHOpK0 >>285 名前探索 (name lookup) は狭い名前空間から探索していって 合致する名前があればそれより外側に同名の関数があっても オーバーロード解決に参加しない。 わかりやすい例で言えばメンバ関数は非メンバより優先されるし、 メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。 void foo(void) {} struct bar { void baz(void) { // この foo は bar::foo のこと // 名前が見つかった時点でそれより外の名前空間は見に行かないので // 引数が合わなくても他の候補は試みられずエラーになる。 foo(1); } void foo(void) {} }; http://mevius.5ch.net/test/read.cgi/tech/1683600652/287
288: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/21(水) 10:34:08.97 ID:3HBFHOpK0 例をちょっと間違えたのでやりなおし。 void foo(int) {} struct bar { void baz(void) { foo(1); } void foo(void) {} }; こうすると非メンバ関数の foo は候補にすらならないという話。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/288
289: デフォルトの名無しさん (ワッチョイ 8101-1tDD) [sage] 2023/06/21(水) 11:00:59.24 ID:CWKUsltc0 g++更新にともない 自前ライブラリのビルドでエラーが出るようになって 悩んでたところを解説してくれてる マジで凄い人達だな http://mevius.5ch.net/test/read.cgi/tech/1683600652/289
290: デフォルトの名無しさん (ワッチョイ a901-UvLK) [] 2023/06/21(水) 11:31:26.94 ID:IDPPhD2V0 >メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。 thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど http://mevius.5ch.net/test/read.cgi/tech/1683600652/290
291: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/21(水) 12:13:25.08 ID:3HBFHOpK0 >>285 の例は using を使う形でも解決できる。 (設計意図によってはそれが妥当かどうかわからんけど。) namespace ns { struct foo {}; struct hoge {}; int operator+(const hoge& x, const hoge& y) { return 1; } }; ns::foo operator+(const ns::foo& x, const ns::foo& y) { return ns::foo(); } namespace ns { template <class T> void bar(const T&) { using ::operator+; // グローバルな operator+ をオーバーロード候補として参加させる T() + T(); } }; int main() { bar(ns::foo()); } テンプレートを見る機会がよくあるなら std::begin を using している事例は見たことがあると思う。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/291
292: デフォルトの名無しさん (ワッチョイ ad10-fL0y) [sage] 2023/06/21(水) 12:20:53.22 ID:s1sJDdcu0 C++って、こういう悪夢みたいなテクニックで溢れかえってるよなあ RustやらPythonだのに人気が移るわけですよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/292
293: デフォルトの名無しさん (テテンテンテン MM96-Axrn) [sage] 2023/06/21(水) 12:23:49.28 ID:xjKiS8Z6M 記法でいうならNimがいいよ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/293
294: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/21(水) 16:00:35.62 ID:3HBFHOpK0 カスタマイズされた関数が呼ばれるようにする綺麗な方法として customization point object という概念が近頃は導入されてる。 綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。 真似してみてもいいかもね。 より綺麗な方法が導入されるのはいいんだけど、 過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。 個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。 https://m.xkcd.com/927/ http://mevius.5ch.net/test/read.cgi/tech/1683600652/294
295: デフォルトの名無しさん (ワッチョイ c997-trtU) [sage] 2023/06/22(木) 09:50:22.29 ID:+UOgHQ6A0 max RSS (メモリ総量) の取得ってWindowsとLinuxでポータブルな方法ないの? http://mevius.5ch.net/test/read.cgi/tech/1683600652/295
296: デフォルトの名無しさん (スプッッ Sd12-9xvA) [] 2023/06/22(木) 10:07:05.02 ID:T+/An9G4d C++標準ライブラリには無い 外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない http://mevius.5ch.net/test/read.cgi/tech/1683600652/296
297: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/22(木) 10:35:39.47 ID:myrOOi5M0 std::uintptr_t get_available_memory(); とプロトタイプだけ用意して、定義を環境別に作るだな 内容的に割と単純な処理のはずで 環境別に用意といってもたいした工数にはなるめえよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/297
298: デフォルトの名無しさん (アウアウウー Sacd-Hkv7) [sage] 2023/06/22(木) 17:54:50.46 ID:Sn58Ngpoa Nim いいよね C++ 嫌になったら Nim においでおいで http://mevius.5ch.net/test/read.cgi/tech/1683600652/298
299: デフォルトの名無しさん (ワッチョイ c997-trtU) [sage] 2023/06/23(金) 06:00:18.48 ID:AFPisFIg0 なんかのオブジェクトをポインタじゃなく実体として持ってるとして、それを delete するやり方ってないの? たとえば std::vector A に対して delete &A; みたいな http://mevius.5ch.net/test/read.cgi/tech/1683600652/299
300: デフォルトの名無しさん (ワッチョイ 92ad-DGQF) [sage] 2023/06/23(金) 06:14:43.58 ID:Dz+tkRpF0 「実体を持っている」と言うが「誰が」持っているかにもよる グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる) スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない 別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する http://mevius.5ch.net/test/read.cgi/tech/1683600652/300
301: デフォルトの名無しさん (ワッチョイ 92ad-DGQF) [sage] 2023/06/23(金) 06:17:44.59 ID:Dz+tkRpF0 スコープ内でってのはローカル変数の意味で言ったの http://mevius.5ch.net/test/read.cgi/tech/1683600652/301
302: デフォルトの名無しさん (ワッチョイ 3602-Ul6j) [] 2023/06/23(金) 07:14:23.97 ID:GEB8UNzF0 A.~vector<>();でいいんじゃないの? メモリ解放が必要ならdelete(void*)&A;とかして。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/302
303: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/23(金) 07:18:45.05 ID:v++V1HM40 >>299 deleteはdynamic storage durationのオブジェクトにのみ許される std::vector<int> A;はautomatic storage durationの場合はその定義を囲むブレースから逸脱すれば破棄される static storage durationの場合はプログラムの実行終了時に破棄される thread storage durationの場合はスレッド終了時に破棄される http://mevius.5ch.net/test/read.cgi/tech/1683600652/303
304: デフォルトの名無しさん (テテンテンテン MM96-Axrn) [sage] 2023/06/23(金) 07:19:36.07 ID:pmKt7pYtM 極論すれば、c++の変数は自動変数しか無いから、変数で定義しているものはコンパイラに任せるしか無い。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/304
305: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/23(金) 07:23:15.08 ID:v++V1HM40 > c++の変数は自動変数しか無い ??? http://mevius.5ch.net/test/read.cgi/tech/1683600652/305
306: デフォルトの名無しさん (ワッチョイ adc9-1tDD) [sage] 2023/06/23(金) 08:10:40.98 ID:Z0FiiE+w0 変数の生命期間よりも前に絶つのは new したものを delete する方法しかないよ std::vector* pA = new std::vector(); std::vector& A = *pA; : Aで操作 : delete pA; この後 Aに対して操作すると鼻から悪魔 http://mevius.5ch.net/test/read.cgi/tech/1683600652/306
307: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/23(金) 08:36:05.01 ID:v++V1HM40 auto&& A { *new std::vector<int>(0) }; delete &A; これで「実体」のように偽装はできるけど こんなコード書くやついたらグーパンだよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/307
308: デフォルトの名無しさん (ワッチョイ 92f0-L1I+) [sage] 2023/06/23(金) 08:38:29.90 ID:OoWAXDqh0 このスレ読んでると目の裏がチカチカしてくるなw http://mevius.5ch.net/test/read.cgi/tech/1683600652/308
309: デフォルトの名無しさん (ワッチョイ f59c-Axrn) [sage] 2023/06/23(金) 08:46:52.36 ID:z+mnuoLR0 >>305 極論すれば、と言っているだろ。 せめて反例ぐらい出せよ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/309
310: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/23(金) 09:45:42.49 ID:v++V1HM40 反例っておまえ・・・ 静的変数 http://mevius.5ch.net/test/read.cgi/tech/1683600652/310
311: デフォルトの名無しさん (ワッチョイ 0d4e-L1I+) [sage] 2023/06/23(金) 10:11:58.67 ID:Zb3L9Wmq0 >>299 deleteで何をしたいかによるな deleteは ・デストラクタを呼び出して ・メモリを開放する という2つの動作が含まれるが、「メモリを開放する」に関しては、確保されてもいないメモリはもちろん開放できないが、 デストラクタは実体としてはただの関数なので、普通に呼び出すことは可能 ただし、メモリが開放される(deleteされる)時にもデストラクタはもちろん呼び出されるので、2重に呼び出しても大丈夫なように設計されたクラスである必要はある http://mevius.5ch.net/test/read.cgi/tech/1683600652/311
312: デフォルトの名無しさん (ワッチョイ 8101-1tDD) [sage] 2023/06/23(金) 11:56:54.20 ID:jOpqVfQE0 >>299 スコープを終わらせれば消える http://mevius.5ch.net/test/read.cgi/tech/1683600652/312
313: デフォルトの名無しさん (テテンテンテン MM96-UmNC) [sage] 2023/06/23(金) 13:49:52.85 ID:RsoTpuHzM Windows11でc++の開発したいんですけど開発環境何を選べばいいですか? ちなみに趣味でおもちゃ言語のコンパイラを書こうと思います http://mevius.5ch.net/test/read.cgi/tech/1683600652/313
314: デフォルトの名無しさん (スッップ Sdb2-Ul6j) [] 2023/06/23(金) 14:29:49.42 ID:P5Uu3Ce/d wslのclangでいいんじゃないの http://mevius.5ch.net/test/read.cgi/tech/1683600652/314
315: デフォルトの名無しさん (ワッチョイ 515f-C6j3) [sage] 2023/06/23(金) 14:40:39.89 ID:79pDbKtj0 >>311 > 2重に呼び出しても大丈夫なように設計されたクラスである必要はある trivial destructor 以外は(空の ~T() {} 含め)どうがんばっても大丈夫にはならず未定義動作となる模様。 https://timsong-cpp.github.io/cppwp/n4868/basic.life#9.sentence-1 http://mevius.5ch.net/test/read.cgi/tech/1683600652/315
316: デフォルトの名無しさん (テテンテンテン MM96-UmNC) [sage] 2023/06/23(金) 14:42:57.84 ID:XaN8/xk5M >>314 visual studioでできませんか? visual studioに依存しないような形で http://mevius.5ch.net/test/read.cgi/tech/1683600652/316
317: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/23(金) 14:49:06.12 ID:Xemzxb7u0 >>316 依存するかしないかはプログラマが気を付けることだろ http://mevius.5ch.net/test/read.cgi/tech/1683600652/317
318: デフォルトの名無しさん (ワッチョイ 196e-ljvc) [sage] 2023/06/23(金) 14:58:36.88 ID:v++V1HM40 >>316 つーか俺はVisual Studioを推奨する コンパイラ本体が昔からしっかりしてるし デバッガは無数の信者を抱えるクオリティ http://mevius.5ch.net/test/read.cgi/tech/1683600652/318
319: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/23(金) 15:11:25.32 ID:Xemzxb7u0 俺はコンパイラは複数を利用するのが好ましいと思う。 気を付けてても処理系に依存している (または未定義を踏んでいる) こともある。 いくつかのコンパイラで試してみれば問題点を発見しやすい。 発現した問題についてはデバッガなりなんなりで追えばいいんだが、 問題が潜伏したまま表面に現れないってのは後になってじわじわ効いてきたりするし……。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/319
320: デフォルトの名無しさん (アウアウウー Sacd-Hkv7) [sage] 2023/06/23(金) 16:11:46.79 ID:lCxAQSJFa >>299 デストラクタに直接リソース解放させるより リソース解放用の dispose() みたいな関数を造っておいて デストラクタから dispose() 呼ぶのと同時に delete しないで dispose() だけ外から呼ぶ設計もあるよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/320
321: デフォルトの名無しさん (アウアウウー Sacd-Hkv7) [sage] 2023/06/23(金) 16:14:47.39 ID:lCxAQSJFa >>313 Code::Blocks (+ mingw) http://mevius.5ch.net/test/read.cgi/tech/1683600652/321
322: デフォルトの名無しさん (ワッチョイ 69f0-J7ro) [sage] 2023/06/23(金) 18:47:00.64 ID:5tcqgCxE0 コンパイラの本なにがいいのかオススメ聞いたらオッサンに聞いたら怪獣が書いてある本って云われて本屋行って買ったらあとで付録のFDD誰かにかっぱわられていタコとに気付いたけどその本一冊ではなんの役にも立たないクソみたいな本だったわ そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ http://mevius.5ch.net/test/read.cgi/tech/1683600652/322
323: デフォルトの名無しさん (ワッチョイ 69f0-J7ro) [sage] 2023/06/23(金) 19:05:06.07 ID:5tcqgCxE0 良く見たら全然違ったわw https://i.imgur.com/DHAPVXR.jpg yacc&lexが早乙女氏でBison&Flexが五月女氏でオライリーに似てるけどASCII出版やったわ http://mevius.5ch.net/test/read.cgi/tech/1683600652/323
324: デフォルトの名無しさん (テテンテンテン MM96-Axrn) [sage] 2023/06/23(金) 19:51:54.58 ID:s3XGk2XtM >>316 まず動くものを作ることに注力したほうがいい。 どうせ最初のコードは(問題領域の学習後に)捨てることになるから、プロトタイプと割り切るべき。あんまり頑張ると進捗悪くて挫折するし、うまく行ってもコンコルド効果で酷い目にあう。 >>310 確かに静的変数は自動だけど別物だな……よくやった。悔しいが褒めてやろう。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/324
325: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3) [sage] 2023/06/23(金) 22:40:53.53 ID:Xemzxb7u0 >>324 ??? storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。 https://timsong-cpp.github.io/cppwp/n4861/basic.stc#1 兼ねる場合は存在しない。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/325
326: デフォルトの名無しさん (ワッチョイ 6501-2DXs) [] 2023/06/24(土) 08:29:33.32 ID:31MSzc3x0 >まず動くものを作ることに注力したほうがいい。 +1票 >いくつかのコンパイラで試してみれば問題点を発見しやすい。 これはその通りだけど、もっともっと先の話 http://mevius.5ch.net/test/read.cgi/tech/1683600652/326
327: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/24(土) 09:51:19.10 ID:xNNc2oEW0 動くといってもHello worldじゃあまりにもモチベーションに乏しいから 何でもいいから目的目標を持ったプログラムを書いたほうがいい http://mevius.5ch.net/test/read.cgi/tech/1683600652/327
328: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) [sage] 2023/06/24(土) 12:57:29.18 ID:rXisqo0O0 >>327 この話題の大元である >>313 でコンパイラを書くと書いてあるよ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/328
329: デフォルトの名無しさん (ワッチョイ 6501-wYA+) [] 2023/06/24(土) 20:48:58.11 ID:rm+SB6K20 ドラゴンブックでは? 誤植を指摘できるくらい読み込めば古典は理解できてると思う http://mevius.5ch.net/test/read.cgi/tech/1683600652/329
330: デフォルトの名無しさん (アウアウウー Sa69-F3wx) [] 2023/06/27(火) 14:41:09.50 ID:DdZG5nY/a いつまでも初心者を抜け出せない人は初心者本を読み過ぎ http://mevius.5ch.net/test/read.cgi/tech/1683600652/330
331: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/27(火) 17:36:09.51 ID:59BI4JPS0 初心者本は【ど】初心者のうちだけにしとけ 謙虚なことはいいことだが、ここだけは背伸びしたほうがいい 初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ 禿本が普通に読めるようになったら次はISOの規格票 http://mevius.5ch.net/test/read.cgi/tech/1683600652/331
332: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/27(火) 17:38:22.91 ID:59BI4JPS0 逆もしかり ISOの規格票であえなくギブしたら禿本 禿本でギブのとき初心者本に戻る感じな http://mevius.5ch.net/test/read.cgi/tech/1683600652/332
333: デフォルトの名無しさん (ワッチョイ 8d7c-BujW) [sage] 2023/06/27(火) 18:00:18.69 ID:h1cnuIf90 特にC++は下手な参考書より規格の方が分かりやすかったりするからな… http://mevius.5ch.net/test/read.cgi/tech/1683600652/333
334: デフォルトの名無しさん (ワッチョイ dd4e-OfpS) [sage] 2023/06/27(火) 18:15:38.33 ID:D2orubkn0 初心者へのアドバイスに禿本とかいう隠語をつかうのはどうかと思う http://mevius.5ch.net/test/read.cgi/tech/1683600652/334
335: デフォルトの名無しさん (ワッチョイ d5b3-q57E) [sage] 2023/06/27(火) 18:27:04.42 ID:KKkR5HKI0 今独学でC++学んでいるんですが、たまたま見つけたサイトでint32_tとありましたが int変数を宣言するのにint32_tなんて使いませんよね? intでokですよね? http://mevius.5ch.net/test/read.cgi/tech/1683600652/335
336: デフォルトの名無しさん (ワッチョイ ad5f-VF0j) [sage] 2023/06/27(火) 18:34:12.56 ID:3myjDgNL0 何に使うか次第 http://mevius.5ch.net/test/read.cgi/tech/1683600652/336
337: デフォルトの名無しさん (ワッチョイ ad02-ES2+) [sage] 2023/06/27(火) 18:46:35.68 ID:gpD88JT50 >>335 32ビット長である必要があるときだけint32_tを使えばいいよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/337
338: デフォルトの名無しさん (ワッチョイ d5b3-q57E) [sage] 2023/06/27(火) 19:26:51.01 ID:KKkR5HKI0 サンクス http://mevius.5ch.net/test/read.cgi/tech/1683600652/338
339: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) [sage] 2023/06/27(火) 19:30:48.55 ID:wxXBe/Gr0 >>335 int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。 具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。 扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。 ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。 C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。 初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/339
340: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/28(水) 05:36:22.40 ID:p/gJzJ+n0 >>334 知らなきゃ聞くだろ http://mevius.5ch.net/test/read.cgi/tech/1683600652/340
341: デフォルトの名無しさん (スッップ Sd43-KhjG) [sage] 2023/06/28(水) 05:40:48.88 ID:PRZu9/2Od >>340 禿本って誰ですか? http://mevius.5ch.net/test/read.cgi/tech/1683600652/341
342: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/28(水) 07:54:48.30 ID:p/gJzJ+n0 Bjarne Stroustrup著 The C++ Programming Language ISBN-10 4797375957 http://mevius.5ch.net/test/read.cgi/tech/1683600652/342
343: デフォルトの名無しさん (ワッチョイ 856e-gmRT) [sage] 2023/06/28(水) 07:55:45.79 ID:p/gJzJ+n0 禿のブログ https://www.stroustrup.com/ http://mevius.5ch.net/test/read.cgi/tech/1683600652/343
344: デフォルトの名無しさん (ワッチョイ dd4e-OfpS) [sage] 2023/06/28(水) 11:12:40.66 ID:MFKAAcNx0 >>340 誰も知らないから隠語なんだよ たまにいるよな、相手の知らないであろう単語を使ってマウントを取った気分になるやつ http://mevius.5ch.net/test/read.cgi/tech/1683600652/344
345: デフォルトの名無しさん (テテンテンテン MM4b-HUf/) [sage] 2023/06/28(水) 12:11:22.15 ID:gg0vhlU/M >>340 検索すると別人の本が出てくるから駄目だろ。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/345
346: デフォルトの名無しさん (ワッチョイ 23f0-OfpS) [sage] 2023/06/29(木) 00:03:54.47 ID:XHjEw6wR0 C++でintと書けない理由はほぼほぼwindowsのintが32ビットと定義されているからで、 逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ http://mevius.5ch.net/test/read.cgi/tech/1683600652/346
347: デフォルトの名無しさん (ワッチョイ 4be5-O9q2) [sage] 2023/06/29(木) 07:49:46.01 ID:0UnKiO4J0 せいぜい数十までの整数でも、いちいちint8_tになんかしねえな http://mevius.5ch.net/test/read.cgi/tech/1683600652/347
348: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) [sage] 2023/06/29(木) 08:15:54.28 ID:l+ZsGqGg0 巨大な配列なら話は別だが単発の整数がレジスタより小さくても得なことが無いからな。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/348
349: デフォルトの名無しさん (ワッチョイ 9dc9-3ptY) [sage] 2023/06/29(木) 08:19:17.75 ID:beCjxg/z0 通信関連でペイロードに ビット長指定されてるのなんかは int○_t 使っときたい http://mevius.5ch.net/test/read.cgi/tech/1683600652/349
350: デフォルトの名無しさん (ワッチョイ 8590-bmws) [sage] 2023/06/29(木) 11:02:12.05 ID:prJHgW/t0 intでもshortでもCPUの計算速度は同じ http://mevius.5ch.net/test/read.cgi/tech/1683600652/350
351: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) [sage] 2023/06/29(木) 11:11:38.45 ID:l+ZsGqGg0 四則演算では int より小さい整数は int に拡張する変換が入ることになってるし、 int を受け取る関数でも当然に変換されるので 変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/351
352: デフォルトの名無しさん (ワッチョイ 8590-bmws) [sage] 2023/06/29(木) 11:21:22.19 ID:prJHgW/t0 言葉足らずだったな 初学者向けに正確にいえば ビット数の低い数値の型にしたからといって 計算速度が速くなるワケじゃない 理由はハチミツ氏の記述通り http://mevius.5ch.net/test/read.cgi/tech/1683600652/352
353: デフォルトの名無しさん (ワッチョイ 23f0-OfpS) [sage] 2023/06/29(木) 17:52:26.59 ID:XHjEw6wR0 型のサイズが大きいほどキャッシュミスの確率が上がるし ベクトル化の効率も関わってくるから話はそう簡単でもないけどな http://mevius.5ch.net/test/read.cgi/tech/1683600652/353
354: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx) [sage] 2023/06/29(木) 18:01:09.64 ID:l+ZsGqGg0 チューニングが必要になったら実測しろってのはそういうことよな。 やってみるまでわからん。 http://mevius.5ch.net/test/read.cgi/tech/1683600652/354
355: デフォルトの名無しさん (ワッチョイ 23ad-F8yx) [sage] 2023/06/30(金) 13:08:37.59 ID:fR+nHOGQ0 やはり64bitCPUなら64bit整数が一番計算が速かったりするのかな http://mevius.5ch.net/test/read.cgi/tech/1683600652/355
356: デフォルトの名無しさん (ワッチョイ 05a7-7pYU) [sage] 2023/06/30(金) 13:38:31.87 ID:x+ZjTlP+0 >>348 al、ah、axと小さなレジスタでやりくりすることによりスタックすらも使わずに複数の変数を操作することは可能になる まあ汎用レジスタ数の多い64bitアプリではあんまりメリットにならんが http://mevius.5ch.net/test/read.cgi/tech/1683600652/356
357: デフォルトの名無しさん (ワッチョイ 4bf2-kZxR) [sage] 2023/06/30(金) 13:40:34.61 ID:GCvfqGNe0 普通、intは32bitじゃないの? 普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ http://mevius.5ch.net/test/read.cgi/tech/1683600652/357
358: デフォルトの名無しさん (ワッチョイ dd4e-OfpS) [sage] 2023/06/30(金) 15:06:59.18 ID:4d5Im9Ce0 多少のCPU内の計算速度差より、メモリアクセスのペナルティの方が遙かに影響でかいんだよね 昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった http://mevius.5ch.net/test/read.cgi/tech/1683600652/358
359: デフォルトの名無しさん (ワッチョイ ad02-ES2+) [sage] 2023/06/30(金) 16:50:22.94 ID:4gqYGJxm0 じゃあ16ビット整数使おうぜ! http://mevius.5ch.net/test/read.cgi/tech/1683600652/359
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 643 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s