次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part139
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f65b-zn+7)
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0340デフォルトの名無しさん (エムゾネ FF8a-yU1x)
2018/10/24(水) 23:47:52.54ID:VdYWesL2F dir.exe とかはどうだろう
341デフォルトの名無しさん (エムゾネ FF8a-yU1x)
2018/10/24(水) 23:49:12.41ID:VdYWesL2F342デフォルトの名無しさん (エムゾネ FF8a-yU1x)
2018/10/24(水) 23:49:46.74ID:VdYWesL2F cmd.exe か
343デフォルトの名無しさん (アウアウウー Sa2f-lMT5)
2018/10/25(木) 00:27:44.75ID:pvv+BGAWa ©
344デフォルトの名無しさん (ワッチョイ ab80-+4k5)
2018/10/25(木) 01:10:25.04ID:ZE3NVml10 文字実体参照・数値文字参照なら、コマンドが実行されて、5ch サーバーをハッキングされる事もない
cmd.exe
dot, period は、ascii コード、46 (0x2E)
cmd.exe
dot, period は、ascii コード、46 (0x2E)
345デフォルトの名無しさん (オイコラミネオ MM4b-1gj4)
2018/10/25(木) 01:38:31.34ID:AmP2wyvxM ☝
346デフォルトの名無しさん (JP 0H4b-q7gB)
2018/10/25(木) 11:03:54.05ID:S9429CZWH 戻り値がオブジェクトの関数書きました。
すると上司が、変更があったとき不具合の原因になるからポインタで返せと。
これ本当でしょうか。stackoverflowとか覗いてるんですがオブジェクトで返すかスマポで返すかみたいな論調ばかりです。
少なくとも生ポインタ使えという意見は見当たりません。
(生)ポインタ使ったほうがいいケースというのは実際にあるんでしょうか。
すると上司が、変更があったとき不具合の原因になるからポインタで返せと。
これ本当でしょうか。stackoverflowとか覗いてるんですがオブジェクトで返すかスマポで返すかみたいな論調ばかりです。
少なくとも生ポインタ使えという意見は見当たりません。
(生)ポインタ使ったほうがいいケースというのは実際にあるんでしょうか。
347デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/25(木) 11:14:40.21ID:5Cy/pQlUF348デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/25(木) 11:14:58.15ID:5Cy/pQlUF ああ
もちろんスマポは否定しない
もちろんスマポは否定しない
349デフォルトの名無しさん (ワッチョイ f323-JHIh)
2018/10/25(木) 11:19:20.78ID:UTTFABgo0350デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/25(木) 11:36:26.68ID:kug3Loto0 c++ の標準のスマートポインタでは循環参照を持つもの、
例えば get_child() と get_parent() を持つような木構造やリスト構造は扱えない
で、大抵の場合これらは単に生ポインタで実装される。
例えば get_child() と get_parent() を持つような木構造やリスト構造は扱えない
で、大抵の場合これらは単に生ポインタで実装される。
351はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/25(木) 11:52:04.34ID:ytpwmPM20 >>346
C++ のミスりやすい箇所ってのはメモリ管理が多くを占めるので、
生ポインタは面倒くさいわってのが普通の感覚だと思うし、
不具合の原因になるってのはよくわからん言い分なので、
もっと掘り下げて聞かないとなんとも言えん。
共有オブジェクト (DLL) のインターフェイスにする場合なんかだと
ABI の都合とかでおかしなことになったりすることもあるかもしれんなぁ
みたいな可能性を想像することは出来るが、
書いてるプログラムや開発環境の性質に固有の事情はわからん。
一般的には、生ポインタにせざるを得ないことは有っても生ポインタの方が良いってことはあんまりなさそう。
C++ のミスりやすい箇所ってのはメモリ管理が多くを占めるので、
生ポインタは面倒くさいわってのが普通の感覚だと思うし、
不具合の原因になるってのはよくわからん言い分なので、
もっと掘り下げて聞かないとなんとも言えん。
共有オブジェクト (DLL) のインターフェイスにする場合なんかだと
ABI の都合とかでおかしなことになったりすることもあるかもしれんなぁ
みたいな可能性を想像することは出来るが、
書いてるプログラムや開発環境の性質に固有の事情はわからん。
一般的には、生ポインタにせざるを得ないことは有っても生ポインタの方が良いってことはあんまりなさそう。
352デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/25(木) 12:00:30.29ID:kug3Loto0 ファクトリー関数は生ポインタ返すように作るのが良いと思う
353デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/25(木) 12:24:55.50ID:5Cy/pQlUF たしかにどこも指してない参照を返したいときは
NULLポ使えるポインタ返しにする
ダミーの空オブジェクト作れるように
C++が最初からルートオブジェクト基底してくれてればよかったのにと思うことはある
NULLポ使えるポインタ返しにする
ダミーの空オブジェクト作れるように
C++が最初からルートオブジェクト基底してくれてればよかったのにと思うことはある
354デフォルトの名無しさん (ワッチョイ c9c3-d2wE)
2018/10/25(木) 12:31:40.62ID:O+EPl0Ul0 struct Point{int x; int y;};
みたいな単純なPOD構造体をstructだからって教条的にいちいちnewとポインタで取り回してるプログラムは時々見かけるけど
そういうのは危ないし遅いしウザいからやめてほしい
みたいな単純なPOD構造体をstructだからって教条的にいちいちnewとポインタで取り回してるプログラムは時々見かけるけど
そういうのは危ないし遅いしウザいからやめてほしい
355デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/25(木) 12:36:58.91ID:kug3Loto0 そんなの参照と値渡しでいいということには同意するが
point 型を new / delete してるコード見た経験はないな
point 型を new / delete してるコード見た経験はないな
356デフォルトの名無しさん (ワッチョイ 17b3-LdhF)
2018/10/25(木) 13:10:30.18ID:CpJhCfWv0 >>346の上司が言ってるのは、コピーコンストラクトや代入が正しく機能するということを
保証しなくちゃならなくなるから、ってことだろ
そこまで気にかけてる暇はないし、生ポで書くのが一般的な職場だというならそれに倣うしかない
保証しなくちゃならなくなるから、ってことだろ
そこまで気にかけてる暇はないし、生ポで書くのが一般的な職場だというならそれに倣うしかない
357デフォルトの名無しさん (スプッッ Sddb-VFcb)
2018/10/25(木) 13:17:16.94ID:qRFZNeCrd そういえば俺コピー不可のクラス書いてもちゃんと private だ何だで実際に代入できないようにしてないな…
358デフォルトの名無しさん (ワッチョイ f323-JHIh)
2018/10/25(木) 15:12:05.05ID:UTTFABgo0 コピー不可で思い出したけど、コピーコンストラクタと代入演算子をprivateにしたクラスを
vectorにpush_back()する記述がコンパイルエラーになるよね。
vector<Hoge> hogeVec;
hogeVec.push_back(Hoge()); // コンパイルエラー
これってどうすればいいの?
vectorにpush_back()する記述がコンパイルエラーになるよね。
vector<Hoge> hogeVec;
hogeVec.push_back(Hoge()); // コンパイルエラー
これってどうすればいいの?
359デフォルトの名無しさん (ワッチョイ a17f-7TBo)
2018/10/25(木) 15:24:01.65ID:GHCvVeSE0 emplace_back使うとか
360デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/25(木) 15:28:42.80ID:5Cy/pQlUF friend
361はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/25(木) 16:12:31.55ID:ytpwmPM20 >>358
std::vector の要素は CopyAssignable と CopyConstructible の要件を満たす必要がある。
実際、 std::vector は内部で要素をコピーしたり代入したりすることがあるんだから、
それが出来ない要素を入れられないのは当たり前の話で、
コンテナに入れるならポインタ (上記要件を満たすスマートポインタでもよい) を入れるようにするくらいしか方法はないと思う。
std::vector の要素は CopyAssignable と CopyConstructible の要件を満たす必要がある。
実際、 std::vector は内部で要素をコピーしたり代入したりすることがあるんだから、
それが出来ない要素を入れられないのは当たり前の話で、
コンテナに入れるならポインタ (上記要件を満たすスマートポインタでもよい) を入れるようにするくらいしか方法はないと思う。
362デフォルトの名無しさん (ワッチョイ 0beb-JHIh)
2018/10/25(木) 19:22:18.01ID:Xzu40Yvw0 >>358
ムーブしてもいいならムーブコンストラクタと代入演算子を定義すれば行けないかな
ムーブしてもいいならムーブコンストラクタと代入演算子を定義すれば行けないかな
363デフォルトの名無しさん (ワッチョイ f323-VFcb)
2018/10/25(木) 19:29:07.62ID:wLNEFoo10 どうせ所有権意識して std::move を使うなら個々のクラスには
手を加えず unique_ptr かますのが楽じゃないかな
手を加えず unique_ptr かますのが楽じゃないかな
364はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/25(木) 20:30:19.71ID:ytpwmPM20365デフォルトの名無しさん (ワッチョイ 0beb-JHIh)
2018/10/25(木) 20:44:45.18ID:Xzu40Yvw0366デフォルトの名無しさん (オッペケ Srb5-H+Zc)
2018/10/25(木) 23:00:25.21ID:ZDfhcJz3r リストのイテレータ使って周期的な処理をしたいんだが、そういう使い方合ってる?
N 要素のリストのイテレータ it = s.begin() を N 回インクリメントしたら、it はルート(?)を指すわけだが、そうじゃなくて s.begin() と同じところを指してほしい
こういう場合、どうしたら良いだろうか
N 要素のリストのイテレータ it = s.begin() を N 回インクリメントしたら、it はルート(?)を指すわけだが、そうじゃなくて s.begin() と同じところを指してほしい
こういう場合、どうしたら良いだろうか
367デフォルトの名無しさん (ワッチョイ 5b5b-F79V)
2018/10/25(木) 23:40:18.35ID:NT+vxu3F0 くるくる回るシングルリンクリストを自前でこしらえたほうが手っ取り早いと思うけど、
https://www.boost.org/doc/libs/1_65_1/doc/html/circular_buffer.html
https://www.boost.org/doc/libs/1_65_1/doc/html/circular_buffer.html
368デフォルトの名無しさん (ワッチョイ 1d80-SUE8)
2018/10/25(木) 23:59:33.84ID:ZWxqLT/20 スアホポインタみたいな頭ワルイの使うぐらなら
C++なんかつかわなければいいのに
低学歴知恵遅れは新しいもんができると
使わないといけないという使命感があるらしい
低学歴知恵遅れは自分で要否が判断できない
C++なんかつかわなければいいのに
低学歴知恵遅れは新しいもんができると
使わないといけないという使命感があるらしい
低学歴知恵遅れは自分で要否が判断できない
369デフォルトの名無しさん (ワッチョイ c9c3-d2wE)
2018/10/26(金) 00:05:29.09ID:q2UMXiCp0 そうだね痴呆おじいちゃんには7年前に標準化された最新機能は難しすぎるから仕方ないね
半角に限らず今でもウヨウヨいるからあんまり笑い事じゃないんだけど
半角に限らず今でもウヨウヨいるからあんまり笑い事じゃないんだけど
370デフォルトの名無しさん (ワッチョイ 1d80-SUE8)
2018/10/26(金) 00:08:04.60ID:7cGNdWT70 あんのが難しい?
知恵遅れは頭ワルイシロモノを使ってる自覚がないからな
低学歴知恵遅れはアレで難しいもん使ってるつもりでいんのか
へー
知恵遅れは頭ワルイシロモノを使ってる自覚がないからな
低学歴知恵遅れはアレで難しいもん使ってるつもりでいんのか
へー
371デフォルトの名無しさん (オッペケ Srb5-H+Zc)
2018/10/26(金) 00:12:31.03ID:xVkfT4g2r372はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/26(金) 01:29:12.07ID:D2okE+fs0373デフォルトの名無しさん (ワッチョイ 17b3-LdhF)
2018/10/26(金) 11:08:50.27ID:R8qtZuY20 うろ覚えで>>364みたいなこと断言してたのかよ
自分の記憶を疑う癖つけた方がいいよマジで
自分の記憶を疑う癖つけた方がいいよマジで
374はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/26(金) 13:04:49.03ID:D2okE+fs0 >>373
いや、このサイトを見て確認はしたんだよ。
https://ja.cppreference.com/w/cpp/container/vector
ただ、 「C++11 以前」という書き方になってたから、前後を見ずに C++11 は含むのだと思ったし、
(現在の最新ではないとはいえ) C++11 くらいには配慮すべきだろうなっていう前提で言ってたの。
でも、ちゃんと仕様を確認したら「C++11 以前」は C++11 を含まないことに気づいたって次第。
いや、このサイトを見て確認はしたんだよ。
https://ja.cppreference.com/w/cpp/container/vector
ただ、 「C++11 以前」という書き方になってたから、前後を見ずに C++11 は含むのだと思ったし、
(現在の最新ではないとはいえ) C++11 くらいには配慮すべきだろうなっていう前提で言ってたの。
でも、ちゃんと仕様を確認したら「C++11 以前」は C++11 を含まないことに気づいたって次第。
375デフォルトの名無しさん (ワッチョイ 17b3-LdhF)
2018/10/26(金) 14:50:04.44ID:R8qtZuY20 あー、確かにあれは紛らわしいかもね・・
でもすぐ近くに「C++11およびそれ以降」ってあるしな
でもすぐ近くに「C++11およびそれ以降」ってあるしな
376デフォルトの名無しさん (ワッチョイ a161-o1DS)
2018/10/29(月) 12:48:55.53ID:oLCvh0eX0 Cとhaskellはどちらがどれくらい速いですか?
377デフォルトの名無しさん (ワントンキン MM3b-uH1J)
2018/10/29(月) 12:50:29.22ID:cH/HmFkLM たらい回し関数でも作って遊んでろ
378デフォルトの名無しさん (ワッチョイ a161-o1DS)
2018/10/29(月) 15:30:56.80ID:oLCvh0eX0 STLのリストは要素を挿入するごとにメモリーの割り当てが起こるのか一度に割り当てられている場所に
なのかどちらですか?
なのかどちらですか?
379デフォルトの名無しさん (ワッチョイ bfe0-wSaz)
2018/10/29(月) 17:02:30.38ID:AJZhbohO0 規格は要素ごとに割り当てるのを想定してるだろうけど
例えば10個分まとめて、みたいな実装もOKじゃないかな……
挿入削除やイテレータの++がO(1)みたいな各種要件さえ満たしてれば
例えば10個分まとめて、みたいな実装もOKじゃないかな……
挿入削除やイテレータの++がO(1)みたいな各種要件さえ満たしてれば
380デフォルトの名無しさん (ワントンキン MM3b-uH1J)
2018/10/29(月) 18:06:21.97ID:cH/HmFkLM vectorならともかく、そんな実装するってメリットがあまり無い気が
381はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/29(月) 18:28:09.22ID:wGJRVi/I0 メモリのローカリティを維持できれば性能がよくなる可能性もあるんじゃね?
382デフォルトの名無しさん (スップ Sd37-VFcb)
2018/10/29(月) 19:36:47.21ID:oZEcP9DNd >>380
メモリのアロケーションは意外にコスト高いからまとめてアロケートしておいて
node を用意するときにそこから placement new とかして使ってゆくと高速になる
リストのノードに限らず、プロファイル取って new が時間
食ってるときにオブジェクトについてはこれで簡易に改善できる
最近はデフォルトのアロケータが高性能で意味がないこともあるけど
メモリのアロケーションは意外にコスト高いからまとめてアロケートしておいて
node を用意するときにそこから placement new とかして使ってゆくと高速になる
リストのノードに限らず、プロファイル取って new が時間
食ってるときにオブジェクトについてはこれで簡易に改善できる
最近はデフォルトのアロケータが高性能で意味がないこともあるけど
383デフォルトの名無しさん (スップ Sd37-VFcb)
2018/10/29(月) 19:40:02.85ID:oZEcP9DNd 続き
解放も一気にしないと面倒なので基本追加一方で不要になったら全部消すみたいな場合に使う
巨大 xml の dom を作って、不要になったら全解放みたいなとき。
解放も一気にしないと面倒なので基本追加一方で不要になったら全部消すみたいな場合に使う
巨大 xml の dom を作って、不要になったら全解放みたいなとき。
384デフォルトの名無しさん (ワッチョイ 5bf6-JHIh)
2018/10/29(月) 22:12:03.67ID:88V2EdRw0 大きいデータだと何十万回、何百万回もnewしなくちゃいけないようなクラスは
1メガくらいまとめてnew [] したほうが絶対いい。
実行時間比較すればわかるけど、かなり高速になる。
1メガくらいまとめてnew [] したほうが絶対いい。
実行時間比較すればわかるけど、かなり高速になる。
385デフォルトの名無しさん (ワッチョイ 5315-7TBo)
2018/10/29(月) 22:12:56.73ID:JnF9Re6Y0 1メガくらいという根拠の薄いマジックナンバーに依存する糞コード
386デフォルトの名無しさん (ワッチョイ 5bf6-JHIh)
2018/10/29(月) 22:36:16.47ID:88V2EdRw0 >>385
当然、実装するときは、まとめて確保するメモリ量は指定できるように作るのが当たり前。
いちいちそんなこと言わなくてもみんなわかると思って、例えば1メガという意図で「1メガくらい」
と書いたが、バカには伝わなかったみたいだな
当然、実装するときは、まとめて確保するメモリ量は指定できるように作るのが当たり前。
いちいちそんなこと言わなくてもみんなわかると思って、例えば1メガという意図で「1メガくらい」
と書いたが、バカには伝わなかったみたいだな
387デフォルトの名無しさん (ワッチョイ 5315-7TBo)
2018/10/29(月) 22:38:25.00ID:JnF9Re6Y0 で、1メガという定量的な根拠は? いくら罵倒しても自動的には出てこないぞ
388デフォルトの名無しさん (ワッチョイ 3bcd-uH1J)
2018/10/29(月) 22:40:37.61ID:YGs2BWq10 パフォーマンスを求めるシーンでダブルリンクリストって
389デフォルトの名無しさん (スップ Sd37-VFcb)
2018/10/30(火) 00:35:43.38ID:0KkuIlNzd ダブルかどうかは知らんが深さが不定の木構造なら仕方ない
んでメモリ確保はn個まとめればアロケーションコストはほぼ1/nになるんで
10とか100で十分で別にそんなに増やす必要はない
が、大量にアロケートするときしか使わない手法なので1000とか大きな数にするのが人の情
んでメモリ確保はn個まとめればアロケーションコストはほぼ1/nになるんで
10とか100で十分で別にそんなに増やす必要はない
が、大量にアロケートするときしか使わない手法なので1000とか大きな数にするのが人の情
390デフォルトの名無しさん (ワッチョイ 4f8a-cZbQ)
2018/10/30(火) 09:09:19.02ID:/5i0cROz0 何百万回もnewする想定なのに1メガでいいの?
391デフォルトの名無しさん (ワッチョイ f323-JHIh)
2018/10/30(火) 10:54:57.24ID:aDKxpfal0 まあnewするクラスのサイズによるだろ
サイズが100バイトのクラスなら1メガでもnewの回数が一万分の1になるので効果はありそう
サイズが100バイトのクラスなら1メガでもnewの回数が一万分の1になるので効果はありそう
392はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/30(火) 11:32:05.07ID:/tj4m1Wy0 データ構造全体でどれくらいの大きさになるのか事前に見積もれればいいんだけどね。
ガチでチューニングしようと思ったら
各アプリケーションでのメモリの使い方の特性を考慮しなきゃならんし、
パラメータの微調整は実際にやって試してみるしかしょうがない。
ガチでチューニングしようと思ったら
各アプリケーションでのメモリの使い方の特性を考慮しなきゃならんし、
パラメータの微調整は実際にやって試してみるしかしょうがない。
393デフォルトの名無しさん (ワッチョイ f323-JHIh)
2018/10/30(火) 12:17:01.56ID:aDKxpfal0 >>392
>データ構造全体でどれくらいの大きさになるのか事前に見積もれればいいんだけどね。
そうだな
実行開始して何時間も待たされた挙句、メモリ不足でエラー終了とかマジ勘弁して欲しいわ
最初に使用メモリ量を予測してエラーにしてくれよ
>データ構造全体でどれくらいの大きさになるのか事前に見積もれればいいんだけどね。
そうだな
実行開始して何時間も待たされた挙句、メモリ不足でエラー終了とかマジ勘弁して欲しいわ
最初に使用メモリ量を予測してエラーにしてくれよ
394デフォルトの名無しさん (ワンミングク MM1b-uH1J)
2018/10/30(火) 14:48:22.73ID:bp+Jjz8rM 今時はメモリエラーなんて出さずに延々確保しにいってスラッシングしまくるだけ
395デフォルトの名無しさん (ワイーワ2 FF33-gZJR)
2018/10/30(火) 15:06:52.69ID:p4LrBCE7F396デフォルトの名無しさん (ワッチョイ c7eb-nLkq)
2018/10/30(火) 16:22:00.39ID:YIrhnuea0 2^N+αの方がいいぞ
397デフォルトの名無しさん (ワッチョイ a3ef-7TBo)
2018/10/30(火) 21:01:00.62ID:Z4vjmLqM0 >>395
テキトーの用語の使い方を間違っているな
テキトーの用語の使い方を間違っているな
398デフォルトの名無しさん (オイコラミネオ MM4b-x1Ry)
2018/10/31(水) 00:35:59.17ID:7q2lQPFCM 適当には適切という意味もあるんやで
399デフォルトの名無しさん (ワッチョイ 7fb3-7TBo)
2018/10/31(水) 00:55:16.82ID:n3cdWN/k0 jemallocのデフォルトチャンクサイズは1MiBらしいな
経験的に悪くない数字なんだろう
経験的に悪くない数字なんだろう
400デフォルトの名無しさん (ワッチョイ bbbd-x3RP)
2018/10/31(水) 00:55:23.06ID:2bLA79Ru0 一気解放テクというのはN億個のオブジェクトをフルスピードで作って10秒かかったとして、
破棄するときもバカ正直に10秒かけるつもりなのかとかそういう話だが
オブジェクトがリソースを所有しておりデストラクトを要するブツだったりすると
オブジェクトの占有メモリだけ一気に解放することはできないから成立しない
というわけでコンパイラの中で構文解析結果であるところの木構造を破棄するのにお目にかかるぐらい
なキモス
破棄するときもバカ正直に10秒かけるつもりなのかとかそういう話だが
オブジェクトがリソースを所有しておりデストラクトを要するブツだったりすると
オブジェクトの占有メモリだけ一気に解放することはできないから成立しない
というわけでコンパイラの中で構文解析結果であるところの木構造を破棄するのにお目にかかるぐらい
なキモス
401はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-7TBo)
2018/10/31(水) 01:44:07.13ID:y5TVZzW10 ソースコードを読んだわけじゃないが、
ウェブサーバの H2O はドカンと大きいメモリを確保して頭から順番に使っていくという戦略を取ってるのでクソ速いというのを
どこかで見た覚えがあるな。
ウェブサーバならセッションが基本単位と考えれば、
セッション開始時に大きいメモリを確保してセッション終了でまるっと捨てるというのは確かに理にかなった方針だと思う。
ウェブサーバの H2O はドカンと大きいメモリを確保して頭から順番に使っていくという戦略を取ってるのでクソ速いというのを
どこかで見た覚えがあるな。
ウェブサーバならセッションが基本単位と考えれば、
セッション開始時に大きいメモリを確保してセッション終了でまるっと捨てるというのは確かに理にかなった方針だと思う。
402デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/31(水) 03:43:29.87ID:dHrKLKTO0 >>400
いやnewもdeleteもインプレイスでやるからメモリの確保と解放はまとめてできるんだ
んでコンストラクタとデストラクタはどっちにせよ必要なので、メモリの確保と解放が問題なんだよ
で、指摘の通り
メンバ変数がまたメモリを確保/解放してるとご利益がぐっと薄れるので
まとめて確保を使い始めるとベクターだなんだもショートストリング最適化みたいな
小サイズなら静的に確保したメモリを使うようなテクニックを使い始める。
LLVM の SmallVector やそれを基にした boost の smallvector なんかがそれか
いやnewもdeleteもインプレイスでやるからメモリの確保と解放はまとめてできるんだ
んでコンストラクタとデストラクタはどっちにせよ必要なので、メモリの確保と解放が問題なんだよ
で、指摘の通り
メンバ変数がまたメモリを確保/解放してるとご利益がぐっと薄れるので
まとめて確保を使い始めるとベクターだなんだもショートストリング最適化みたいな
小サイズなら静的に確保したメモリを使うようなテクニックを使い始める。
LLVM の SmallVector やそれを基にした boost の smallvector なんかがそれか
403デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/31(水) 03:44:09.76ID:dHrKLKTO0 boost のは small_vector の typo
404デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/31(水) 05:48:21.49ID:dHrKLKTO0 まとめてアロケートするコードのテストコードを書いてみた
簡単なリストのアロケーションと解放
100個ずつと1000個ずつではだいぶ違った
1000を10000にしても大差ない
https://ideone.com/oyIM5p
簡単なリストのアロケーションと解放
100個ずつと1000個ずつではだいぶ違った
1000を10000にしても大差ない
https://ideone.com/oyIM5p
405デフォルトの名無しさん (ワッチョイ 2723-VFcb)
2018/10/31(水) 07:57:39.93ID:dHrKLKTO0 上の例はリストのノードにstring を持たせているが、
これをvectorにするだけで高速化の倍率はひどく悪化する。
https://ideone.com/k6XiHK
string は SSO(ショートストリング最適化)で小サイズならメモリのアロケートを行わないが、
vector はサイズ1でも必ずアロケートするため。
これをvectorにするだけで高速化の倍率はひどく悪化する。
https://ideone.com/k6XiHK
string は SSO(ショートストリング最適化)で小サイズならメモリのアロケートを行わないが、
vector はサイズ1でも必ずアロケートするため。
406デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/31(水) 13:42:46.70ID:XAA9QXm2F vector禁止
407デフォルトの名無しさん (ワンミングク MM1b-uH1J)
2018/10/31(水) 15:36:31.08ID:wG8+54SGM よーしパパbitset使っちゃうぞ
408デフォルトの名無しさん (ワッチョイ cb1b-ALmr)
2018/10/31(水) 17:52:51.32ID:HGEk6qvJ0 opencv(c++)で適当な画像をDCTしてDCT係数をテキストファイルにプログラムを教えていただけませんでしょうか。
画像をDCTするとこまでは分かったんですがそのあとが分からないです。
画像をDCTするとこまでは分かったんですがそのあとが分からないです。
409デフォルトの名無しさん (ワッチョイ cb1b-ALmr)
2018/10/31(水) 17:53:54.59ID:HGEk6qvJ0 >>408
テキストファイルに表示するです
テキストファイルに表示するです
410デフォルトの名無しさん (ワッチョイ 1f8a-3mJb)
2018/10/31(水) 18:14:35.77ID:N9TdgOC+0 日本語でOK
411デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/31(水) 18:23:30.41ID:XAA9QXm2F >適当な画像をDCTしてDCT係数をテキストファイルにプログラム
日本語で
日本語で
412デフォルトの名無しさん (ワッチョイ cb1b-ALmr)
2018/10/31(水) 18:28:26.25ID:HGEk6qvJ0 >>408
もう1回書きますがテキストファイルに書き出すです
もう1回書きますがテキストファイルに書き出すです
413デフォルトの名無しさん (アウウィフ FFb3-gZJR)
2018/10/31(水) 18:30:01.31ID:XAA9QXm2F ファイルに表示
414デフォルトの名無しさん (バッミングク MM1f-DBFP)
2018/10/31(水) 18:44:17.50ID:YG0rnI8eM OSが分からんが、一番楽チンであれこれ考えなくて良いのは普通にprintfしてファイルにリダイレクト。
415デフォルトの名無しさん (ワッチョイ cb1b-ALmr)
2018/10/31(水) 21:27:56.35ID:HGEk6qvJ0 windowsです
416デフォルトの名無しさん (ワンミングク MM1b-uH1J)
2018/10/31(水) 22:31:25.44ID:wG8+54SGM dctは出来るのにストリームへの出力は出来ないのか
417デフォルトの名無しさん (ワッチョイ 0beb-JHIh)
2018/10/31(水) 22:34:24.39ID:Cti468/q0 ofstreamでファイル開いて<<で出力
ascii文字だけなら文字コード気にしなくてもいい
ascii文字だけなら文字コード気にしなくてもいい
418デフォルトの名無しさん (ワッチョイ 971b-cEKd)
2018/11/01(木) 01:13:06.51ID:PigZrB5P0 DCT係数が配列に格納されているんですがそのすべてを書き出すのができないです
419デフォルトの名無しさん (ワッチョイ a323-WkUi)
2018/11/01(木) 10:51:44.25ID:z733lC2q0 >>416
https://twitter.com/Campaign_Otaku/status/1057156200981135361/photo/1
空で字描ける人が着陸の仕方を「どうやるの」なんて疑問は出てくるはずがない。
「どういう風に降りようかな」って意味なら判る。
完全に誤訳
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/Campaign_Otaku/status/1057156200981135361/photo/1
空で字描ける人が着陸の仕方を「どうやるの」なんて疑問は出てくるはずがない。
「どういう風に降りようかな」って意味なら判る。
完全に誤訳
https://twitter.com/5chan_nel (5ch newer account)
420デフォルトの名無しさん (スッップ Sdba-7j1p)
2018/11/01(木) 20:17:49.41ID:Pz4tYpgEd421デフォルトの名無しさん (ワッチョイ 63b3-MyS3)
2018/11/01(木) 20:42:34.69ID:yQbjy7jF0 C言語は高校・大学の頃やったので大体わかります
今更ですがC++勉強するのに良い教材は何でしょうか?
本が良いですがもっと良い方法がありましたらそれでも良いです
今更ですがC++勉強するのに良い教材は何でしょうか?
本が良いですがもっと良い方法がありましたらそれでも良いです
422デフォルトの名無しさん (スッップ Sdba-7j1p)
2018/11/01(木) 20:56:14.21ID:Pz4tYpgEd423デフォルトの名無しさん (ワッチョイ 769f-zz8P)
2018/11/02(金) 00:38:53.71ID:YtkatxxE0 effective c++とか
424デフォルトの名無しさん (ワッチョイ 3685-DqXg)
2018/11/02(金) 00:55:59.17ID:bpaiY9An0 C++ってnumpyみたいに2次元配列から範囲を指定して抜き出しとか出来ないですかね?
10, 20, 30, 40, 50
60, 70, 80, 90, 100
110, 120, 130, 140, 150
160, 170, 180, 190, 200
このようなvectorがあった際に
70, 80, 90
120, 130, 140
170, 180, 190
を抜き出したいです
10, 20, 30, 40, 50
60, 70, 80, 90, 100
110, 120, 130, 140, 150
160, 170, 180, 190, 200
このようなvectorがあった際に
70, 80, 90
120, 130, 140
170, 180, 190
を抜き出したいです
425デフォルトの名無しさん (ワッチョイ 5b80-Q1ft)
2018/11/02(金) 01:08:54.86ID:KoqyjIsr0 equal_rangeを使う
426デフォルトの名無しさん (ワッチョイ 0723-7j1p)
2018/11/02(金) 01:34:41.33ID:T61e9sN/0 >>424
自分で書きたくないならあり物のライブラリ使えばいいのでは
よく知らんけど opencv の Mat とか BLAS とか
https://minus9d.hatenablog.com/entry/2014/03/21/114514
自分で書きたくないならあり物のライブラリ使えばいいのでは
よく知らんけど opencv の Mat とか BLAS とか
https://minus9d.hatenablog.com/entry/2014/03/21/114514
427デフォルトの名無しさん (オッペケ Srbb-V8Cv)
2018/11/02(金) 01:58:52.59ID:CMIkY+8nr boost の multi_array でできる
かなり調べた結果これに行き着いたから、他のを見つけるのは至難の業だと思う
かなり調べた結果これに行き着いたから、他のを見つけるのは至難の業だと思う
428デフォルトの名無しさん (オッペケ Srbb-V8Cv)
2018/11/02(金) 02:00:44.27ID:CMIkY+8nr まぁ2次元配列に限るなら正直 vectorのvector でそういう動作するもの簡単に作れるよね
429デフォルトの名無しさん (ワッチョイ 0723-7j1p)
2018/11/02(金) 04:22:50.02ID:T61e9sN/0 普通こういうものの部分行列はデータをコピーしないで動作するんだよ。用途によるけどだいたいは。
430デフォルトの名無しさん (ワッチョイ 63b3-URqd)
2018/11/02(金) 09:58:57.11ID:UBXHQBH/0 >>423
質問者に合ってると思うか?
質問者に合ってると思うか?
431デフォルトの名無しさん (ワッチョイ 9723-VEUj)
2018/11/02(金) 16:44:40.29ID:ggr9EF3w0 >>424
C++ から python も numpy も使える
C++ から python も numpy も使える
432デフォルトの名無しさん (ワッチョイ 9a76-MyS3)
2018/11/02(金) 21:55:06.47ID:yMnDBJfs0 >>424
vectorではなくvalarrayの使いどころだ
vectorではなくvalarrayの使いどころだ
433デフォルトの名無しさん (オッペケ Srbb-V8Cv)
2018/11/02(金) 22:55:21.07ID:lVpg8bJur valarrayじゃなきゃ駄目な場面なんて知らんがな
434デフォルトの名無しさん (ワッチョイ 9a34-avGO)
2018/11/03(土) 00:31:38.77ID:ogvvzewS0 slice使える
435デフォルトの名無しさん (ワッチョイ 5b80-Q1ft)
2018/11/04(日) 13:10:56.85ID:MKH8Qowh0 そもそも2次元の配列使う必要がない
1次元で十分
池沼はいちいちみため2次元にしたがる
1次元で十分
池沼はいちいちみため2次元にしたがる
436デフォルトの名無しさん (アウアウカー Sac3-XPOZ)
2018/11/04(日) 15:35:15.29ID:NU/4ChKLa 20年前の本読んでも問題ないか?
437デフォルトの名無しさん (ワッチョイ 0ef0-MyS3)
2018/11/04(日) 16:00:02.15ID:T2TFtaIb0 みため二次元ねえ
int vec[][5] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 };
これで済むことを、
int& elm(int row, int col)
{
static int vec[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 };
return vec[row * 5][col];
}
いちいちこう書くやつも充分に池沼なんだが
そういうやつをちょっとプロファイリングしてみると
配列へのポインタに腹を立て、ポインタの配列にmallocして
強引に**で二次元を扱えることにするテクニックを某所で自慢したら
タコ殴りにされて、すっかり心を病んでしまい
以後、二次元配列というワードで凶暴化するようになった、とかね
int vec[][5] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 };
これで済むことを、
int& elm(int row, int col)
{
static int vec[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200 };
return vec[row * 5][col];
}
いちいちこう書くやつも充分に池沼なんだが
そういうやつをちょっとプロファイリングしてみると
配列へのポインタに腹を立て、ポインタの配列にmallocして
強引に**で二次元を扱えることにするテクニックを某所で自慢したら
タコ殴りにされて、すっかり心を病んでしまい
以後、二次元配列というワードで凶暴化するようになった、とかね
438デフォルトの名無しさん (ワイーワ2 FF12-VEUj)
2018/11/04(日) 17:10:10.81ID:dwIn1XjHF >>436
tcl/tk なら枯れてるから大腿同じ
tcl/tk なら枯れてるから大腿同じ
439デフォルトの名無しさん (ワッチョイ 9abd-yxtD)
2018/11/04(日) 17:55:13.85ID:ntvnp4Zh0 ていうか(アドレスp)[x]は*(p+x)の別表記に過ぎないというのは規格上の話にすぎなくて、
実際問題としては一次元配列アクセスと二次元配列アクセスには最適化のかかり方次第でかなり速度差が生じるお
一次元配列にすると、概念上の次の行の要素への移動が加算1発で済むというのが喜ばしい
これとループ最適化が組み合わさると、配列スキャンが主な仕事の処理は爆速になり得る
といいつつ次の例はideoneでこそ一次元配列アクセスの方が遅いが(爆
Visual C++ 2010だと一次元配列は10倍超速いお
https://ideone.com/K7uLo9
(VC++での結果)
******* Array 1D opt:
ntimes=100000^2, sum=2372578304
Consumed time=0 sec
******* Array 2D:
ntimes=100000^2, sum=2372578304
Consumed time=10 sec
実際問題としては一次元配列アクセスと二次元配列アクセスには最適化のかかり方次第でかなり速度差が生じるお
一次元配列にすると、概念上の次の行の要素への移動が加算1発で済むというのが喜ばしい
これとループ最適化が組み合わさると、配列スキャンが主な仕事の処理は爆速になり得る
といいつつ次の例はideoneでこそ一次元配列アクセスの方が遅いが(爆
Visual C++ 2010だと一次元配列は10倍超速いお
https://ideone.com/K7uLo9
(VC++での結果)
******* Array 1D opt:
ntimes=100000^2, sum=2372578304
Consumed time=0 sec
******* Array 2D:
ntimes=100000^2, sum=2372578304
Consumed time=10 sec
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 【画像】小泉防衛大臣の頭皮、存立危機に認定 [834922174]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 🏡
- 高市早苗「竹島は日本領土」 [834922174]
- GDP世界二位だった日本国が、ここまで衰退腐敗してしまった理由って冗談抜きで何????? [804169411]
