当前位置:  开发笔记 > 编程语言 > 正文

提升lambda for_each/transform puzzle

如何解决《提升lambdafor_each/transformpuzzle》经验,为你挑选了1个好方法。

有谁知道为什么

  vector test(10);
  int a=0;

  for_each(test.begin(),test.end(),(_1+=var(a),++var(a)));

  for_each(test.begin(),test.end(),(cout << _1 << " "));
  cout << "\n"

给出:"0 1 2 3 4 5 6 7 8 9"

  transform(test.begin(),test.end(),test.begin(), (_1+=var(a),++var(a)));
  ...(as before)

给出:"1 2 3 4 5 6 7 8 9 10"



1> Pieter..:

逗号运算符从左到右进行求值,因此结果为

_1+=var(a), ++var(a)

是++ var(a),您将使用转换版本存储它.

的for_each:

评估_1 + = var(a),更新序列(通过lambda _1),然后评估++ var(a),但这对你的序列没有影响.

转变:

_1 + = var(a)被评估,更新你的序列(就像之前一样),然后评估++ var(a),这也给出整个表达式的结果,然后用于再次更新你的序列(通过转变)

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有