C++ partial函数与其他相似功能的对比

   2024-09-30 2020
核心提示:C++ 标准库中没有提供名为 “partial” 的函数,但你可能是在提到 std::bind 或 C++20 引入的 std::ranges::views::partial_sums

C++ 标准库中没有提供名为 “partial” 的函数,但你可能是在提到 std::bind 或 C++20 引入的 std::ranges::views::partial_sum

std::bind:

std::bind 是一个通用工具,可以将函数、函数指针、成员函数指针或者其他可调用对象与其参数进行绑定。这样,当调用绑定后的对象时,绑定的参数会自动传递给原始函数。std::bind 可以实现类似于 “partial application”(部分应用)的功能,即固定一部分参数,生成一个新的可调用对象。

示例:

#include<iostream>#include<functional>int add(int a, int b) {    return a + b;}int main() {    auto add5 = std::bind(add, 5, std::placeholders::_1);    std::cout<< add5(3)<< std::endl; // 输出 8    return 0;}
std::ranges::views::partial_sum (C++20):

std::ranges::views::partial_sum 是一个视图操作,用于计算给定范围内元素的部分和。它不是一个通用的 “partial function” 解决方案,而是专门用于处理序列和计算部分和的工具。

示例:

#include<iostream>#include<vector>#include <ranges>int main() {    std::vector<int> nums = {1, 2, 3, 4, 5};    auto partial_sums = nums | std::ranges::views::partial_sum;    for (auto sum : partial_sums) {        std::cout<< sum << " ";    }    // 输出: 1 3 6 10 15    return 0;}

总结:

std::bind 是一个通用的工具,用于实现部分应用和绑定参数。它可以用于函数、函数指针、成员函数指针等可调用对象。std::ranges::views::partial_sum 是一个专用于计算部分和的视图操作,主要用于处理序列。

根据你的需求选择合适的工具。如果你需要实现类似 “partial application” 的功能,可以使用 std::bind。如果你需要处理序列并计算部分和,可以使用 std::ranges::views::partial_sum

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号