Vector.emplace

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

Return index of first inserted element.

  1. size_t emplace(size_t pos, Args args)
  2. size_t emplace(ElementType* ptr, Args args)
    struct Vector
    scope
    size_t
    emplace
    (
    Args...
    )
    (
    scope const ElementType* ptr
    ,
    auto ref Args args
    )

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")));
}

Meta