What#39;s the best way to sum the result of a member function for all elements in a container?(对容器中所有元素的成员函数结果求和的最佳方法是什么?)
问题描述
假设我有以下对象:
struct Foo
{
int size() { return 2; }
};
获取 vector<Foo>
中所有对象的总 size
的最佳方法是什么(最易于维护、可读等)?我会发布我的解决方案,但我对更好的想法感兴趣.
What's the best way (most maintainable, readable, etc.) to get the total size
of all objects in a vector<Foo>
? I'll post my solution but I'm interested in better ideas.
更新:
到目前为止,我们有:
- std::accumulate 和仿函数
- std::accumulate 和 lambda 表达式
- 普通的 for 循环
还有其他可行的解决方案吗?你可以使用 boost::bind
或 std::bind1st/2nd
使某些东西可维护吗?
Are there any other workable solutions? Can you make something maintainable using boost::bind
or std::bind1st/2nd
?
推荐答案
除了你自己的建议,如果你的编译器支持 C++0x lambda 表达式,你可以使用这个更短的版本:
In addition to your own suggestion, if your compiler supports C++0x lambda expressions, you can use this shorter version:
std::vector<Foo> vf;
// do something to populate vf
int totalSize = std::accumulate(vf.begin(),
vf.end(),
0,
[](int sum, const Foo& elem){ return sum + elem.size();});
这篇关于对容器中所有元素的成员函数结果求和的最佳方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:对容器中所有元素的成员函数结果求和的最佳方法是什么?
- “纯虚函数调用"在哪里?崩溃从何而来? 2022-10-18
- C语言可使用的所有转义序列 1970-01-01
- C++指向数组的指针 1970-01-01
- 使用最流行的转义序列 1970-01-01
- C语言求模 1970-01-01
- C++浮点常数 1970-01-01
- 使用整数值初始化char类型的变量 1970-01-01
- 打印扩展的ASCII字符 1970-01-01
- 使用来自float.h和limits的数据,找到该系统的一些 1970-01-01
- 运算符优先级 1970-01-01