Function Vector.emplace

Inserts a new element into the container directly before pos or ptr.

size_t emplace(Args...) (
  const size_t pos,
  auto ref Args args
) scope;

size_t emplace(Args...) (
  scope const Vector.ElementType* ptr,
  auto ref Args args
) scope;

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.

args arguments to forward to the constructor of the element

Examples

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

    vec.emplace(1, 42);
    assert(vec == [1, 42, 2, 3]);

    vec.emplace(4, 314);
    assert(vec == [1, 42, 2, 3, 314]);

    vec.emplace(100, -1);
    assert(vec == [1, 42, 2, 3, 314, -1]);
}

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

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

    vec.emplace(vec.ptr + 4, 314);
    assert(vec == [1, 42, 2, 3, 314]);

    vec.emplace(vec.ptr + 100, -1);
    assert(vec == [1, 42, 2, 3, 314, -1]);
}

{
    static struct Foo{
        int i;
        string str;
    }

    auto vec = Vector!(Foo, 6).build(Foo(1, "A"));

    vec.emplace(1, 2, "B");
    assert(vec == only(Foo(1, "A"), Foo(2, "B")));

    vec.emplace(0, 42, "X");
    assert(vec == only(Foo(42, "X"), Foo(1, "A"), Foo(2, "B")));
}