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();});
这篇关于对容器中所有元素的成员函数结果求和的最佳方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:对容器中所有元素的成员函数结果求和的最佳方法是什么?
基础教程推荐
- 初始化变量和赋值运算符 1970-01-01
- C++定义类对象 1970-01-01
- 分别使用%o和%x以八进制或十六进制格式显示整 1970-01-01
- C++按值调用 1970-01-01
- 明确指定任何或所有枚举数的整数值 1970-01-01
- end() 能否成为 stl 容器的昂贵操作 2022-10-23
- C++输入/输出运算符重载 1970-01-01
- 使用scanf()读取字符串 1970-01-01
- C++ #define 1970-01-01
- C语言访问数组元素 1970-01-01