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.
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]);
}