C++中常见的函数对象

一、C++STL库中常见的函数对象有:

1、std::less 和 std::greater:用于比较两个值的大小,其中 std::less 表示从小到大排序(默认排序方式),std::greater 表示从大到小排序。 2、std::plus 和 std::minus:用于执行加法和减法操作。 3、std::multiplies 和 std::divides:用于执行乘法和除法操作。 4、std::modulus:用于执行取模运算。 5、std::logical_and、std::logical_or 和 std::logical_not:用于执行逻辑与、逻辑或和逻辑非运算。 6、std::equal_to、std::not_equal_to、std::greater_equal 和 std::less_equal:用于比较两个值的大小关系,分别表示相等、不相等、大于等于和小于等于。 7、std::function:用于封装函数,可以将任何可调用对象(函数、函数指针、函数对象等)封装成一个可调用对象。

二、代码示例

示例1:std::greater的使用示例

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

int main() {
    vector<int> vec = { 1, 3, 5, 2, 4 };

    // 使用 std::sort 算法对 vec 进行排序
    sort(vec.begin(), vec.end(), greater<int>());

    // 输出排序后的结果
    for (int i : vec) {
        cout << i << " ";
    }

    return 0;
}

示例2:multiplies的使用示例

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

int main() {
    vector<int> vec1 = { 1, 2, 3, 4 };
    vector<int> vec2 = { 2, 4, 6, 8 };
    vector<int> result(vec1.size());

    // 使用 std::transform 算法对 vec1 和 vec2 进行元素级别的乘法运算
    transform(vec1.begin(), vec1.end(), vec2.begin(), result.begin(), multiplies<int>());

    // 输出运算结果
    for (int i : result) {
        cout << i << " ";
    }

    return 0;
}

结果result = {2, 8, 18, 32}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`std::accumulate` 是C++ STL 的一个算法函数,它的作用是计算给定范围内的元素的累加和。它的函数原型如下: ```cpp template <class InputIterator, class T> T accumulate (InputIterator first, InputIterator last, T init); ``` 其: - `first` 和 `last` 是输入范围的迭代器,表示要计算累加和的元素范围。 - `init` 是累加和的初始值。 `std::accumulate` 的工作方式是将累加和的初始值(即 `init`)加上范围内的每个元素,然后返回最终的累加和。 例如,以下代码演示了如何使用 `std::accumulate` 计算 `std::vector<int>` 的元素之和: ```cpp #include <iostream> #include <numeric> #include <vector> int main() { std::vector<int> v {1, 2, 3, 4, 5}; int sum = std::accumulate(v.begin(), v.end(), 0); std::cout << "The sum is " << sum << std::endl; return 0; } ``` 输出结果为: ``` The sum is 15 ``` 在这个例子,`v.begin()` 和 `v.end()` 分别表示 `std::vector<int>` 的第一个和最后一个元素的迭代器。`0` 是累加和的初始值。`std::accumulate` 计算了 `1 + 2 + 3 + 4 + 5` 的结果,即 `15`,并将其存储在 `sum` 变量。 除了计算元素的累加和,`std::accumulate` 还可以用于计算其他类型的累积操作,例如乘积、最大值、最小值等等。这可以通过提供不同的二元操作函数来实现,例如 `std::multiplies` 用于计算元素的乘积,`std::max` 和 `std::min` 分别用于计算元素的最大值和最小值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值