トップページ > プログラム > 2016年09月23日 > WiufwV3J

書き込み順位&時間帯一覧

18 位/190 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000210003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
434
436
【初心者歓迎】C/C++室 Ver.99【環境依存OK】 [無断転載禁止]©2ch.net

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.99【環境依存OK】 [無断転載禁止]©2ch.net
434 :デフォルトの名無しさん[sage]:2016/09/23(金) 19:07:06.65 ID:WiufwV3J
std::transform の疑問なのですが、
http://en.cppreference.com/w/cpp/algorithm/transform では
while (first1 != last1) {
*d_first++ = unary_op(*first1++);
}
return d_first;
となっていますが
http://cpprefjp.github.io/reference/algorithm/transform.html では
効果が
[result,result + (last - first)) 内のイテレータ i の要素に、それぞれ op(*(first + (i - result))) を代入する
となっています。
日本語の方の op(*(first + (i - result))) の - resultはどこから来ているのでしょうか?
テストプログラム作って動かしてみても日本語の方の説明を理解することが出来ません。
気にせずに英語の方を信じていれば良さそうですが...
【初心者歓迎】C/C++室 Ver.99【環境依存OK】 [無断転載禁止]©2ch.net
436 :434[sage]:2016/09/23(金) 19:37:03.24 ID:WiufwV3J
説明が悪すぎました
動作を見てみると
op(*(first + i))
と記述したほうが良いと思うのですが、
op(*(first + (i - result)))
としなければいけない理由はあるのでしょうか?
単純に引数を返す関数を与えてやると、firstからlastの値を、resultからresult+(last-first)にコピーすることになり、
op(*(first+(i-result)))と説明できる動作で無いように思えます。

そもそも、イテレータ同士を足し合わせるような記述が良いのかどうかもわかっていませんが
【初心者歓迎】C/C++室 Ver.99【環境依存OK】 [無断転載禁止]©2ch.net
440 :436[sage]:2016/09/23(金) 20:39:29.86 ID:WiufwV3J
>>438
なるほど、わかりました。
iが何なのか分かってなかったからですね。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。