我正在阅读以下问题:
如何总结 C++ 向量的元素?,我想使用第二种方法(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++ 中做类似的事情吗?我可以编写方法来遍历向量并自己完成,但我更喜欢函数式方法。