[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/10 14:55 / Filesize : 275 KB / Number-of Response : 1033
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part124



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
環境依存て規格にある程度準拠してて最適化有効にしてこうならないコンパイラあるの?

標準ライブラリ云々は誰もそんな主張してないしそんな当たり前の事言われてもだから何としか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef