int sum(std::vector<int> nums) { return std::accumulate(nums.begin(), nums.end(), 0); }
使用了C++标准库中的std::accumulate
函数来计算nums
向量中所有元素的和。std::accumulate
是一个通用的算法,它可以对序列中的元素进行累积操作。
#include <numeric> // 需要包含这个头文件以使用std::accumulate
函数std::accumulate
接受三个参数:
- 序列的开始迭代器(
nums.begin()
)。 - 序列的结束迭代器(
nums.end()
)。 - 初始值(在这个例子中是0),它将被添加到序列的第一个元素上,然后结果将作为下一次迭代的初始值,依此类推。所述的初始值在
std::accumulate
函数中是指定累积操作的起始值。在累加操作中,这个初始值通常被设为0,因为它代表没有添加任何额外的数值。然而,这个初始值可以是任何类型,取决于你正在进行的累积操作。初始值的选择取决于你想要执行的具体操作和你希望如何解释结果。对于求和操作,通常选择0作为初始值。对于求乘积操作,通常选择1作为初始值,因为任何数与1相乘都保持不变。
#include <vector>
#include <numeric>
int sum(std::vector<int> nums) {
return std::accumulate(nums.begin(), nums.end(), 0);
}
在这个函数中,nums
向量被按值传递,这意味着函数会接收nums
的一个副本。由于std::accumulate
是一个高效的算法,它直接在输入序列上操作,而不需要额外的存储空间(除了可能需要的临时变量),因此即使nums
是按值传递的,这通常也不会成为性能瓶颈。