Function Vector.insert

Inserts additional elements into the Vector right before the element indicated by pos or ptr.

size_t insert(R) (
  const size_t pos,
  R range
) scope
if (hasLength!R && isBtlInputRange!R && is(ElementEncodingType!R : ElementType));

size_t insert(Vec) (
  const size_t pos,
  auto scope ref Vec vec
) scope
if (isVector!Vec && is(GetElementType!Vec : ElementType));

size_t insert(Val) (
  const size_t pos,
  auto ref Val val,
  const size_t count = 1
) scope
if (is(Val : ElementType));

size_t insert(R) (
  scope const Vector.ElementType* ptr,
  R range
) scope
if (isBtlInputRange!R && is(ElementEncodingType!R : ElementType));

size_t insert(Vec) (
  scope const Vector.ElementType* ptr,
  auto scope ref Vec vec
) scope
if (isVector!Vec && is(GetElementType!Vec : ElementType));

size_t insert(Val) (
  scope const Vector.ElementType* ptr,
  auto ref Val val,
  const size_t count = 1
) scope
if (is(Val : ElementType));

Return index of first inserted element.

Parameters

pos Insertion point, the new contents are inserted before the element at position pos.

ptr Pointer pointing to the insertion point, the new contents are inserted before the element pointed by ptr.

val Value inserted before insertion point pos or ptr.

vec appended vector.

range appended input renge.

count Number of times val is inserted.

Examples

//pos:
{
    auto vec = Vector!(int, 3).build(1, 2, 3);

    size_t pos = vec.insert(1, 42, 2);
    assert(pos == 1);
    assert(vec == [1, 42, 42, 2, 3]);

    pos = vec.insert(100, 4, 3);
    assert(pos == 5);
    assert(vec == [1, 42, 42, 2, 3, 4, 4, 4]);
}

{
    auto vec = Vector!(int, 3).build(1, 2, 3);

    size_t pos = vec.insert(1, [20, 30, 40]);
    assert(pos == 1);
    assert(vec == [1, 20, 30, 40, 2, 3]);

    pos = vec.insert(100, [4, 5, 6]);
    assert(pos == 6);
    assert(vec == [1, 20, 30, 40, 2, 3, 4, 5, 6]);
}

{
    auto vec = Vector!(int, 3).build(1, 2, 3);
    auto tmp = Vector!(int, 10).build(-1, -2, -3);

    size_t pos = vec.insert(1, tmp);
    assert(pos == 1);
    assert(vec == [1, -1, -2, -3, 2, 3]);

    pos = vec.insert(100, Vector!(int, 10).build(40, 50, 60));
    assert(pos == 6);
    assert(vec == [1, -1, -2, -3, 2, 3, 40, 50, 60]);
}

//ptr:
{
    auto vec = Vector!(int, 3).build(1, 2, 3);

    size_t pos = vec.insert(vec.ptr + 1, 42, 2);
    assert(pos == 1);
    assert(vec == [1, 42, 42, 2, 3]);

    pos = vec.insert(vec.ptr + 100, 4, 3);
    assert(pos == 5);
    assert(vec == [1, 42, 42, 2, 3, 4, 4, 4]);
}

{
    auto vec = Vector!(int, 3).build(1, 2, 3);

    size_t pos = vec.insert(vec.ptr + 1, [20, 30, 40]);
    assert(pos == 1);
    assert(vec == [1, 20, 30, 40, 2, 3]);

    pos = vec.insert(vec.ptr + 100, [4, 5, 6]);
    assert(pos == 6);
    assert(vec == [1, 20, 30, 40, 2, 3, 4, 5, 6]);
}

{
    auto vec = Vector!(int, 3).build(1, 2, 3);
    auto tmp = Vector!(int, 10).build(-1, -2, -3);

    size_t pos = vec.insert(vec.ptr + 1, tmp);
    assert(pos == 1);
    assert(vec == [1, -1, -2, -3, 2, 3]);

    pos = vec.insert(vec.ptr + 100, Vector!(int, 10).build(40, 50, 60));
    assert(pos == 6);
    assert(vec == [1, -1, -2, -3, 2, 3, 40, 50, 60]);
}