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