【发布时间】:2021-07-19 04:24:21
【问题描述】:
我一直致力于理解 C++ 库中给出的所有 STL 算法,我们应该避免使用 for_each 和 for 循环来解决问题。在大多数情况下,我能够找到适用的 STL 算法,但我不记得在使用谓词时总结了集合或范围的任何算法,而且我在论坛上也找不到解决方案。我正在使用 C++ 20。
唯一的目标是使用 STL 算法将向量中的偶数与变量相加。
【问题讨论】:
-
我试过累积,但它不需要谓词。因此,它无法区分奇数或偶数并将它们全部加起来。
-
Accumulate 有一个接受 binary 函数的重载,它的第一个参数是总数,第二个参数是被加数。你当然可以使这个函数的行为以第二个参数的奇偶性为条件。
-
@RaviSharma BinaryOperation 有两个操作数。你可以用这些做你喜欢的事情。您从函数返回新的总数,就像我在回答中显示的那样。
-
@RaviSharma 正确,它不需要谓词。但它不需要。 Ted 的回答演示了如何编写一个仅在右侧为偶数时才执行加法的运算符。
标签: c++ vector stl c++17 c++20