在 C++ 中,std::partial_sum 是一个用于计算序列部分和或其他二元操作的函数对象
使用 lambda 表达式:使用 lambda 表达式可以让你快速定义一个函数,而不需要显式地创建一个新的函数对象。这样可以提高代码的可读性和灵活性。
#include<iostream>#include<vector>#include<numeric>int main() { std::vector<int> nums = {1, 2, 3, 4, 5}; std::vector<int> result(nums.size()); std::partial_sum(nums.begin(), nums.end(), result.begin(), [](int a, int b) { return a * b; }); for (int i : result) { std::cout << i << " "; }}使用 std::function:使用 std::function 可以让你存储任意可调用对象,例如函数指针、lambda 表达式或者函数对象。这样可以提高代码的灵活性。
#include<iostream>#include<vector>#include<numeric>#include<functional>int main() { std::vector<int> nums = {1, 2, 3, 4, 5}; std::vector<int> result(nums.size()); std::function<int(int, int)> func = [](int a, int b) { return a * b; }; std::partial_sum(nums.begin(), nums.end(), result.begin(), func); for (int i : result) { std::cout << i << " "; }}使用模板:使用模板可以让你编写更通用的代码,从而提高代码的灵活性。例如,你可以编写一个通用的 partial_sum 函数,该函数接受任意类型的容器和二元操作。
#include<iostream>#include<vector>#include<numeric>template<typename Container, typename BinaryOperation>void custom_partial_sum(Container& container, BinaryOperation op) { std::partial_sum(container.begin(), container.end(), container.begin(), op);}int main() { std::vector<int> nums = {1, 2, 3, 4, 5}; custom_partial_sum(nums, std::multiplies<int>()); for (int i : nums) { std::cout << i << " "; }}通过使用这些方法,你可以提高 C++ partial_sum 函数的灵活性,从而更好地满足你的需求。


