【发布时间】:2013-08-17 16:10:45
【问题描述】:
我正在阅读以下问题:
How to sum up elements of a C++ vector?,我想使用第二种方法(sum_of_elems =std::accumulate(vector.begin(),vector.end(),0);//#include <numeric>)。
但是,我没有std::vector<int>,而是std::vector<struct packet>。 packet 定义如下:
struct packet {
/// ...
int length() const;
///
}
我想要数据包长度的总和。
这是我尝试过的:
std::vector<packet> packets;
...
std::accumulate(packets.begin(), packets.end(), 0, [](const packet& a, const packet& b){return a.length() + b.length();});
但它不起作用。在 C# 中,我会写类似的东西
packet[] p;
p.Select(x => p.length()).Sum();
在 C++ 中可以做类似的事情吗?我可以编写遍历向量的方法并自己完成,但我更喜欢函数式方法。
【问题讨论】:
标签: c++ vector stl functional-programming