SList.insertAfter

Inserts stuff after range r, which must be a range previously extracted from this container. Given that all ranges for a list end at the end of the list, this function essentially appends to the list and uses r as a potentially fast way to reach the last node in the list. Ideally r is positioned near or at the last element of the list.

stuff can be a value convertible to T or a range of objects convertible to T. The stable version behaves the same, but guarantees that ranges iterating over the container are never invalidated.

  1. size_t insertAfter(Range r, Stuff stuff)
    struct SList(T)
    size_t
    insertAfter
    (
    Stuff
    )
    (,
    Stuff stuff
    )
    if ()
    if (
    !is(T == shared)
    )
  2. size_t insertAfter(Take!Range r, Stuff stuff)

Return Value

Type: size_t

The number of values inserted.

Complexity: O(k + m), where k is the number of elements in r and m is the length of stuff.

Examples

auto sl = SList!string(["a", "b", "d"]);
sl.insertAfter(sl[], "e"); // insert at the end (slowest)
assert(std.algorithm.equal(sl[], ["a", "b", "d", "e"]));
sl.insertAfter(std.range.take(sl[], 2), "c"); // insert after "b"
assert(std.algorithm.equal(sl[], ["a", "b", "c", "d", "e"]));

Meta