トップページ
>
プログラム
>
2016年09月23日
>
WiufwV3J
書き込み順位&時間帯一覧
18 位
/190 ID中
時間
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Total
書き込み数
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
1
0
0
0
3
使用した名前一覧
書き込んだスレッド一覧
デフォルトの名無しさん
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ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合は
メール
をしてください。対応します。