我有这个c ++ 11代码:
auto gen = []() -> double { /* do stuff */ };
std::generate(myArray.begin(), myArray.end(), gen);
Run Code Online (Sandbox Code Playgroud)
我怎么用D的阵列做同样的事情? std.algorithm.fill不接受函数对象,我不知道如何传递函数recurrence.
这是一个似乎有用的版本:
import std.algorithm, std.array, std.range, std.stdio;
void main() {
writefln("%s", __VERSION__);
int i;
auto dg = delegate float(int) { return i++; };
float[] res = array(map!dg(iota(0, 10)));
float[] res2 = new float[10];
fill(res2, map!dg(iota(0, res2.length)));
writefln("meep");
writefln("%s", res);
writefln("%s", res2);
}
Run Code Online (Sandbox Code Playgroud)
[edit]添加了基于填充的版本(res2).
我在Ideone(http://www.ideone.com/DFK5A)中对它进行了测试,但它崩溃了......一位当前版本的DMD 的朋友说它有效,所以我认为Ideone的DMD刚刚过了十到二十个版本.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |