我的两个问题:

-新添加到D中的​​ImportC​​.

-当按​​ForwardRange​​区间与​​.save()​​一起用时,操作可能会意外​​多次运行​​.

import std.stdio;
import std.algorithm;
import std.range
void main() {
size_t 账号数 = 0;

auto r = iota(5)
.map!((i) {
++账号数;
return i;
})
.slide(2);

writefln("%-(%s%)", r);
writeln("账号数: ", 账号数);
}

上述​​.slide(2)​​​代表"滑动窗口",本例中用于成对浏览元素.由于元素在​​0..4​​​范围内,宽度为​​2​​​的​​浮动​​​窗口如下显示元素:首先是​​0和1​​​,然后是​​1和2​​,等等.输出为:

[0,1][1,2][2,3][3,4]
账户数:8

但是,运行8个总共5个元素的帐号和4个窗口可能会令人惊讶.

我在写​​.cached()​​区间来避免它.通过​​挤压​​它,从保存地方​​开始​​使用:

auto r = iota(5)
.map!((i) {
++账号数;
return i;
})
.cached //这里
.slide(2);