在 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
函數的靈活性,從而更好地滿足你的需求。