!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part164
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-QP0H)
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0286デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/21(水) 09:44:10.00ID:IDPPhD2V0 あ、すまんfooがクラステンプレートになってるの直し忘れた(直しても同じだが)
287はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 10:22:19.76ID:3HBFHOpK0 >>285
名前探索 (name lookup) は狭い名前空間から探索していって
合致する名前があればそれより外側に同名の関数があっても
オーバーロード解決に参加しない。
わかりやすい例で言えばメンバ関数は非メンバより優先されるし、
メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
void foo(void) {}
struct bar {
void baz(void) {
// この foo は bar::foo のこと
// 名前が見つかった時点でそれより外の名前空間は見に行かないので
// 引数が合わなくても他の候補は試みられずエラーになる。
foo(1);
}
void foo(void) {}
};
名前探索 (name lookup) は狭い名前空間から探索していって
合致する名前があればそれより外側に同名の関数があっても
オーバーロード解決に参加しない。
わかりやすい例で言えばメンバ関数は非メンバより優先されるし、
メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
void foo(void) {}
struct bar {
void baz(void) {
// この foo は bar::foo のこと
// 名前が見つかった時点でそれより外の名前空間は見に行かないので
// 引数が合わなくても他の候補は試みられずエラーになる。
foo(1);
}
void foo(void) {}
};
288はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 10:34:08.97ID:3HBFHOpK0 例をちょっと間違えたのでやりなおし。
void foo(int) {}
struct bar {
void baz(void) {
foo(1);
}
void foo(void) {}
};
こうすると非メンバ関数の foo は候補にすらならないという話。
void foo(int) {}
struct bar {
void baz(void) {
foo(1);
}
void foo(void) {}
};
こうすると非メンバ関数の foo は候補にすらならないという話。
289デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/21(水) 11:00:59.24ID:CWKUsltc0 g++更新にともない
自前ライブラリのビルドでエラーが出るようになって
悩んでたところを解説してくれてる
マジで凄い人達だな
自前ライブラリのビルドでエラーが出るようになって
悩んでたところを解説してくれてる
マジで凄い人達だな
290デフォルトの名無しさん (ワッチョイ a901-UvLK)
2023/06/21(水) 11:31:26.94ID:IDPPhD2V0 >メンバ関数内にひとつでも候補が見つかった時点で非メンバ関数は一切考慮に入らなくなる。
thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど
thx。確かにこれ経験したことあるわ・・・ややこしいし名前変えて対処したけど
291はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 12:13:25.08ID: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 している事例は見たことがあると思う。
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 している事例は見たことがあると思う。
292デフォルトの名無しさん (ワッチョイ ad10-fL0y)
2023/06/21(水) 12:20:53.22ID:s1sJDdcu0 C++って、こういう悪夢みたいなテクニックで溢れかえってるよなあ
RustやらPythonだのに人気が移るわけですよ
RustやらPythonだのに人気が移るわけですよ
293デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/21(水) 12:23:49.28ID:xjKiS8Z6M 記法でいうならNimがいいよ。
294はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/21(水) 16:00:35.62ID:3HBFHOpK0 カスタマイズされた関数が呼ばれるようにする綺麗な方法として customization point object という概念が近頃は導入されてる。
綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。
真似してみてもいいかもね。
より綺麗な方法が導入されるのはいいんだけど、
過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。
個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。
https://m.xkcd.com/927/
綺麗な方法というか汚い部分はライブラリに隠すってだけなんだけど。
真似してみてもいいかもね。
より綺麗な方法が導入されるのはいいんだけど、
過去の方法が消えてなくなるわけでもないし完全に置き換えられるわけでもないからなぁ。
個々には良くなっても全体としては余計に複雑になるだけってのもよくある話。
https://m.xkcd.com/927/
295デフォルトの名無しさん (ワッチョイ c997-trtU)
2023/06/22(木) 09:50:22.29ID:+UOgHQ6A0 max RSS (メモリ総量) の取得ってWindowsとLinuxでポータブルな方法ないの?
296デフォルトの名無しさん (スプッッ Sd12-9xvA)
2023/06/22(木) 10:07:05.02ID:T+/An9G4d C++標準ライブラリには無い
外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない
外部ライブラリに頼るか自分で実装するかになるけど、結局のところ#ifdefでOS依存の機能を呼び分けるしかない
297デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/22(木) 10:35:39.47ID:myrOOi5M0 std::uintptr_t get_available_memory();
とプロトタイプだけ用意して、定義を環境別に作るだな
内容的に割と単純な処理のはずで
環境別に用意といってもたいした工数にはなるめえよ
とプロトタイプだけ用意して、定義を環境別に作るだな
内容的に割と単純な処理のはずで
環境別に用意といってもたいした工数にはなるめえよ
298デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/22(木) 17:54:50.46ID:Sn58Ngpoa Nim いいよね
C++ 嫌になったら Nim においでおいで
C++ 嫌になったら Nim においでおいで
299デフォルトの名無しさん (ワッチョイ c997-trtU)
2023/06/23(金) 06:00:18.48ID:AFPisFIg0 なんかのオブジェクトをポインタじゃなく実体として持ってるとして、それを delete するやり方ってないの?
たとえば std::vector A に対して
delete &A;
みたいな
たとえば std::vector A に対して
delete &A;
みたいな
300デフォルトの名無しさん (ワッチョイ 92ad-DGQF)
2023/06/23(金) 06:14:43.58ID:Dz+tkRpF0 「実体を持っている」と言うが「誰が」持っているかにもよる
グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる)
スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない
別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する
グローバル変数として宣言しているなら予めメモリ上に確保されているから破棄は無理(強引に再利用はできる)
スコープ内で変数として宣言したのなら必要なメモリはスタック上にあるからスタックを弄るしかない
別のオブジェクトのメンバ変数として宣言されているならそのオブジェクトを破棄する
301デフォルトの名無しさん (ワッチョイ 92ad-DGQF)
2023/06/23(金) 06:17:44.59ID:Dz+tkRpF0 スコープ内でってのはローカル変数の意味で言ったの
302デフォルトの名無しさん (ワッチョイ 3602-Ul6j)
2023/06/23(金) 07:14:23.97ID:GEB8UNzF0 A.~vector<>();でいいんじゃないの?
メモリ解放が必要ならdelete(void*)&A;とかして。
メモリ解放が必要ならdelete(void*)&A;とかして。
303デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 07:18:45.05ID:v++V1HM40 >>299
deleteはdynamic storage durationのオブジェクトにのみ許される
std::vector<int> A;はautomatic storage durationの場合はその定義を囲むブレースから逸脱すれば破棄される
static storage durationの場合はプログラムの実行終了時に破棄される
thread storage durationの場合はスレッド終了時に破棄される
deleteはdynamic storage durationのオブジェクトにのみ許される
std::vector<int> A;はautomatic storage durationの場合はその定義を囲むブレースから逸脱すれば破棄される
static storage durationの場合はプログラムの実行終了時に破棄される
thread storage durationの場合はスレッド終了時に破棄される
304デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/23(金) 07:19:36.07ID:pmKt7pYtM 極論すれば、c++の変数は自動変数しか無いから、変数で定義しているものはコンパイラに任せるしか無い。
305デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 07:23:15.08ID:v++V1HM40 > c++の変数は自動変数しか無い
???
???
306デフォルトの名無しさん (ワッチョイ adc9-1tDD)
2023/06/23(金) 08:10:40.98ID:Z0FiiE+w0 変数の生命期間よりも前に絶つのは new したものを delete する方法しかないよ
std::vector* pA = new std::vector();
std::vector& A = *pA;
:
Aで操作
:
delete pA;
この後 Aに対して操作すると鼻から悪魔
std::vector* pA = new std::vector();
std::vector& A = *pA;
:
Aで操作
:
delete pA;
この後 Aに対して操作すると鼻から悪魔
307デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 08:36:05.01ID:v++V1HM40 auto&& A { *new std::vector<int>(0) };
delete &A;
これで「実体」のように偽装はできるけど
こんなコード書くやついたらグーパンだよ
delete &A;
これで「実体」のように偽装はできるけど
こんなコード書くやついたらグーパンだよ
308デフォルトの名無しさん (ワッチョイ 92f0-L1I+)
2023/06/23(金) 08:38:29.90ID:OoWAXDqh0 このスレ読んでると目の裏がチカチカしてくるなw
309デフォルトの名無しさん (ワッチョイ f59c-Axrn)
2023/06/23(金) 08:46:52.36ID:z+mnuoLR0310デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 09:45:42.49ID:v++V1HM40 反例っておまえ・・・
静的変数
静的変数
311デフォルトの名無しさん (ワッチョイ 0d4e-L1I+)
2023/06/23(金) 10:11:58.67ID:Zb3L9Wmq0 >>299
deleteで何をしたいかによるな
deleteは
・デストラクタを呼び出して
・メモリを開放する
という2つの動作が含まれるが、「メモリを開放する」に関しては、確保されてもいないメモリはもちろん開放できないが、
デストラクタは実体としてはただの関数なので、普通に呼び出すことは可能
ただし、メモリが開放される(deleteされる)時にもデストラクタはもちろん呼び出されるので、2重に呼び出しても大丈夫なように設計されたクラスである必要はある
deleteで何をしたいかによるな
deleteは
・デストラクタを呼び出して
・メモリを開放する
という2つの動作が含まれるが、「メモリを開放する」に関しては、確保されてもいないメモリはもちろん開放できないが、
デストラクタは実体としてはただの関数なので、普通に呼び出すことは可能
ただし、メモリが開放される(deleteされる)時にもデストラクタはもちろん呼び出されるので、2重に呼び出しても大丈夫なように設計されたクラスである必要はある
312デフォルトの名無しさん (ワッチョイ 8101-1tDD)
2023/06/23(金) 11:56:54.20ID:jOpqVfQE0 >>299
スコープを終わらせれば消える
スコープを終わらせれば消える
313デフォルトの名無しさん (テテンテンテン MM96-UmNC)
2023/06/23(金) 13:49:52.85ID:RsoTpuHzM Windows11でc++の開発したいんですけど開発環境何を選べばいいですか?
ちなみに趣味でおもちゃ言語のコンパイラを書こうと思います
ちなみに趣味でおもちゃ言語のコンパイラを書こうと思います
314デフォルトの名無しさん (スッップ Sdb2-Ul6j)
2023/06/23(金) 14:29:49.42ID:P5Uu3Ce/d wslのclangでいいんじゃないの
315デフォルトの名無しさん (ワッチョイ 515f-C6j3)
2023/06/23(金) 14:40:39.89ID:79pDbKtj0 >>311
> 2重に呼び出しても大丈夫なように設計されたクラスである必要はある
trivial destructor 以外は(空の ~T() {} 含め)どうがんばっても大丈夫にはならず未定義動作となる模様。
https://timsong-cpp.github.io/cppwp/n4868/basic.life#9.sentence-1
> 2重に呼び出しても大丈夫なように設計されたクラスである必要はある
trivial destructor 以外は(空の ~T() {} 含め)どうがんばっても大丈夫にはならず未定義動作となる模様。
https://timsong-cpp.github.io/cppwp/n4868/basic.life#9.sentence-1
316デフォルトの名無しさん (テテンテンテン MM96-UmNC)
2023/06/23(金) 14:42:57.84ID:XaN8/xk5M317はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 14:49:06.12ID:Xemzxb7u0 >>316
依存するかしないかはプログラマが気を付けることだろ
依存するかしないかはプログラマが気を付けることだろ
318デフォルトの名無しさん (ワッチョイ 196e-ljvc)
2023/06/23(金) 14:58:36.88ID:v++V1HM40319はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 15:11:25.32ID:Xemzxb7u0 俺はコンパイラは複数を利用するのが好ましいと思う。
気を付けてても処理系に依存している (または未定義を踏んでいる) こともある。
いくつかのコンパイラで試してみれば問題点を発見しやすい。
発現した問題についてはデバッガなりなんなりで追えばいいんだが、
問題が潜伏したまま表面に現れないってのは後になってじわじわ効いてきたりするし……。
気を付けてても処理系に依存している (または未定義を踏んでいる) こともある。
いくつかのコンパイラで試してみれば問題点を発見しやすい。
発現した問題についてはデバッガなりなんなりで追えばいいんだが、
問題が潜伏したまま表面に現れないってのは後になってじわじわ効いてきたりするし……。
320デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/23(金) 16:11:46.79ID:lCxAQSJFa >>299
デストラクタに直接リソース解放させるより
リソース解放用の dispose() みたいな関数を造っておいて
デストラクタから dispose() 呼ぶのと同時に
delete しないで dispose() だけ外から呼ぶ設計もあるよ
デストラクタに直接リソース解放させるより
リソース解放用の dispose() みたいな関数を造っておいて
デストラクタから dispose() 呼ぶのと同時に
delete しないで dispose() だけ外から呼ぶ設計もあるよ
321デフォルトの名無しさん (アウアウウー Sacd-Hkv7)
2023/06/23(金) 16:14:47.39ID:lCxAQSJFa >>313
Code::Blocks (+ mingw)
Code::Blocks (+ mingw)
322デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/23(金) 18:47:00.64ID:5tcqgCxE0 コンパイラの本なにがいいのかオススメ聞いたらオッサンに聞いたら怪獣が書いてある本って云われて本屋行って買ったらあとで付録のFDD誰かにかっぱわられていタコとに気付いたけどその本一冊ではなんの役にも立たないクソみたいな本だったわ
そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ
そのあとオライリーのyacc&lexの本と早乙女氏のBison&Flex本で学び直したわ
323デフォルトの名無しさん (ワッチョイ 69f0-J7ro)
2023/06/23(金) 19:05:06.07ID:5tcqgCxE0324デフォルトの名無しさん (テテンテンテン MM96-Axrn)
2023/06/23(金) 19:51:54.58ID:s3XGk2XtM325はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0d3e-C6j3)
2023/06/23(金) 22:40:53.53ID:Xemzxb7u0 >>324
???
storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。
https://timsong-cpp.github.io/cppwp/n4861/basic.stc#1
兼ねる場合は存在しない。
???
storage duration は四種類の内の「ひとつ」であることは直接的に明記されていて解釈の余地がない。
https://timsong-cpp.github.io/cppwp/n4861/basic.stc#1
兼ねる場合は存在しない。
326デフォルトの名無しさん (ワッチョイ 6501-2DXs)
2023/06/24(土) 08:29:33.32ID:31MSzc3x0 >まず動くものを作ることに注力したほうがいい。
+1票
>いくつかのコンパイラで試してみれば問題点を発見しやすい。
これはその通りだけど、もっともっと先の話
+1票
>いくつかのコンパイラで試してみれば問題点を発見しやすい。
これはその通りだけど、もっともっと先の話
327デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/24(土) 09:51:19.10ID:xNNc2oEW0 動くといってもHello worldじゃあまりにもモチベーションに乏しいから
何でもいいから目的目標を持ったプログラムを書いたほうがいい
何でもいいから目的目標を持ったプログラムを書いたほうがいい
328はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/24(土) 12:57:29.18ID:rXisqo0O0329デフォルトの名無しさん (ワッチョイ 6501-wYA+)
2023/06/24(土) 20:48:58.11ID:rm+SB6K20 ドラゴンブックでは?
誤植を指摘できるくらい読み込めば古典は理解できてると思う
誤植を指摘できるくらい読み込めば古典は理解できてると思う
330デフォルトの名無しさん (アウアウウー Sa69-F3wx)
2023/06/27(火) 14:41:09.50ID:DdZG5nY/a いつまでも初心者を抜け出せない人は初心者本を読み過ぎ
331デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/27(火) 17:36:09.51ID:59BI4JPS0 初心者本は【ど】初心者のうちだけにしとけ
謙虚なことはいいことだが、ここだけは背伸びしたほうがいい
初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ
禿本が普通に読めるようになったら次はISOの規格票
謙虚なことはいいことだが、ここだけは背伸びしたほうがいい
初心者本で何か知ったら、それで禿本がどのくらい読めるようになったかやってみれ
禿本が普通に読めるようになったら次はISOの規格票
332デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/27(火) 17:38:22.91ID:59BI4JPS0 逆もしかり
ISOの規格票であえなくギブしたら禿本
禿本でギブのとき初心者本に戻る感じな
ISOの規格票であえなくギブしたら禿本
禿本でギブのとき初心者本に戻る感じな
333デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/27(火) 18:00:18.69ID:h1cnuIf90 特にC++は下手な参考書より規格の方が分かりやすかったりするからな…
334デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/27(火) 18:15:38.33ID:D2orubkn0 初心者へのアドバイスに禿本とかいう隠語をつかうのはどうかと思う
335デフォルトの名無しさん (ワッチョイ d5b3-q57E)
2023/06/27(火) 18:27:04.42ID:KKkR5HKI0 今独学でC++学んでいるんですが、たまたま見つけたサイトでint32_tとありましたが
int変数を宣言するのにint32_tなんて使いませんよね?
intでokですよね?
int変数を宣言するのにint32_tなんて使いませんよね?
intでokですよね?
336デフォルトの名無しさん (ワッチョイ ad5f-VF0j)
2023/06/27(火) 18:34:12.56ID:3myjDgNL0 何に使うか次第
337デフォルトの名無しさん (ワッチョイ ad02-ES2+)
2023/06/27(火) 18:46:35.68ID:gpD88JT50 >>335
32ビット長である必要があるときだけint32_tを使えばいいよ
32ビット長である必要があるときだけint32_tを使えばいいよ
338デフォルトの名無しさん (ワッチョイ d5b3-q57E)
2023/06/27(火) 19:26:51.01ID:KKkR5HKI0 サンクス
339はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/27(火) 19:30:48.55ID:wxXBe/Gr0 >>335
int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。
具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。
扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。
ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。
C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。
初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。
int は言語仕様では少なくとも -32767 から 32767 を表現可能な幅 (つまり 16 ビット) を持つことが規定されている。
具体的な大きさは処理系定義であって、最低限である 16 ビットかもしれないしもっと大きいかもしれない。
扱おうとする値の範囲が 32 ビット分の幅が必要であると見積もったなら int32_t が適切なこともある。
ただ…… int32_t は「条件に合致する整数型を処理系が持っているなら必ず提供しなければならない」ということになっているので、逆に言えば 32 ビット幅の整数型を持たない処理系では int32_t が存在しないことが許される。
C++ は処理系定義ということにしている項目がたくさんあって移植性を考慮しようとするとすごく大変なんだが (プログラマが想定してさえいれば) ある程度に広く対応可能な仕組みとしてこういう回りくどいものがある。
初心者の内はとりあえず自分の環境で動くものを作れるようになるというので十分だと思うよ。
340デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 05:36:22.40ID:p/gJzJ+n0 >>334
知らなきゃ聞くだろ
知らなきゃ聞くだろ
341デフォルトの名無しさん (スッップ Sd43-KhjG)
2023/06/28(水) 05:40:48.88ID:PRZu9/2Od >>340
禿本って誰ですか?
禿本って誰ですか?
342デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 07:54:48.30ID:p/gJzJ+n0 Bjarne Stroustrup著 The C++ Programming Language
ISBN-10 4797375957
ISBN-10 4797375957
343デフォルトの名無しさん (ワッチョイ 856e-gmRT)
2023/06/28(水) 07:55:45.79ID:p/gJzJ+n0344デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/28(水) 11:12:40.66ID:MFKAAcNx0345デフォルトの名無しさん (テテンテンテン MM4b-HUf/)
2023/06/28(水) 12:11:22.15ID:gg0vhlU/M >>340
検索すると別人の本が出てくるから駄目だろ。
検索すると別人の本が出てくるから駄目だろ。
346デフォルトの名無しさん (ワッチョイ 23f0-OfpS)
2023/06/29(木) 00:03:54.47ID:XHjEw6wR0 C++でintと書けない理由はほぼほぼwindowsのintが32ビットと定義されているからで、
逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ
逆に言えば100% windowsで動かさないとあらかじめ分かっているならint使って書くよ
347デフォルトの名無しさん (ワッチョイ 4be5-O9q2)
2023/06/29(木) 07:49:46.01ID:0UnKiO4J0 せいぜい数十までの整数でも、いちいちint8_tになんかしねえな
348はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 08:15:54.28ID:l+ZsGqGg0 巨大な配列なら話は別だが単発の整数がレジスタより小さくても得なことが無いからな。
349デフォルトの名無しさん (ワッチョイ 9dc9-3ptY)
2023/06/29(木) 08:19:17.75ID:beCjxg/z0 通信関連でペイロードに ビット長指定されてるのなんかは int○_t 使っときたい
350デフォルトの名無しさん (ワッチョイ 8590-bmws)
2023/06/29(木) 11:02:12.05ID:prJHgW/t0 intでもshortでもCPUの計算速度は同じ
351はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 11:11:38.45ID:l+ZsGqGg0 四則演算では int より小さい整数は int に拡張する変換が入ることになってるし、
int を受け取る関数でも当然に変換されるので
変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。
int を受け取る関数でも当然に変換されるので
変換する処理の分だけ素朴なコンパイラだと short のほうがコスト高になる可能性もある。
352デフォルトの名無しさん (ワッチョイ 8590-bmws)
2023/06/29(木) 11:21:22.19ID:prJHgW/t0 言葉足らずだったな
初学者向けに正確にいえば
ビット数の低い数値の型にしたからといって
計算速度が速くなるワケじゃない
理由はハチミツ氏の記述通り
初学者向けに正確にいえば
ビット数の低い数値の型にしたからといって
計算速度が速くなるワケじゃない
理由はハチミツ氏の記述通り
353デフォルトの名無しさん (ワッチョイ 23f0-OfpS)
2023/06/29(木) 17:52:26.59ID:XHjEw6wR0 型のサイズが大きいほどキャッシュミスの確率が上がるし
ベクトル化の効率も関わってくるから話はそう簡単でもないけどな
ベクトル化の効率も関わってくるから話はそう簡単でもないけどな
354はちみつ餃子 ◆8X2XSCHEME (ワッチョイ dd3e-F8yx)
2023/06/29(木) 18:01:09.64ID:l+ZsGqGg0 チューニングが必要になったら実測しろってのはそういうことよな。
やってみるまでわからん。
やってみるまでわからん。
355デフォルトの名無しさん (ワッチョイ 23ad-F8yx)
2023/06/30(金) 13:08:37.59ID:fR+nHOGQ0 やはり64bitCPUなら64bit整数が一番計算が速かったりするのかな
356デフォルトの名無しさん (ワッチョイ 05a7-7pYU)
2023/06/30(金) 13:38:31.87ID:x+ZjTlP+0357デフォルトの名無しさん (ワッチョイ 4bf2-kZxR)
2023/06/30(金) 13:40:34.61ID:GCvfqGNe0 普通、intは32bitじゃないの?
普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ
普通の計算に64bitなんて使ったらキャッシュ効率悪すぎでしょ
358デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 15:06:59.18ID:4d5Im9Ce0 多少のCPU内の計算速度差より、メモリアクセスのペナルティの方が遙かに影響でかいんだよね
昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった
昔、同じテキスト処理をsjisとutf16で速度比べたら、処理が複雑なはずのsjisの方がわずかに速かったこともあった
359デフォルトの名無しさん (ワッチョイ ad02-ES2+)
2023/06/30(金) 16:50:22.94ID:4gqYGJxm0 じゃあ16ビット整数使おうぜ!
360デフォルトの名無しさん (スッップ Sd43-+46M)
2023/06/30(金) 18:10:36.60ID:diu+eantd ILP32
LLP64 windows: int32 long32 long long 64
LP64 unix: int32 long64 long long 64
ILP64 実装例なし
LLP64 windows: int32 long32 long long 64
LP64 unix: int32 long64 long long 64
ILP64 実装例なし
361デフォルトの名無しさん (スプッッ Sd03-+QuN)
2023/06/30(金) 18:16:08.64ID:rpfOZ2Y1d >>358
自作エディタの内部文字コードに悩んでるけどもしかしてUTF8がええのかな
自作エディタの内部文字コードに悩んでるけどもしかしてUTF8がええのかな
362デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 18:31:33.16ID:4d5Im9Ce0 >>361
utf8は日本語3バイトになるし、冗長コードの問題もあるし、処理がより煩雑になるから内部処理コードには一番向かないと思う
エディタなら素直にutf32(もしくは16)で持つのが良いような気がする
utf8は日本語3バイトになるし、冗長コードの問題もあるし、処理がより煩雑になるから内部処理コードには一番向かないと思う
エディタなら素直にutf32(もしくは16)で持つのが良いような気がする
363デフォルトの名無しさん (ワッチョイ 8d9c-HUf/)
2023/06/30(金) 18:50:30.08ID:JeB1mWDr0364デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/30(金) 18:53:22.37ID:ccKyFSM70 今から新規にエディタ作るなら内部はUTF32一択でしょ
それ以外を使う理由がない
それ以外を使う理由がない
365デフォルトの名無しさん (ワッチョイ dd4e-OfpS)
2023/06/30(金) 20:01:34.61ID:4d5Im9Ce0366デフォルトの名無しさん (ワッチョイ 9d10-56Vs)
2023/06/30(金) 20:23:00.32ID:fhTbp4mH0 今どきは絵文字とかも絡んでくるから「簡単に実装」なんてそうそう言えないと思うんだよね
性別やら肌の色で修飾みたいな複雑仕様を網羅する必要があるから
性別やら肌の色で修飾みたいな複雑仕様を網羅する必要があるから
367デフォルトの名無しさん (ワッチョイ 8d7c-BujW)
2023/06/30(金) 21:27:23.31ID:ccKyFSM70 Unicodeの処理なんてただでさえ魔境なんだから減らせる複雑性は減らしといた方が良いよ
悪いこと言わないからUTF32にしとけ
悪いこと言わないからUTF32にしとけ
368デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 10:11:11.88ID:6RngsvF70 テキストエディタを自作すると一文字一文字の描画位置の計算を毎回しなければならず、結局全テキストをデータutf32形式で保持するのが楽という結論になりそう
369デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/01(土) 10:21:22.63ID:zjPNSumQM そこまでやるとワープロやDTPの範疇では?
370デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:38:59.61ID:oFUv7PIMp >>351
変換する処理ったって、普通static_castにコスト発生せんやろ
変換する処理ったって、普通static_castにコスト発生せんやろ
371デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:41:23.25ID:oFUv7PIMp static_castというよりstatic_cast相当というべきか
もちろん浮動小数点数と整数だと命令いるけど
もちろん浮動小数点数と整数だと命令いるけど
372デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:43:45.44ID:hNdT1t6QM レジスタの拡張命令が必要になる
それはゼロコストではない
それはゼロコストではない
373デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:45:55.45ID:hNdT1t6QM 8bit,16bitの値を同サイズのレジスタに読む
それを32bitへ拡張する
それを32bitへ拡張する
374デフォルトの名無しさん (ササクッテロラ Sp5f-kcaK)
2023/07/01(土) 10:49:09.01ID:UYNjOrxwp そうなのか、知らんかった・・・
375デフォルトの名無しさん (オイコラミネオ MMe7-+Mc8)
2023/07/01(土) 10:55:28.60ID:hNdT1t6QM 8bitしかないのに32bitで読むと当然ごみが入るので何かしないといけない
逆に8bitだけ読んで何もしないとこちらもレジスタにゴミが残ってる
何もしないで使える場合なにかしらの仕組みがある
そんなことするよりレジスタ拡張命令使った方がいい
通常の命令だけでなくてsimdにも用意されている
逆に8bitだけ読んで何もしないとこちらもレジスタにゴミが残ってる
何もしないで使える場合なにかしらの仕組みがある
そんなことするよりレジスタ拡張命令使った方がいい
通常の命令だけでなくてsimdにも用意されている
376はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 10:57:02.19ID:7zrd4+jP0377はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 10:58:34.38ID:7zrd4+jP0 ちょうど Unicode 関連の本を読んでたんだが
右から左へ書く言語だとか
それが入れ子になってる場合だとか、
そういうのにちゃんと配慮したソフトウェアが世の中にあるのは
めちゃくちゃ頑張った人がいるんだなぁと有難みを感じてる。
右から左へ書く言語だとか
それが入れ子になってる場合だとか、
そういうのにちゃんと配慮したソフトウェアが世の中にあるのは
めちゃくちゃ頑張った人がいるんだなぁと有難みを感じてる。
378デフォルトの名無しさん (スププ Sd02-+VJx)
2023/07/01(土) 12:18:01.21ID:W7avfgkdd 日本語も右から左に書く言語だ
正確には上から下と右から左ニダ
正確には上から下と右から左ニダ
379デフォルトの名無しさん (ワッチョイ 17f0-mXgB)
2023/07/01(土) 12:20:52.99ID:86MprtLh0 BiDiモード
380デフォルトの名無しさん (ラクッペペ MM8e-J/Sn)
2023/07/01(土) 12:42:13.26ID:ZV4XYgX9M 世界でも珍しい縦書き文化
381デフォルトの名無しさん (ワッチョイ 0e79-p0MK)
2023/07/01(土) 15:53:40.98ID:GgZZqhZy0 UTF32派の人ってWin32でW系API通す時に毎回変換するってこと?
382はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 433e-hRAP)
2023/07/01(土) 16:08:08.30ID:7zrd4+jP0383デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 17:26:11.76ID:6RngsvF70 そもそもWin32でA系APIにutf8渡せないし
384デフォルトの名無しさん (ワッチョイ 7b9c-44el)
2023/07/01(土) 17:29:40.49ID:ceIwatEY0 A系にはutf8渡せるんじゃないの?
385デフォルトの名無しさん (ワッチョイ e2ad-hRAP)
2023/07/01(土) 17:36:11.93ID:6RngsvF70 渡せるという表現がまずかったかな
結果を気にしなければ、なんでも渡せるよ
結果を気にしなければ、なんでも渡せるよ
386デフォルトの名無しさん (ワッチョイ 06f2-fGW2)
2023/07/01(土) 17:43:00.61ID:XU86fDmw0 >>384
Windows バージョン 1903 (2019 年 5 月の更新プログラム) 以降、ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
Windows バージョン 1903 (2019 年 5 月の更新プログラム) 以降、ActiveCodePage プロパティを使って、プロセスのコード ページとして UTF-8 を使うように強制できるようになりました。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 今猛烈に食べたいもの挙げてけwwwwwwww
- 橋下徹「口だけ番長の日本が中国に喧嘩負け。なんとカッコ悪い日本か!」高市にバチーン!✴ [153490809]
- 【高市早苗】習近平激怒か [115996789]
- 🏡
- 今猛烈に食べたいもの挙げてけwwwwwwww
