将 ruby 解决方案移植到 C++
有没有办法在 C++ 中做到这一点,特别是范围部分。
answer = (0..999).select { |a| a%3 ==0 || a%5==0 }
puts answer.inject { |sum, n| sum+n }
我创建了自己的 C++ 解决方案,但使用了更标准的 for 循环,想知道是否有更酷的方法来实现它?
Is there any way to do this in C++ especially the range section.
answer = (0..999).select { |a| a%3 ==0 || a%5==0 }
puts answer.inject { |sum, n| sum+n }
I have created my own c++ solution but using a more standard for loop and wondered if there was a cooler way to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
模板元编程解决方案:
以下假设范围的下限为 0。
以下将允许您指定数字范围(例如 0-999、20-400)。我不是模板元编程的大师,所以我想不出更干净的解决方案(我这样做是为了我自己的利益和实践)。
Template metaprogramming solution:
The following assumes the lower bound of the range is 0.
The following will allow you to specify a range of numbers (e.g. 0-999, 20-400). I'm not a master of template metaprogramming so I couldn't think of a cleaner solution (and I did this for my own benefit and practice).
未经测试的代码。使用 C++ 0x 功能(lambda 函数和 iota)
Untested code. Uses C++ 0x feature (lambda function and iota)
等效的 C++ 程序是:
The equivalent C++ program would be:
这是一个很酷的 C 版本:
http://codepad.org/eUKFAvkc
Here's a cool C version:
http://codepad.org/eUKFAvkc