如何在 D 中生成数组?
我有这个 c++11 代码:
auto gen = []() -> double { /* do stuff */ };
std::generate(myArray.begin(), myArray.end(), gen);
我如何对 D 的数组做同样的事情? std.algorithm.fill
不接受函数对象,而且我不知道如何将函数传递给recurrence
。
I have this c++11 code:
auto gen = []() -> double { /* do stuff */ };
std::generate(myArray.begin(), myArray.end(), gen);
How would I do the same with D's array? std.algorithm.fill
doesn't take a function object, and I don't know how to pass a function to recurrence
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个似乎有效的版本:
[编辑]添加了基于填充的版本(res2)。
我在 Ideone (http://www.ideone.com/DFK5A) 中测试了它,但它崩溃了。一位使用当前版本 DMD 的朋友说它可以工作,所以我认为 Ideone 的 DMD 已经过时了大约有十到二十个版本。
Here's a version that seems to work:
[edit] Added fill-based version (res2).
I tested it in Ideone (http://www.ideone.com/DFK5A) but it crashes .. a friend with a current version of DMD says it works though, so I assume Ideone's DMD is just outdated by about ten to twenty versions.
您可以执行类似的操作,
如果将其分配给全局变量,则应在编译时对其进行评估。
您还可以使用字符串混合来生成数组文字的代码。
You could do something like
If it's assigned to a global it should be evaluated at compile-time.
You can also use string mixins to generate code for an array literal.