c++ - 如何使用 vector<pair<double, uint>> 为 STL partial_sum 实现 binOp 仿函数?

标签 c++ stl

我想要 vector 中元素的 partial_sum,其中每个元素都是 pair<double, unsinged int> . partial_sum应该递增地添加 double 值(每对中的第一个)。

例子:

vector<pair<double, unsigned int> > temp_vec;
temp_vec.push_back(make_pair(0.5, 0));
temp_vec.push_back(make_pair(0.2, 1));
temp_vec.push_back(make_pair(0.3, 2));
partial_sum(temp_vec.begin(), temp_vec.end(), temp_vec.begin(), ???);   // in place

应该给我一个 vector ,其中包含:[(0.5, 0), (0.7, 1), (1.0, 2)]

如何实现使用partial_sum函数所必需的仿函数?

我能够在带有自定义仿函数的 STL lower_bound 搜索中使用我的对,但在上述情况下,我不知道如何声明二元运算。

最佳答案

struct pair_sum {
    pair<double, unsigned int> operator()(const pair<double, unsigned int> & sum, const pair<double, unsigned int> & i) {
        return pair<double, unsigned int>(sum.first + i.first, i.second);
    }
};

这会将 first 相加并返回 second 不变。

关于c++ - 如何使用 vector<pair<double, uint>> 为 STL partial_sum 实现 binOp 仿函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113804/

相关文章:

c++ - 我可以重新绑定(bind) unique_ptr 的删除器类型吗?

c++ - array<array<int, M>, N> 的列表初始化

c++ - Haar级联opencv后跟踪对象

c++ - 文件签名验证 (CryptQueryObject)

c++ - 如何从另一个类的函数调用std::async时传递另一个类的函数?

c++ - 通过继承扩展 C++ 标准库?

c++ - 如何判断输出迭代器是否被修改

c++ - 将 std::queue 与 shared_ptr 一起使用?

c++ - 如何在 MSVS 监 window 口中显示多字符常量?

c++ - std::sort 在 C++ 中?