D STL Containers Phobos - 我如何使用范围?

Lin*_*enk 3 stl d range

我找不到关于如何将一个范围与容器结合使用的任何好文档.我正在尝试使用给定的.insertAfter()函数将元素插入到SList中.它需要一个范围,我不知道如何检索它.

有人可以发一个例子或两个如何使用这个记录不完整的功能?

这是容器的D文档 - http://dlang.org/phobos/std_container.html

我也读过范围可以像c ++迭代器一样使用.如果这是真的,我如何在循环中使用范围?

rat*_*eak 6

使用slice运算符([])来获取容器的范围

迭代你可以做的容器:

foreach(el;container[]){

}
Run Code Online (Sandbox Code Playgroud)

范围有一个front属性,它是当前指向的元素,范围的popFront将范围移动到下一个元素,empty将指示范围是否在最后

上面的foreach循环相当于

for(auto range=container[];!range.empty;range.popFront()){
    auto el = range.front;

}
Run Code Online (Sandbox Code Playgroud)

要插入到列表中间,您需要执行此操作

container.insertAfter(take(container[],5),element);
Run Code Online (Sandbox Code Playgroud)

在最后插入它

container.insertAfter(container[],element);
Run Code Online (Sandbox Code Playgroud)