【问题标题】:D STL Containers Phobos - How do I use a range?D STL Containers Phobos - 如何使用范围?
【发布时间】:2012-06-12 19:25:14
【问题描述】:

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

有人可以发布一两个如何使用这个记录不充分的功能的示例吗?

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

我还阅读了范围可以像 c++ 迭代器一样使用。如果这是真的,我该如何在循环中使用范围?

【问题讨论】:

标签: stl range d


【解决方案1】:

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

迭代一个容器,你可以这样做:

foreach(el;container[]){

}

范围有一个front属性,即当前指向的元素,范围的popFront将范围移动到下一个元素,空表示范围是否在末尾​​p>

上面的foreach循环等价于

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

}

要插入到列表的中间,您需要这样做

container.insertAfter(take(container[],5),element);

在末尾插入

container.insertAfter(container[],element);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多