Function Vector.replace
Replaces the portion of the vector that begins at element pos
and spans len
characters (or the part of the vector in the slice slice
) by new contents.
size_t replace(Val)
(
const size_t pos,
const size_t len,
auto ref Val val,
const size_t count = 1
) scope
if (is(Val : ElementType));
size_t replace(R)
(
const size_t pos,
const size_t len,
R range
) scope
if (hasLength!R && isBtlInputRange!R && is(ElementEncodingType!R : ElementType));
size_t replace(Vec)
(
const size_t pos,
const size_t len,
auto scope ref Vec vec
) scope
if (isVector!Vec && is(GetElementType!Vec : ElementType));
size_t replace(Val)
(
scope const Vector . ElementType[] slice,
auto ref Val val,
const size_t count = 1
) scope
if (is(Val : ElementType));
size_t replace(R)
(
scope const Vector . ElementType[] slice,
R range
) scope
if (hasLength!R && isBtlInputRange!R && is(ElementEncodingType!R : ElementType));
size_t replace(Vec)
(
scope const Vector . ElementType[] slice,
auto scope ref Vec vec
) scope
if (isVector!Vec && is(GetElementType!Vec : ElementType));
Parameters
pos
position of the first character to be replaced.
len
number of elements to replace (if the vector is shorter, as many elements as possible are replaced).
slice
sub-slice to be removed, slice
must be subset of this
val
inserted value.
Examples
//pos:
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(2, 2, 0, 5);
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(100, 2, 42, 2);
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(2, 100, -1);
assert(pos == 2);
assert(vec == [1, 2, -1]);
}
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(2, 2, [0, 0, 0, 0, 0]);
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(100, 2, [42, 42]);
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(2, 100, [-1]);
assert(pos == 2);
assert(vec == [1, 2, -1]);
}
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(2, 2, Vector!(int, 3) .build(0, 0, 0, 0, 0));
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(100, 2, Vector!(int, 2) .build(42, 42));
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(2, 100, Vector!(int, 2) .build(-1));
assert(pos == 2);
assert(vec == [1, 2, -1]);
}
//ptr:
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(vec[2 .. 4], 0, 5);
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(vec .ptr[100 .. 102], 42, 2);
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(vec .ptr[2 .. 100], -1);
assert(pos == 2);
assert(vec == [1, 2, -1]);
}
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(vec[2 .. 4], [0, 0, 0, 0, 0]);
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(vec .ptr[100 .. 102], [42, 42]);
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(vec .ptr[2 .. 100], [-1]);
assert(pos == 2);
assert(vec == [1, 2, -1]);
}
{
auto vec = Vector!(int, 3) .build(1, 2, 3, 4, 5, 6);
size_t pos = vec .replace(vec[2 .. 4], Vector!(int, 3) .build(0, 0, 0, 0, 0));
assert(pos == 2);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6]);
pos = vec .replace(vec .ptr[100 .. 102], Vector!(int, 2) .build(42, 42));
assert(pos == 9);
assert(vec == [1, 2, 0, 0, 0, 0, 0, 5, 6, 42, 42]);
pos = vec .replace(vec .ptr[2 .. 100], Vector!(int, 2) .build(-1));
assert(pos == 2);
assert(vec == [1, 2, -1]);
}