View source code
Display the source code in std/container/dlist.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Module std.container.dlist
This module implements a generic doubly-linked list container. It can be used as a queue, dequeue or stack.
This module is a submodule of std
.
Example
import std .algorithm .comparison : equal;
import std .container : DList;
auto s = DList!int(1, 2, 3);
assert(equal(s[], [1, 2, 3]));
s .removeFront();
assert(equal(s[], [2, 3]));
s .removeBack();
assert(equal(s[], [2]));
s .insertFront([4, 5]);
assert(equal(s[], [4, 5, 2]));
s .insertBack([6, 7]);
assert(equal(s[], [4, 5, 2, 6, 7]));
// If you want to apply range operations, simply slice it.
import std .algorithm .searching : countUntil;
import std .range : popFrontN, popBackN, walkLength;
auto sl = DList!int([1, 2, 3, 4, 5]);
writeln(countUntil(sl[], 2)); // 1
auto r = sl[];
popFrontN(r, 2);
popBackN(r, 2);
assert(r .equal([3]));
writeln(walkLength(r)); // 1
// DList.Range can be used to remove elements from the list it spans
auto nl = DList!int([1, 2, 3, 4, 5]);
for (auto rn = nl[]; !rn .empty;)
if (rn .front % 2 == 0)
nl .popFirstOf(rn);
else
rn .popFront();
assert(equal(nl[], [1, 3, 5]));
auto rs = nl[];
rs .popFront();
nl .remove(rs);
assert(equal(nl[], [1]));
Structs
Name | Description |
---|---|
DList
|
Implements a doubly-linked list. |
Authors
License
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ).
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.