1 名前:デフォルトの名無しさん (ワッチョイ 7fc9-G+K4) mailto:sage [2016/04/03(日) 00:22:24.07 ID:ZT/2NYWz0.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part123 echo.2ch.net/test/read.cgi/tech/1456040187/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
175 名前:デフォルトの名無しさん (アウアウ Sa67-33s9) mailto:sage [2016/04/20(水) 07:18:51.45 ID:dTPS4iPYa.net] そもそも格納順番とかそっちに任せるから、とにかく最新情報科学技術の粋を結集して高速にデータを参照させてくれってのがデータベースでしょ
176 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/20(水) 07:58:13.83 ID:thevk6F2r.net] いいえ違います
177 名前:デフォルトの名無しさん (オッペケ Sr27-Gtsw) mailto:sage [2016/04/20(水) 08:01:43.93 ID:thevk6F2r.net] クエリーでなくリーレション(アトリビュートのドメインの直積)にはそもそも概念モデルとして順序の概念が無いし
178 名前:デフォルトの名無しさん (ワンミングク MMef-Gtsw) mailto:sage [2016/04/20(水) 09:22:54.95 ID:8iJwmy9eM.net] まぁデータベースは表ではなくて集合を表現したものだからな
179 名前:デフォルトの名無しさん (ワッチョイ 4b40-u1fT) mailto:sage [2016/04/20(水) 23:06:05.59 ID:sW5MEHFW0.net] 不慣れなプログラマが作る全ソースが全ヘッダを読み込むので困る。ちょっと弄ると全ビルド
180 名前:デフォルトの名無しさん (ワッチョイ 0b7b-y51b) mailto:sage [2016/04/20(水) 23:42:45.99 ID:ZQBKVnsi0.net] すぐテンプレ使いたがる馬鹿のコードなんてそんなもんよ。
181 名前:デフォルトの名無しさん (ワッチョイ 19e3-zfCm) [2016/04/21(木) 22:25:29.05 ID:3sH/HRos0.net] 翻訳環境にとんでもない化け物がお手頃で使えるようになった今、 理想的には、実行イメージ全体が1つの翻訳単位に収まっていることだね 翻訳単位の境界をまたげない最適化が結構もったいないことになってるから
182 名前:デフォルトの名無しさん (ワッチョイ 4db4-z8Ax) mailto:sage [2016/04/22(金) 16:20:21.52 ID:VK3N1B+b0.net] つまり cc と ld を一つのコンパイル単位にまとめてコンパイルすれば Linux カーネルが3秒でビルドできる爆速コンパイラに
183 名前:デフォルトの名無しさん (ワッチョイ 3e16-zfCm) [2016/04/22(金) 16:27:16.85 ID:trDHzPiw0.net] いやコンパイラが爆速かどうかではなくバイナリを爆速にするって話 最適化をがっつりやるならその分の時間はかかるだろうし
184 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/22(金) 17:55:39.19 ID:bwUeH041M.net] テンプレート書くよりその都度コピペした方が色々はやいよねコンパイル時間とか
185 名前:デフォルトの名無しさん (JP 0H41-SZE8) mailto:sage [2016/04/22(金) 19:18:24.79 ID:cAq2nbH2H.net] そして地震がきた時にクソコードの山に押し潰されるのを待つのだ
186 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/22(金) 19:35:18.98 ID:LlaEs4+z0.net] テンプレートはコンテナ以外で明確に使った方が良いケースはどんなのがある?
187 名前:デフォルトの名無しさん (ワッチョイ 4b3c-FmnC) mailto:sage [2016/04/22(金) 19:47:23.35 ID:x1AcDznE0.net] アルゴリズムとか
188 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/22(金) 21:06:06.11 ID:7+eL8tO2a.net] 保守性のために標準ライブラリを使うんだろ コーディング速度や実行速度の為ではない
189 名前:デフォルトの名無しさん (ワンミングク MMd0-3Kaz) [2016/04/22(金) 21:27:17.03 ID:+uE+J+gQM.net] 標準ライブラリを使う使わないの話はお前以外してない
190 名前:デフォルトの名無しさん (ワッチョイ 217b-xSxp) mailto:sage [2016/04/23(土) 02:40:57.38 ID:m/KBeaUS0.net] >>182 信号処理とかだとテンプレートなしではもう無理 論理的に同じ処理をするのに、整数、float、doubleで別々のコードを書かなきゃいけないなんて やってられない
191 名前:デフォルトの名無しさん (ワッチョイ f1e1-gALo) mailto:sage [2016/04/23(土) 08:43:35.78 ID:F/8DDl4q0.net] >>182 テンプレート引数にテンプレートを指定する手法が必要な時。
192 名前:デフォルトの名無しさん (ワッチョイ 6be7-FmnC) mailto:sage [2016/04/23(土) 08:46:03.16 ID:bKfgUY2x0.net] ファクトリーメソッドとかかなぁ。
193 名前:デフォルトの名無しさん (ワッチョイ 4db4-z8Ax) mailto:sage [2016/04/23(土) 14:18:29.26 ID:nvSaEwLX0.net] >>186 はまさに >>183 の例だな 型の振る舞いだけに着目して抽象的な操作を記述できるようにする だから静的型付けの言語でテンプレートやらジェネリクスやらをまともに使うには型制約が必須なんだけど、 未だに型制約を記述するための支援がない言語があるらしい
194 名前:デフォルトの名無しさん (ワッチョイ 57e6-zfCm) [2016/04/23(土) 19:16:14.77 ID:tcao+QTV0.net] >>186 でFA
195 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/23(土) 20:18:32.35 ID:hfDo0ds00.net] 例をあげようって話の流れで、なんで一例に対してファイナルになるんだよ
196 名前:デフォルトの名無しさん (ワッチョイ 57e6-zfCm) [2016/04/23(土) 21:02:12.70 ID:tcao+QTV0.net] > 整数、float、doubleで別々のコードを書かなきゃいけないなんて やってられない じゃあ、これ以上の答えがあるってのか?
197 名前:デフォルトの名無しさん (ワッチョイ 1ec0-v6Xr) mailto:sage [2016/04/23(土) 21:36:34.80 ID:zzpDuGYL0.net] 1st アンサーかも
198 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/23(土) 23:38:40.69 ID:hfDo0ds00.net] >>192 それはテンプレートの基本機能じゃね?
199 名前:デフォルトの名無しさん (ワッチョイ 5cec-zfCm) [2016/04/24(日) 06:26:37.85 ID:936uZ4pr0.net] あとは重箱の隅みたいな細かいことばかりだと思うが?
200 名前:デフォルトの名無しさん (ワッチョイ 1030-gALo) mailto:sage [2016/04/24(日) 09:20:15.79 ID:bi4aOyNo0.net] いやだから、例をあげろっていう話の流れだったんじゃ
201 名前:デフォルトの名無しさん (ワッチョイ 6be7-FmnC) mailto:sage [2016/04/24(日) 09:37:21.56 ID:qrH7Oshx0.net] 唯一解が出ちゃってぽしゃったんだよ。
202 名前:デフォルトの名無しさん (スプー Sdf8-DbIH) mailto:sage [2016/04/24(日) 09:53:33.85 ID:PJXOgY3Xd.net] >>195 非型は?
203 名前:デフォルトの名無しさん (アウアウ Sa05-L+iy) mailto:sage [2016/04/24(日) 14:18:35.81 ID:nyww5Nv/a.net] コンパイル時に計算したい場合か
204 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/24(日) 22:23:36.21 ID:tmf17AXnr.net] オナニー以外に使い道は無い
205 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/24(日) 22:35:15.43 ID:C4if0ujR0.net] オーバーロードで事足りる程度でもテンプレートなら行数を圧縮することはできる
206 名前:デフォルトの名無しさん (ワッチョイ f140-FmnC) mailto:sage [2016/04/25(月) 02:07:03.74 ID:4nVWf6Tg0.net] 行数を圧縮すると成果物が少ないと評価される…
207 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/25(月) 08:14:09.84 ID:4toUZyy7a.net] 糞査定なんとかしないと
208 名前:デフォルトの名無しさん (スプー Sdf8-DbIH) mailto:sage [2016/04/25(月) 08:48:18.03 ID:RM4kY/BSd.net] C++11になってVariadicと右辺値/左辺値が登場したので、型のバリエーションだけじゃなくてもっといろんな パターンについてのバリエーションをtemplateで表現できるようになった。 俺はヘタレなのでかなり難しくなったと感じている。
209 名前:デフォルトの名無しさん (ワッチョイ 5c42-zfCm) [2016/04/25(月) 13:43:44.73 ID:d+bG+pO00.net] >>201 無数にあっちゃいけない関数はオーバーロード一択でそ
210 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 14:15:42.28 ID:FkG7uZgrH.net] 質問失礼します。 'abc.exe': 'C:\Visual Studio 2008\Projects\xyz.dll' を読み込みました。Cannot find or open the PDB file 'abc.exe': 'C:\Visual Studio 2008\Projects\xyz.dll' をアンロード このアンロードはどうやって止めるのでしょうか? 実行した際に、dll内のメソッドを参照できないようで、以下のエラーとなります。 ハンドルされていない例外: System.IO.FileNotFoundException: ファイルまたはアセン ブリ 'hoge.dll'、またはその依存関係の 1 つが読み込めませんでした。 指定されたモジュールが見つかりません。 場所 hoge.hogeclass..ctor() 場所 main(Int32 argc, SByte** argv) 場所 _mainCRTStartup() コンパイルはできています。 よろしくお願いします。 (なんか急にできなくなった気がします。前は、問題無だったはずなのになぁ)
211 名前:片山博文MZ ◆T6xkBnTXz7B0 (ガラプー KK9b-0LZu) mailto:sage [2016/04/25(月) 14:21:48.07 ID:9Ydy9LbhK.net] >>206 ファイル'hoge.dll'が見付からないからエラーになってる。'hoge.dll'はどこにある?
212 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 16:01:11.85 ID:FkG7uZgrH.net] 回答ありがとうございます。 exeと、同じフォルダにあります。 読み込みました」って、出てるから、いったん読み込みはできてると思うのですが。 Cannot find or open the PDB file (このPDBについてのメッセージは、関係ないと思います) よろしくおねがいします。
213 名前:デフォルトの名無しさん (ワッチョイ 98ff-nTsV) mailto:sage [2016/04/25(月) 16:14:18.30 ID:Y5eHwd9i0.net] C++/CLIのほうで聞いたほうがいいかも そのパスはほんとにそのまま?日本語混ざってたりしないよね
214 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/25(月) 16:17:09.73 ID:nodCWmX5M.net] pdbも同じとこにおきゃいいじゃん
215 名前:デフォルトの名無しさん (JP 0H41-uQxx) [2016/04/25(月) 16:33:35.80 ID:FkG7uZgrH.net] 回答ありがとうございます。 >209 日本語は、入っていません。 >210 拾ってきたdllでして、pdbがありません。 他にも、以下のような、謎のメッセージも出ています。 'abc.exe': 'ImageAtBase0x10000000' を読み込みました。含める/除外する設定により、読み込みは無効になっています。 'abc.exe': 'ImageAtBase0x10000000' をアンロード よろしくおねがいします。
216 名前:デフォルトの名無しさん (ワッチョイ 397b-DbIH) mailto:sage [2016/04/25(月) 17:20:39.11 ID:Vz/PfYjH0.net] 拾い物のdll名を出せない理由は? 盗品だから?
217 名前:デフォルトの名無しさん (ワッチョイ 66a6-zfCm) [2016/04/25(月) 18:20:21.95 ID:zMzD7cFX0.net] どーでもいいわ、んなこと
218 名前:デフォルトの名無しさん (ワッチョイ 3e4e-DbIH) mailto:sage [2016/04/25(月) 21:18:39.53 ID:nQ9xWXS00.net] >>211 まさかデバッガでステップインしようとしてる?
219 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/25(月) 22:09:57.56 ID:p2RYg3GI0.net] 右辺値なんて無くてもいいよね
220 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/25(月) 22:22:09.27 ID:nodCWmX5M.net] >>211 ビルドの設定が違うとかじゃないの ランタイムをマルチスレッドにするかマルチスレッドDLLにするかとか depedency walkerかなんかで必要なdll探してみて足りなきゃ置く、ランタイムのバージョンそろえる、そもそもランタイムの要否を調べてみたら
221 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/25(月) 22:25:01.35 ID:gNn0n/ow0.net] >>215 なんでどさくさに紛れて変なこと言うの?www
222 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/25(月) 22:35:01.48 ID:yNWSO4Dk0.net] >>206 .NET Frameworkの質問をC++スレでするな低能 知らない奴がdepedency walkerとか言い出しちゃうだろ
223 名前:デフォルトの名無しさん (ワッチョイ 3951-DxlG) mailto:sage [2016/04/25(月) 23:23:42.73 ID:yWovrPca0.net] >>206 xyz.dllが使ってる他のdllが見つからなかったからxyz.dllのロードも失敗したってことだろ。
224 名前:デフォルトの名無しさん (ドコグロ MM5c-DbIH) mailto:sage [2016/04/26(火) 07:05:42.42 ID:9Pm0YF2lM.net] >>215 理解できないものはないものとして使わない って言うのは正しい姿勢 なので > 右辺値なんて無くてもいいよね と君が考えるのは正しい
225 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 08:03:25.27 ID:uoCWhHDE0.net] 他人に同意を求めるつもりで書いたなら正しくないけどな
226 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 08:08:11.99 ID:X2oLSlFmd.net] 右辺値がない?
227 名前:デフォルトの名無しさん (ワントンキン MMd0-DbIH) mailto:sage [2016/04/26(火) 08:30:56.28 ID:15Xmlz4WM.net] 俺も右辺値参照いまいちよくわかってないんだけど、 doubleとかを返す関数で、return前に double calc() { double&& res = ... return std::move(res); } は意味ないよね? std::vector<double> calc() { std::vector<double>&& res = {}; //ごにょごにょ return std::move(res); }; も意味ないよね? const std::vector<double>& calc() { std::vector<double>&& res = {}; //ごにょごにょ return std::move(res); }; は意味ある でも、 std::vector<double> v = calc(); だと結局コピーが起きてもったいない? const std::vector<double>& v = calc(); だと意味ある こんな認識なんだけど正しいのだろうか
228 名前:デフォルトの名無しさん (ワッチョイ 8dec-zfCm) [2016/04/26(火) 08:46:32.55 ID:rGhmFmB70.net] なんでresを右辺値参照にしてるんだ? そこは関係ないぞ。 C++98ではテンポラリを束縛する参照にconstが必須だったが、 それではムーブ動作させるのにconst_castが必要というアフォなことになっていて、 じゃあconst任意の参照を新設しましょうって出てきたのが右辺値参照で、 使うときの考え方は参照先がテンポラリの場合に使うものだ。
229 名前:デフォルトの名無しさん (アウアウ Sa05-L+iy) mailto:sage [2016/04/26(火) 09:47:41.48 ID:A4vuhbbUa.net] const T&で大体十分
230 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 10:46:34.53 ID:X2oLSlFmd.net] どんな場合もローカル変数を参照で返してはいかんよ
231 名前:デフォルトの名無しさん (スプー Sda8-DbIH) [2016/04/26(火) 10:48:10.37 ID:IHpx3UMhd.net] んなこたない
232 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/26(火) 11:06:37.75 ID:GLJzO2KH0.net] そもそも右辺値参照みたいな変な事をしなくても良いコードを書けば良い。
233 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 11:34:25.19 ID:X2oLSlFmd.net] >>227 いかんでしょ
234 名前:デフォルトの名無しさん (スプー Sda8-DbIH) [2016/04/26(火) 11:35:38.49 ID:IHpx3UMhd.net] んなこたない
235 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 11:52:48.14 ID:X2oLSlFmd.net] >>230 いやいかんでしょ
236 名前:デフォルトの名無しさん (ワッチョイ 3ee5-v6Xr) mailto:sage [2016/04/26(火) 11:57:22.86 ID:GLJzO2KH0.net] 右辺値参照を使わざるを得ない状況なんて無いよね。
237 名前:デフォルトの名無しさん (ワッチョイ 4306-gALo) mailto:sage [2016/04/26(火) 17:12:26.21 ID:sp7HDy2O0.net] お前がそう思うんならそうなんだろう お前ん中ではな っつぅか チューリング完全ならなんでも書けるんだからC++自体いらないよね、K&Rで充分 っつぅか
238 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 17:55:22.27 ID:X2oLSlFmd.net] >>232 それってRVOでなんとかなるの意?
239 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 19a8-gALo) mailto:sage [2016/04/26(火) 18:01:58.79 ID:1VUmXePL0.net] 言語機能の多くは抽象化の道具なんだよ。 一旦書いたら中身は忘れてしまいたいから壁を作ってその向こうに押しやる道具が必要なんだ。
240 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 18:03:13.30 ID:X2oLSlFmd.net] まーた
241 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/26(火) 18:17:56.12 ID:jVopD7Dvr.net] >>223 2番目はコピーが発生しないようムーブしているから意味はある ただ安易なmoveや参照の使用は最適化を阻害するため推奨はされない 推奨される書き方はこう std::vector<double> calc() { std::vector<double> res = {}; return res; } std::vector<double> v = calc();
242 名前:デフォルトの名無しさん (ワッチョイ 4b02-gALo) mailto:sage [2016/04/26(火) 18:57:35.91 ID:tQCMt5AL0.net] >>232 アセンブラを使わずにギリギリまでチューニングしたいときに使えるんじゃないの 知らないけど
243 名前:デフォルトの名無しさん (ワッチョイ 4db4-gALo) mailto:sage [2016/04/26(火) 19:07:46.09 ID:1BXtyTOd0.net] 戻り値最適化って「本当に最適化されてんのか」っていっつも不安になる
244 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 19:31:52.57 ID:uoCWhHDE0.net] 意味があるのはこういう時 std::vector<double> v = {}; o.assign(std::move(v));//これ以降vは使わない でもこれも出来るのであればstd::vector<double>を返す関数作って関数の返り値を直接引数に渡せば不要 あと、std::vectorに入れるクラスの場合(nothrowな)move operator書いた方がパフォーマンスあがる事が多い
245 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/26(火) 19:38:27.71 ID:uoCWhHDE0.net] ちょっと補足 この場合のassignの定義は void assign(std::vector<double> v){ member.swap(v); } こんな感じのものね
246 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 20:22:16.94 ID:gEJwYSMG0.net] ↑糞コード
247 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 22:14:51.75 ID:gEJwYSMG0.net] 糞コードを発明する前にstring::assignとかの標準ライブラリが どうなってるか調べようとしないんだろか 因みにスコットメイヤーの本には値渡しはhigher costとあるな
248 名前:デフォルトの名無しさん (スプー Sda8-DbIH) mailto:sage [2016/04/26(火) 22:30:23.02 ID:X2oLSlFmd.net] まあいいじゃないか。実行時性能なんか、どうだって。
249 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/26(火) 22:53:39.31 ID:gEJwYSMG0.net] >>239 もし最適化されてなかったら困るのか? 別にコピーが走る訳じゃない
250 名前:デフォルトの名無しさん (アウアウ Sa05-1g4J) mailto:sage [2016/04/26(火) 23:32:52.19 ID:JB7K2U7Pa.net] 最適化はC++erの大好物だ
251 名前:デフォルトの名無しさん (ワッチョイ 617b-3Kaz) [2016/04/27(水) 01:49:55.63 ID:GuBYWkr/0.net] こういうのは値渡しでswapした方がいいって事知らねえの?
252 名前:デフォルトの名無しさん (ワッチョイ 19a8-gALo) mailto:sage [2016/04/27(水) 01:53:22.01 ID:0mhH1Qow0.net] 実際に遅いことがわかってからチューニングにとりかかっても遅くはない。 まあライブラリはどういう状況で使われるかわからんから積極的に性能も意識して欲しくはあるが。
253 名前:デフォルトの名無しさん (ワッチョイ 617b-7Ba6) [2016/04/27(水) 02:12:47.40 ID:GuBYWkr/0.net] >>243 例えば void assign(const std::vector<double>& v){ member = v; } こうだと必ず1度コピーが動く。 void assign(std::vector<double> v){ member.swap(v); } こうだと引数がrvalueの場合最適化でコピーが動かない場合があるし、 C++11ならmoveになる。 swapのコストが低いのは言わなくてもわかるよね。 lvalueの場合でもコピーは1度 C++11以降で void assign(const std::vector<double>& v); void assign(std::vector<double>&& v); 二つ書いたときとのコスト差はswapのみ
254 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/27(水) 19:30:14.55 ID:2yCvnT+mr.net] >>249 >コスト差はswapのみ ムブコンのコストはどこ行ったのよ
255 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 19:52:26.36 ID:turQDkKlM.net] >>250 rvalue渡したらどっちもmoveになる
256 名前:デフォルトの名無しさん (オッペケ Sr8d-DbIH) mailto:sage [2016/04/27(水) 20:04:17.37 ID:2yCvnT+mr.net] >>251 いやならないし 参照ならassign呼び出し時のmoveは起こらない
257 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 20:09:13.21 ID:turQDkKlM.net] 値渡しの方がmoveコンストラクタ自体動かない場合もあるからswapコストより差は小さくなる可能性があるという話であれば、否定はしない。 値渡し=高コスト=糞コード と考えもせずに言う奴の反論したかっただけだからそこまで細かい説明するのであればご自由に
258 名前:デフォルトの名無しさん (ワントンキン MMd0-3Kaz) [2016/04/27(水) 20:16:31.83 ID:turQDkKlM.net] >>252 想像より下だったか… void assign(std::vector<double> v); これにrvalue渡したらmove一回swap一回 lvalue渡したらコピー1回swap一回 void assign(const std::vector<double>& v); void assign(std::vector<double>&& v); これにrvalue渡したら下のが呼ばれて中でmove一回 lvalue渡したら中でコピー1回
259 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/27(水) 20:33:00.00 ID:56VYowtZ0.net] void assign(std::vector<double> v); これ定義しちゃうとオーバーロードきかないんだっけ?
260 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/27(水) 23:4
] [ここ壊れてます]
261 名前:1:06.04 ID:2JVtUYOe0.net mailto: >>254 どこをどう数えたらswapの違いになるのか 右辺値を渡した時 f(X p); 関数呼び出しのムーブ生成(メモリ確保+ムーブ) swap内の
[] [ここ壊れてます]
262 名前:一時オブジェクトのムーブ生成(メモリ確保+ムーブ) swap内のムーブ代入(破棄+ムーブ) swap内のムーブ代入(破棄+ムーブ) f(X && p); ムーブ代入(破棄+ムーブ) 左辺値を渡した時 f(X p); 関数呼び出しのコピー生成(メモリ確保+コピー) swap内の一時オブジェクトのムーブ生成(メモリ確保+ムーブ) swap内のムーブ代入(破棄+ムーブ) swap内のムーブ代入(破棄+ムーブ) f(X const & p); コピー代入(破棄+コピー) [] [ここ壊れてます]
263 名前:デフォルトの名無しさん (ワッチョイ 6aa6-gALo) mailto:sage [2016/04/27(水) 23:48:41.61 ID:56VYowtZ0.net] >>256 メモリ確保って一口に言ってるけど
264 名前:デフォルトの名無しさん (ワッチョイ 753c-C5As) [2016/04/27(水) 23:54:55.96 ID:XwQarpQA0.net] std::cout << 0["2ch"]; これは合法ですか?
265 名前:デフォルトの名無しさん (ワッチョイ 7063-DbIH) mailto:sage [2016/04/27(水) 23:57:03.40 ID:2JVtUYOe0.net] むしろ、何か違法だとでも?
266 名前:デフォルトの名無しさん (ワッチョイ 753c-C5As) [2016/04/27(水) 23:58:40.17 ID:XwQarpQA0.net] 2chは違法だと聞きました。
267 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:08:31.03 ID:2BwMw+ri0.net] >>256 std::vector::swapでmoveが呼ばれるとは初耳ですわ
268 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:14:58.53 ID:2BwMw+ri0.net] >>256 聞いて解らなくてもちょっと試してみればすぐ分かる話なのに…
269 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 00:22:32.02 ID:iQ2WswSv0.net] ああ、vectorか 確かにswapは内部のポインターの交換だけで済むな。 だが値渡しがswap以外に一時オブジェクトのメモリ確保が一回多いことに変わりはない
270 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 00:27:19.07 ID:2BwMw+ri0.net] >>263 それをメモリ確保と呼ぶなら参照渡しのアドレスわスタックに積むのもメモリ確保になっちゃうけど?
271 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 00:39:59.18 ID:iQ2WswSv0.net] >>264 お前の脳内ではなるのかも知れないが規格ではそう呼ばれていないし 特に関数テンプレートのようなインライン展開を期待する文脈ではスタックを消費しないだろう std::move(obj)とか
272 名前:デフォルトの名無しさん (ワッチョイ cb7b-RA4N) [2016/04/28(木) 00:50:17.80 ID:2BwMw+ri0.net] 理解力の乏しいやつのために書いてやったぞ ideone.com/rl80RP
273 名前:デフォルトの名無しさん (ワッチョイ 3763-hBSK) mailto:sage [2016/04/28(木) 01:06:21.52 ID:iQ2WswSv0.net] 中身みてないけど、言い出すと思った そりゃ規格で省略が許容されてるから環境依存でそうなることもあるだろう だが「標準ライブラリは>>247 方式のassignを採用していない」という事実は変わらないぞ
274 名前:デフォルトの名無しさん (ワッチョイ 37cf-JnPK) mailto:sage [2016/04/28(木) 01:09:47.90 ID:0YjJiZ000.net] >>267 主張変わった? >>263 の「値渡しがswap以外に一時オブジェクトのメモリ確保が一回多い」は 取り下げってことでいいんだよね?
275 名前:デフォルトの名無しさん (ワッチョイ cb7b-HcEB) [2016/04/28(木) 01:23:16.15 ID:2BwMw+ri0.net] >>267 環境依存て規格にある程度準拠してて最適化有効にしてこうならないコンパイラあるの? 標準ライブラリ云々は誰もそんな主張してないしそんな当たり前の事言われてもだから何としか