※前スレ
C++相談室 part154
https://mevius.5ch.net/test/read.cgi/tech/1610096040/
テンプレここまで
探検
C++相談室 part155
■ このスレッドは過去ログ倉庫に格納されています
2021/03/24(水) 12:07:15.39ID:R+oM8cup
150デフォルトの名無しさん
2021/04/09(金) 18:46:49.83ID:WYvZUx+H c++についてうんちく垂れるやつに限って仕事ができない
そんなうんちくどうでもいいから、さっさと作れよって思われてる先輩いるわ
そんなうんちくどうでもいいから、さっさと作れよって思われてる先輩いるわ
151デフォルトの名無しさん
2021/04/09(金) 19:06:14.56ID:PF0aPDJN >>150
プログラマは怠惰であれ、を地で行ってるんだろう
プログラマは怠惰であれ、を地で行ってるんだろう
152デフォルトの名無しさん
2021/04/09(金) 19:55:10.43ID:O38yN+C3 >>144
> わざわざ誰が書いたかわからないようなものより自作できるなら自作するだろ
おまえは一生二度とライブラリもOSも使うな
ベアメタルだけで食っていけ
それができたら、おまえに付いてくる者たちが顕れるだろう
できなければ人知れず消えるだけだ
どうなりたいかは、お前の人生だ
俺がどうしろとは言えない
> わざわざ誰が書いたかわからないようなものより自作できるなら自作するだろ
おまえは一生二度とライブラリもOSも使うな
ベアメタルだけで食っていけ
それができたら、おまえに付いてくる者たちが顕れるだろう
できなければ人知れず消えるだけだ
どうなりたいかは、お前の人生だ
俺がどうしろとは言えない
153デフォルトの名無しさん
2021/04/09(金) 20:38:18.09ID:8YMfBGcF >>150
またお前か。さっさとプログラミング覚えろよ
またお前か。さっさとプログラミング覚えろよ
154デフォルトの名無しさん
2021/04/09(金) 23:03:48.36ID:mQjFjskh std::binary_search()は戻り値とかなんとboolや
こんなのよかちゃんと位置を返してくれるstd::lower_bound()の方がよっぽど使いでがある
ちなstd::lower_bound()が2分探索か線形探索かは使うイテレータの条件次第
こんなのよかちゃんと位置を返してくれるstd::lower_bound()の方がよっぽど使いでがある
ちなstd::lower_bound()が2分探索か線形探索かは使うイテレータの条件次第
155デフォルトの名無しさん
2021/04/09(金) 23:08:01.53ID:mQjFjskh std::lower_bound()が線形探索だと断言してくださる香ばしいblogも世の中にはあるが
https://rsk0315.hatenablog.com/entry/2019/09/10/173708
これがまつがいであることは比較関数の中でprintf()でもしたらたちどころにワカル
https://rsk0315.hatenablog.com/entry/2019/09/10/173708
これがまつがいであることは比較関数の中でprintf()でもしたらたちどころにワカル
156デフォルトの名無しさん
2021/04/09(金) 23:29:26.43ID:mQjFjskh ゴメソリンク先は必ずしも断言はしていなくって、std::set<T>にstd::lower_bound()を適用する例か、
これのイテレータはrandom-access iteratorでないから確かに線形探索になる
これのイテレータはrandom-access iteratorでないから確かに線形探索になる
157デフォルトの名無しさん
2021/04/10(土) 02:28:09.12ID:+Yr/nSyJ158デフォルトの名無しさん
2021/04/10(土) 13:02:03.74ID:62UJIlpX159デフォルトの名無しさん
2021/04/10(土) 13:04:24.60ID:ziRUnSTY160デフォルトの名無しさん
2021/04/11(日) 21:20:47.36ID:aRgjPq06 コンパイラはともかくリンカに計算負担をかけるのはバカな設計だなと思うわ。
161デフォルトの名無しさん
2021/04/11(日) 21:31:53.64ID:X3ahc6YE >>160 何の設計の話?
162デフォルトの名無しさん
2021/04/11(日) 22:03:18.21ID:oDlLzjRc 暗黙のmoveがnullptr代入してくれないとか生ポあるクラスに暗黙のctor定義してくれるのか、とか
学ぶ順番間違えて勘違いしてるやつ上の方にいるけど
そもそも生ポの扱いに言語が介入するんならdtorでdeleteしてくれるのか、とか考えつかないのかね・・
学ぶ順番間違えて勘違いしてるやつ上の方にいるけど
そもそも生ポの扱いに言語が介入するんならdtorでdeleteしてくれるのか、とか考えつかないのかね・・
163デフォルトの名無しさん
2021/04/11(日) 22:28:21.28ID:AbYQFAoI 質問者はポインタ型とshared_ptrについて聞いてたのに、shared_ptrのことしか答えなかった餃子が悪い。
謝れ!俺に
謝れ!俺に
164デフォルトの名無しさん
2021/04/12(月) 13:47:17.66ID:SAslKmLH 指定ソフトのFWを許可するAPI教えてくださいよ
165はちみつ餃子 ◆8X2XSCHEME
2021/04/12(月) 15:59:50.47ID:8pnQviW4 そうか。
166デフォルトの名無しさん
2021/04/12(月) 18:14:36.03ID:jbHGiSQO 皆さま御機嫌よう、ちょっと質問させてください
class hogeの内部でenum class fugaを定義し、
そのfugaをclass hogehoge でメンバ変数として使用したいのですが、
hogehoge のヘッダーにはなるべくhoge をインクルードさせたくありません。
もちろんfuga変数はヘッダーに置いて使用したいのですが……
前方宣言でfugaを宣言してもhoge::fugaと互換?が無いため代入が出来ません。
キャストで戻したりして使っているのですがこれならintでもいいかなと……
クラス内クラスの前方宣言は難しいのでしょうか?
何か方法がありましたら教えていただきたく……
class hoge{
enum class fuga{
one,two,three,SUM
};
};
//ヘッダーはソースにインクルードしたい
class hogehoge{
hoge::fuga mfuga;
};
こんかかんじで使いたいのですがエラーになってしまいsまずorz
class hogeの内部でenum class fugaを定義し、
そのfugaをclass hogehoge でメンバ変数として使用したいのですが、
hogehoge のヘッダーにはなるべくhoge をインクルードさせたくありません。
もちろんfuga変数はヘッダーに置いて使用したいのですが……
前方宣言でfugaを宣言してもhoge::fugaと互換?が無いため代入が出来ません。
キャストで戻したりして使っているのですがこれならintでもいいかなと……
クラス内クラスの前方宣言は難しいのでしょうか?
何か方法がありましたら教えていただきたく……
class hoge{
enum class fuga{
one,two,three,SUM
};
};
//ヘッダーはソースにインクルードしたい
class hogehoge{
hoge::fuga mfuga;
};
こんかかんじで使いたいのですがエラーになってしまいsまずorz
167デフォルトの名無しさん
2021/04/12(月) 18:58:57.80ID:jbHGiSQO enum classはグローバルに置いた方がいいんでしょうか?
任意のクラス内部で規定したいenumが見た目も便利だと思ったのでなるべく入れ子にしたかったのですが
任意のクラス内部で規定したいenumが見た目も便利だと思ったのでなるべく入れ子にしたかったのですが
168デフォルトの名無しさん
2021/04/12(月) 19:30:43.48ID:e7ZnlCa0 >>167
hoge をインクルードしないところで hoge::fuga を使いたいということは
fuga は hoge にそれほど強く結びついていないということで、外に出すのが妥当なのでは?
外に置いたうえで hoge 内で using fuga = outer_fuga とでもすれば、見た目は損なわれないだろうし。
hoge をインクルードしないところで hoge::fuga を使いたいということは
fuga は hoge にそれほど強く結びついていないということで、外に出すのが妥当なのでは?
外に置いたうえで hoge 内で using fuga = outer_fuga とでもすれば、見た目は損なわれないだろうし。
169デフォルトの名無しさん
2021/04/12(月) 19:43:07.58ID:jbHGiSQO170デフォルトの名無しさん
2021/04/12(月) 19:43:19.37ID:jbHGiSQO ありがとうございました
171デフォルトの名無しさん
2021/04/13(火) 19:17:47.93ID:CekyfU50 std::sortがセーフソートかどうかって決まってないんですね?
172デフォルトの名無しさん
2021/04/13(火) 19:20:46.00ID:dUpGrFVX セーフソートとは何なのか、決まってないですね。
173デフォルトの名無しさん
2021/04/13(火) 19:49:36.98ID:3ATJKALM 安定ソートのことならstd::stable_sortを使え
174デフォルトの名無しさん
2021/04/13(火) 20:39:25.63ID:E/HY6RLS std::stable_sort<T>はどうしてもstd::sort<T>より遅い
からstd::stable_sort<T>で安定ソートするテクニックが存在するし需要がある
からstd::stable_sort<T>で安定ソートするテクニックが存在するし需要がある
175デフォルトの名無しさん
2021/04/13(火) 20:57:29.81ID:E/HY6RLS もちろんタダでというわけにはいかずn個のTのソーティングに対しn個の整数型の配列が別途必要だがとにかくできる
176デフォルトの名無しさん
2021/04/13(火) 20:58:57.72ID:E/HY6RLS まつがえたorz
誤: std::stable_sort<T>
正: std::sort<T>
誤: std::stable_sort<T>
正: std::sort<T>
177デフォルトの名無しさん
2021/04/13(火) 21:07:31.95ID:E/HY6RLS 計算量の仕様からすると何だかんだ言って
std::stable_sort<T>の中身はマージソートで、
std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技
ぐらいしかありえない
std::stable_sort<T>の中身はマージソートで、
std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技
ぐらいしかありえない
178デフォルトの名無しさん
2021/04/13(火) 21:10:52.16ID:CekyfU50 みなさんありがとうございます
安定ソートのことでした
安定ソートのことでした
179デフォルトの名無しさん
2021/04/14(水) 05:40:12.90ID:OwJGUJdo > std::stable_sort<T>の中身はマージソートで、
これはまあそんなもうだろうけど
> std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技
なんでここまで限定するんだ?
これはまあそんなもうだろうけど
> std::sort<T>の中身はイントロソートとクイックセレクトとクイックソートの複合技
なんでここまで限定するんだ?
180デフォルトの名無しさん
2021/04/14(水) 06:51:50.47ID:1+2DD+HN https://cpprefjp.github.io/reference/algorithm/sort.html
>C++11以降: O(N log N) (N == last - first) 計算量での比較
>クイックソートは平均計算量がO(N Log N)だが、最悪計算量がO(n^2)である。そのため、C++03の計算量要件には合致するが、C++11の要件には合致しない
>C++11以降: O(N log N) (N == last - first) 計算量での比較
>クイックソートは平均計算量がO(N Log N)だが、最悪計算量がO(n^2)である。そのため、C++03の計算量要件には合致するが、C++11の要件には合致しない
181デフォルトの名無しさん
2021/04/14(水) 06:52:54.28ID:mDTOVFC3 ubuntuでの開発環境って何があるんでしょうか?
openglなのでc++を使うことになると思うんですが、c++はideとしてvscodeでいいですよね
guiは何が一般的なんでしょうか?
openglなのでc++を使うことになると思うんですが、c++はideとしてvscodeでいいですよね
guiは何が一般的なんでしょうか?
182デフォルトの名無しさん
2021/04/14(水) 07:20:31.68ID:OwJGUJdo > この関数には、特定のアルゴリズムで実装すべきという規定はない
183デフォルトの名無しさん
2021/04/14(水) 07:23:57.67ID:OwJGUJdo 古典的なソート議論はユニプロセッサ前提
今どきの並列化の流れに必ずしも当てはまるとは思えない
今どきの並列化の流れに必ずしも当てはまるとは思えない
184デフォルトの名無しさん
2021/04/14(水) 07:27:25.07ID:B6LD9tEC boost::sort::pdqsort(), boost::sort::block_indirect_sort() あたりならヘッダーだけで並列ソートできる
185デフォルトの名無しさん
2021/04/14(水) 09:23:48.49ID:hYFflu6b >>181
GUIなんか使わないのが一般的だよ
開発環境にわざわざC++とLinuxを選ぶような人は自分用アプリにGUIなんて組み込まないだろうし、
他人に使わせるならどうせWindowsでテストしなきゃいけないからLinuxなんて時間の無駄だ
OpenGLだったらOpenGLの描画結果を表示するウィンドウとターミナルでいい
GUIなんか使わないのが一般的だよ
開発環境にわざわざC++とLinuxを選ぶような人は自分用アプリにGUIなんて組み込まないだろうし、
他人に使わせるならどうせWindowsでテストしなきゃいけないからLinuxなんて時間の無駄だ
OpenGLだったらOpenGLの描画結果を表示するウィンドウとターミナルでいい
186デフォルトの名無しさん
2021/04/14(水) 10:52:22.55ID:OwJGUJdo 自分用アプリねえ
俺の定規ウインドウなんてGUIだけど
俺の定規ウインドウなんてGUIだけど
187デフォルトの名無しさん
2021/04/14(水) 11:09:58.93ID:lMgtIJ1Q 定規ww
188デフォルトの名無しさん
2021/04/14(水) 12:59:06.52ID:mDTOVFC3189デフォルトの名無しさん
2021/04/14(水) 16:06:34.29ID:qBzPSYhh 定規がとても気になる
190デフォルトの名無しさん
2021/04/14(水) 16:25:09.90ID:qBzPSYhh ぐぐったら沢山出てきた
頭が悪くて理解出来ないけど需要あるんだね
頭が悪くて理解出来ないけど需要あるんだね
191デフォルトの名無しさん
2021/04/14(水) 17:07:15.14ID:X49CrYgb unique_ptr<hoge> 自体が型名なんでしょうか?
class unique_ptr<hoge>で前方宣言してもいいのかな?
class unique_ptr<hoge>で前方宣言してもいいのかな?
192デフォルトの名無しさん
2021/04/14(水) 18:15:29.38ID:OwJGUJdo 明示的な具現のつもりなら構文が違うね
193デフォルトの名無しさん
2021/04/14(水) 18:22:49.87ID:X49CrYgb 素人なんで自分の説明が難あると思うんだけど自分なりに精一杯説明すると、
ヘッダー部の引数にclass unique-ptr<hoge>& uhogeを載せて、
ソース部にhoge.hをインクルードして定義する感じでつかいたんだけども……
試してみたけど動くんだけどなんか怖い
想像ではunique-ptr<class hoge>が前方宣言だと思ってたもので……
どこをどう調べればいいのかだけでも教えていただければ……
ヘッダー部の引数にclass unique-ptr<hoge>& uhogeを載せて、
ソース部にhoge.hをインクルードして定義する感じでつかいたんだけども……
試してみたけど動くんだけどなんか怖い
想像ではunique-ptr<class hoge>が前方宣言だと思ってたもので……
どこをどう調べればいいのかだけでも教えていただければ……
194はちみつ餃子 ◆8X2XSCHEME
2021/04/14(水) 18:34:21.63ID:VF/LllcQ >>191
テンプレートのインスタンス化は暗黙にやってくれるので基本的にはする必要がない。
どうしても宣言したいのなら
extern class unique_ptr<hoge>;
と書くことは可能。
ただし、このように宣言した場合には暗黙のインスタンス化は抑制されるので、
別の場所で明示的インスタンス化をしておく必要がある。
テンプレートの展開はその仕組み上、各翻訳単位ごとにやった上でリンク時に統合されるというクソみたいなことになってるので、
コンパイル時間を抑制したいなどの理由でこういった変なことになってる。
テンプレートのインスタンス化は暗黙にやってくれるので基本的にはする必要がない。
どうしても宣言したいのなら
extern class unique_ptr<hoge>;
と書くことは可能。
ただし、このように宣言した場合には暗黙のインスタンス化は抑制されるので、
別の場所で明示的インスタンス化をしておく必要がある。
テンプレートの展開はその仕組み上、各翻訳単位ごとにやった上でリンク時に統合されるというクソみたいなことになってるので、
コンパイル時間を抑制したいなどの理由でこういった変なことになってる。
195デフォルトの名無しさん
2021/04/14(水) 18:51:48.53ID:X49CrYgb ユニークポインタ自体の大きさが、ポインタだから4バイトくらいに統一されているのかな?
型テンプレートがどんな型でも、定義部分で明示してあればポインタ長のメモリをアロケートされているから、宣言自体はある程度の許容範囲があるということなのかな?
理解が違ってたらすいません
型テンプレートがどんな型でも、定義部分で明示してあればポインタ長のメモリをアロケートされているから、宣言自体はある程度の許容範囲があるということなのかな?
理解が違ってたらすいません
196デフォルトの名無しさん
2021/04/14(水) 19:01:58.75ID:IrZTmcl1197デフォルトの名無しさん
2021/04/14(水) 19:39:51.01ID:udtyfuhd 前方宣言というのはあくまで「こういう名前のこういう奴が(どっかに)いますよ」って言ってるだけ
実体がどんなサイズでどんな値やメンバやなんやかんやを持ってるかとかには関知しない
実体がどんなサイズでどんな値やメンバやなんやかんやを持ってるかとかには関知しない
198はちみつ餃子 ◆8X2XSCHEME
2021/04/14(水) 21:35:38.45ID:VF/LllcQ >>196
> 明示的インスタンス化しておけばコンパイル時間抑制できるの?
ちがうちがう。
extern のほう (宣言) が暗黙のインスタンス化を抑制するからコンパイル時間が短縮されることが期待できる。
でも、インスタンス化を抑制するんだからどこか別の翻訳単位に実体が存在する必要はあって、
それに明示的インスタンス化を使えるようになってるって話。
> 明示的インスタンス化しておけばコンパイル時間抑制できるの?
ちがうちがう。
extern のほう (宣言) が暗黙のインスタンス化を抑制するからコンパイル時間が短縮されることが期待できる。
でも、インスタンス化を抑制するんだからどこか別の翻訳単位に実体が存在する必要はあって、
それに明示的インスタンス化を使えるようになってるって話。
199デフォルトの名無しさん
2021/04/14(水) 22:23:18.21ID:IrZTmcl1 あーなるほどね、thx
200デフォルトの名無しさん
2021/04/14(水) 22:43:29.65ID:B6LD9tEC 今時コンパイル時間を稼ぐとかどうなの
201デフォルトの名無しさん
2021/04/14(水) 23:07:25.20ID:IrZTmcl1 リッチにテンプレート使いまくって一本ソフト書いてみ
まぁわかりやすいのはspiritとかのET使ったやつ、それを複数のソースファイルで使いまくればわかる
さらに言えば自分でそういうライブラリ書いて少しの変更でほぼフルビルドかかるのを体験すればわかるやろ
まぁわかりやすいのはspiritとかのET使ったやつ、それを複数のソースファイルで使いまくればわかる
さらに言えば自分でそういうライブラリ書いて少しの変更でほぼフルビルドかかるのを体験すればわかるやろ
202デフォルトの名無しさん
2021/04/15(木) 00:02:44.73ID:5MHywbxF >>200
今時コンパイル時間を気にしないほうが頭悪いわ。
今時コンパイル時間を気にしないほうが頭悪いわ。
203デフォルトの名無しさん
2021/04/15(木) 00:26:49.07ID:daBkAWQM いまいちメタプの必要性が理解できん
コンパイル時に決定してる値しか計算できないんでしょ
3の階乗は計算できるけど、ユーザーから入力された値の階乗は計算出来ないって・・・
だったらはなから6ってハードコーディングしとけ
コンパイル時に決定してる値しか計算できないんでしょ
3の階乗は計算できるけど、ユーザーから入力された値の階乗は計算出来ないって・・・
だったらはなから6ってハードコーディングしとけ
204はちみつ餃子 ◆8X2XSCHEME
2021/04/15(木) 00:38:40.10ID:FEj8Wx1j205デフォルトの名無しさん
2021/04/15(木) 00:54:46.36ID:3EsQmY5s >>203
こういう書き方出来たら便利なのにな、とかを無理矢理実現できるというロマンはある
(マクロと似たようなもんだが
プロパティみたいなことも一応出来るし
ただまぁ・・・労力に見合うか、というと散々だわマジで。
持て囃すようなものでは決してない(他人のふんどしでドヤりたい連中が持て囃してるだけ
こういう書き方出来たら便利なのにな、とかを無理矢理実現できるというロマンはある
(マクロと似たようなもんだが
プロパティみたいなことも一応出来るし
ただまぁ・・・労力に見合うか、というと散々だわマジで。
持て囃すようなものでは決してない(他人のふんどしでドヤりたい連中が持て囃してるだけ
206デフォルトの名無しさん
2021/04/15(木) 00:59:45.76ID:5MHywbxF >>203
まあ実際ビルドシステムを自分で構築するかコンパイラにやらせるかの違いしかない。
フーリエ変換の係数みたいなものを事前に設定するとかは少し便利かもね。
それなりに手計算すると大変だけれどそこまで本格的に計算時間がかからないような
事前計算できて使いまわせるようなものが念頭にあるんだろうが、まあそんなないわな。
まあ実際ビルドシステムを自分で構築するかコンパイラにやらせるかの違いしかない。
フーリエ変換の係数みたいなものを事前に設定するとかは少し便利かもね。
それなりに手計算すると大変だけれどそこまで本格的に計算時間がかからないような
事前計算できて使いまわせるようなものが念頭にあるんだろうが、まあそんなないわな。
207はちみつ餃子 ◆8X2XSCHEME
2021/04/15(木) 01:11:57.17ID:FEj8Wx1j 状況に応じてコードジェネレータを用意するよりはマシってくらいか。
208デフォルトの名無しさん
2021/04/15(木) 22:12:02.69ID:mdNAsIkh >>182
具体的に
具体的に
209デフォルトの名無しさん
2021/04/16(金) 05:29:55.48ID:EjuTOEDD >>208
?
?
210デフォルトの名無しさん
2021/04/16(金) 06:24:07.51ID:zpAq69hN >>209
?!
?!
211はちみつ餃子 ◆8X2XSCHEME
2021/04/16(金) 12:18:05.12ID:I3AyWR5p ヴィクトル・ユーゴーかよ。
212デフォルトの名無しさん
2021/04/17(土) 08:00:06.17ID:1dxAtZcl condition_variableってなんでこんなに面倒なんだ
winなら、イベントの方が高速だし楽で懐疑起床も起きないし
winなら、イベントの方が高速だし楽で懐疑起床も起きないし
213デフォルトの名無しさん
2021/04/17(土) 08:06:00.96ID:3mxJ/fRx214デフォルトの名無しさん
2021/04/17(土) 08:13:31.45ID:nI8O4VG/215デフォルトの名無しさん
2021/04/17(土) 08:49:19.47ID:1dxAtZcl216デフォルトの名無しさん
2021/04/17(土) 10:51:59.94ID:WHLcQryV おすすめ本ってありますか?
C言語のプログラムを、文法などカンニングしながら書けるレベルです。
C言語のプログラムを、文法などカンニングしながら書けるレベルです。
217デフォルトの名無しさん
2021/04/17(土) 13:30:52.06ID:l53+7OwH cppreference.comの何が不満かによる
218デフォルトの名無しさん
2021/04/17(土) 14:51:21.11ID:ohP60UMx それだけ読んで理解した奴なんておらんやろ。
219デフォルトの名無しさん
2021/04/17(土) 17:33:14.75ID:3mxJ/fRx プログラミングにカンニングという概念はない
常にオンラインヘルプなので正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約ぶ追従)は仕事の一部
常にオンラインヘルプなので正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約ぶ追従)は仕事の一部
220デフォルトの名無しさん
2021/04/17(土) 17:41:48.19ID:3mxJ/fRx 訂正
プログラミングにカンニングという概念はない
常にオンラインヘルプなどで正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約に追従)は仕事の一部
明確なコーディング規約がない場合にはなおのこと、カンニングが重要になる
プログラミングにカンニングという概念はない
常にオンラインヘルプなどで正確な仕様を確認しながら作業するのがプログラミングの常なので、
カンニング(仕様確認、他人の書いたコードをチラ見してコーディング規約に追従)は仕事の一部
明確なコーディング規約がない場合にはなおのこと、カンニングが重要になる
221デフォルトの名無しさん
2021/04/17(土) 18:08:39.80ID:LyWUtAnN RTTIなんかカンニングだろって個人的に思う
222デフォルトの名無しさん
2021/04/17(土) 19:10:13.22ID:3mxJ/fRx condition_variableに似た関数SleepConditionVariableCS()がWin32APIにも用意されてるけど、直感的で使いやすいのはcondition_variableでしょ
https://docs.microsoft.com/en-us/windows/win32/sync/using-condition-variables
https://docs.microsoft.com/en-us/windows/win32/sync/using-condition-variables
223デフォルトの名無しさん
2021/04/18(日) 10:59:46.23ID:lylRPiha 質問なのですが教えてくだちい
Q1. 64 bit符号付整数の積の結果をオーバーフロー無しで(128 bit等で)で得る方法
※ 64 bit整数を2^32進数2桁とみなして筆算する処理より速い方法キボン
SSE4.1可
Q2. (Q1にうまいやり方が無い場合)64 bit符号付整数の積がオーバーフローしたことを検知する方法
Q3. 多倍長整数(例えば8要素のunsigned longの配列として表された符号無し整数0〜2^256-1)
を10で割る方法orz
Q1. 64 bit符号付整数の積の結果をオーバーフロー無しで(128 bit等で)で得る方法
※ 64 bit整数を2^32進数2桁とみなして筆算する処理より速い方法キボン
SSE4.1可
Q2. (Q1にうまいやり方が無い場合)64 bit符号付整数の積がオーバーフローしたことを検知する方法
Q3. 多倍長整数(例えば8要素のunsigned longの配列として表された符号無し整数0〜2^256-1)
を10で割る方法orz
224デフォルトの名無しさん
2021/04/18(日) 11:05:45.65ID:lylRPiha Q2は現状a*bの前に std::abs(a) <= std::numeric_limit<int64_t>::max / std::abs(b) という判定をやっているのですが
もっと速いやつ(除算不要のやつ)キボン、
もっと速いやつ(除算不要のやつ)キボン、
225デフォルトの名無しさん
2021/04/18(日) 13:15:25.56ID:aOZ5UqSE226デフォルトの名無しさん
2021/04/18(日) 14:35:23.87ID:HGo0FTuj winならMultiply128、gccやclangなら__int128ってのが使えるみたいだけど
227デフォルトの名無しさん
2021/04/18(日) 15:14:50.22ID:regwJJSX 競技プログラミングではよくある質問
228デフォルトの名無しさん
2021/04/18(日) 17:15:30.07ID:B2k51TVB >>223
特定の環境ならアセンブラでやっちゃえば?
ちなみに環境は?
昔その辺の演算は良くやった
Q3は10の逆数を求めておいてかけ算命令でやるのが良いけど
多売長は何進数?
10で割るだけの為にバッファスキャンはもったいない
何かの演算とセットに出来ない?
もしやりたいことが2進多倍長の10進数化なら
もっと良い方法がある
特定の環境ならアセンブラでやっちゃえば?
ちなみに環境は?
昔その辺の演算は良くやった
Q3は10の逆数を求めておいてかけ算命令でやるのが良いけど
多売長は何進数?
10で割るだけの為にバッファスキャンはもったいない
何かの演算とセットに出来ない?
もしやりたいことが2進多倍長の10進数化なら
もっと良い方法がある
229デフォルトの名無しさん
2021/04/18(日) 17:17:36.41ID:B2k51TVB 環境 (CPU, OS)
多倍長の構成 (整数?指数部あり?2進?10進?変則?)
最終的に何がやりたいか
この辺がわかれば色々と教えられる
多倍長の構成 (整数?指数部あり?2進?10進?変則?)
最終的に何がやりたいか
この辺がわかれば色々と教えられる
>>223
>>225 も多倍長演算ですか、じゃ、私も私の多倍長演算を
https://mevius.5ch.net/test/read.cgi/tech/1434079972/37
>Q3. 多倍長整数を10で割る方法
であれば上のリンク先の line:383 から、std::ostream &operator<<(std::ostream &stream, mpz_base_class c) にて、ちょこっと工夫したつもりです、剰余は下位から確定する点では普通、ですので順序を逆にするのはアレかもしれませんが
>>225 も多倍長演算ですか、じゃ、私も私の多倍長演算を
https://mevius.5ch.net/test/read.cgi/tech/1434079972/37
>Q3. 多倍長整数を10で割る方法
であれば上のリンク先の line:383 から、std::ostream &operator<<(std::ostream &stream, mpz_base_class c) にて、ちょこっと工夫したつもりです、剰余は下位から確定する点では普通、ですので順序を逆にするのはアレかもしれませんが
231デフォルトの名無しさん
2021/04/18(日) 18:08:23.13ID:lylRPiha232デフォルトの名無しさん
2021/04/18(日) 18:32:04.62ID:2o2Y05bZ 多倍長÷32bitを除算命令を用いてやるのはアホ
233デフォルトの名無しさん
2021/04/18(日) 18:34:03.31ID:lylRPiha >>232
kwsk
kwsk
234デフォルトの名無しさん
2021/04/18(日) 19:14:51.87ID:2o2Y05bZ ヒント
除算は遅い
除算は逆数の乗算
定数の除算のコンパイル結果
除算は遅い
除算は逆数の乗算
定数の除算のコンパイル結果
235デフォルトの名無しさん
2021/04/18(日) 21:49:11.94ID:lylRPiha (聞くんじゃなかった…
236デフォルトの名無しさん
2021/04/18(日) 22:02:51.07ID:lylRPiha ちゅか10で割るのは10の剰余を知りたいからなのだというのは
言ってなかったわサーセン、orz
多倍長整数の10進数表現を得るために、多倍長整数を10で割って剰余を求める必要があった
この目的には誤差の見積や処置が面倒な方法はNGでありかつ
10進数化とかどうせ表示の時しか使わないのでこの割り算自体はそうメチャクチャチューニングする必要は
ありませぬ(と後出し
言ってなかったわサーセン、orz
多倍長整数の10進数表現を得るために、多倍長整数を10で割って剰余を求める必要があった
この目的には誤差の見積や処置が面倒な方法はNGでありかつ
10進数化とかどうせ表示の時しか使わないのでこの割り算自体はそうメチャクチャチューニングする必要は
ありませぬ(と後出し
237デフォルトの名無しさん
2021/04/18(日) 22:16:10.35ID:lylRPiha もしガチで全く除算を使わずに10進数に変換せよと言われたら
5*10^n、2*10^n、1*10^nを作ってnがデカい順に元の数と比較して引いていく、
ぐらいしかなさげ
知らんけど
5*10^n、2*10^n、1*10^nを作ってnがデカい順に元の数と比較して引いていく、
ぐらいしかなさげ
知らんけど
238デフォルトの名無しさん
2021/04/19(月) 00:09:37.42ID:cH3u5yp0 >>223
トンチンカンなこと聞いてたらすみませんが、Q1って多倍長整数を文字列で持ってカラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
トンチンカンなこと聞いてたらすみませんが、Q1って多倍長整数を文字列で持ってカラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
>>238
>カラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
これらは、オーダーは O(n^2) より下のクラスなので速いのはそのとおりですが、しかし使えるのは掛け算のときだけですね
まあ逆数を掛けるという意味では割り算も OK かもしれません、そして逆数計算は「単桁 vs 多桁」だから、オーダーは無視できますし
それはそうと、昔バグっていた例のペンティアムの除算アルゴリズムを解説してくれるサイトはないですかね‥‥
>カラツバ法とか高速フーリエ変換で計算するやり方だと「遅い」んですか?
これらは、オーダーは O(n^2) より下のクラスなので速いのはそのとおりですが、しかし使えるのは掛け算のときだけですね
まあ逆数を掛けるという意味では割り算も OK かもしれません、そして逆数計算は「単桁 vs 多桁」だから、オーダーは無視できますし
それはそうと、昔バグっていた例のペンティアムの除算アルゴリズムを解説してくれるサイトはないですかね‥‥
>>236
いいわすれましたが、商が高速に求められれば、剰余は 被除数−商×除数、で求めるものですし、多分高速除算・高速剰余計算は多分そうしているでしょうね
いいわすれましたが、商が高速に求められれば、剰余は 被除数−商×除数、で求めるものですし、多分高速除算・高速剰余計算は多分そうしているでしょうね
242デフォルトの名無しさん
2021/04/19(月) 00:33:03.64ID:cH3u5yp0 >>240
質問者は掛け算と10で割る (小数点以下は無視する割り算ですよね?) しか聞いてないので、掛け算さえできれば良くないですか?
質問者は掛け算と10で割る (小数点以下は無視する割り算ですよね?) しか聞いてないので、掛け算さえできれば良くないですか?
243デフォルトの名無しさん
2021/04/19(月) 00:37:49.63ID:cH3u5yp0 ああ、10で割るのはあまりを求めたいからって書いてあった
でも10で割った余りって1の位の数字ですよね?
そんな話じゃない?
でも10で割った余りって1の位の数字ですよね?
そんな話じゃない?
244デフォルトの名無しさん
2021/04/19(月) 00:39:51.82ID:cH3u5yp0 まあいいや
チューニングする必要はないって話なんで、わり算の話は置いといて、結局やりたいのは整数同士の掛け算ですよね?
チューニングする必要はないって話なんで、わり算の話は置いといて、結局やりたいのは整数同士の掛け算ですよね?
245デフォルトの名無しさん
2021/04/19(月) 00:45:58.97ID:r2ULphPG 質問者が情報を後出ししたりしていてイマイチ信用に欠けるので、普通の整数のように何でもできる多倍長整数がほしいのか掛け算さえできればOKなのかは不明
247デフォルトの名無しさん
2021/04/19(月) 00:49:32.73ID:cH3u5yp0 >>247
最初から10進で数値を持つと、加減算ですら速度が低下します
10進化の頻度は各種演算の頻度よりも少ない、というか、演算を何千回・何万回した最後に 10 進に変換する、かもしれない、っていう状況で、最初から 10 進で持つのは無駄以外の何ものでもないかと
それに32bit までは BCD 補正命令がありましたが 64 bit の今は BCD 補正命令(AAA とかね)ですら削除されちゃっていますし
最初から10進で数値を持つと、加減算ですら速度が低下します
10進化の頻度は各種演算の頻度よりも少ない、というか、演算を何千回・何万回した最後に 10 進に変換する、かもしれない、っていう状況で、最初から 10 進で持つのは無駄以外の何ものでもないかと
それに32bit までは BCD 補正命令がありましたが 64 bit の今は BCD 補正命令(AAA とかね)ですら削除されちゃっていますし
249デフォルトの名無しさん
2021/04/19(月) 02:16:04.24ID:hAOdtYDs >>248
質問者は加減算はするんですか?
質問者は加減算はするんですか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★5 [蚤の市★]
- 93年ジャップ「外米なんて不味くて嫌だ、高くても日本米食わせろ!」今ジャップ「日本米なんて高くて嫌だ、安い外米食わせろ!」 [616817505]
- 日本人のおでん離れ。作る回数減った30.1%🍢 [256556981]
- 覚醒がとまらない橋下徹氏、今日もド正論を繰り返す「そもそも言わせてもらうけど中国機のレーダーだって高市のせいだろ!😡」 [339712612]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 【妄想】石破元総理、高市自民に完全に愛想を尽かして造反…か? [517791167]
