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.

Examples

1 //pos:
2 {
3     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
4 
5     size_t pos = vec.replace(2, 2, 0, 5);
6     assert(pos == 2);
7     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
8 
9     pos = vec.replace(100, 2, 42, 2);
10     assert(pos == 9);
11     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
12 
13     pos = vec.replace(2, 100, -1);
14     assert(pos == 2);
15     assert(vec == [1, 2,  -1]);
16 }
17 
18 {
19     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
20 
21     size_t pos = vec.replace(2, 2, [0, 0, 0, 0, 0]);
22     assert(pos == 2);
23     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
24 
25     pos = vec.replace(100, 2, [42, 42]);
26     assert(pos == 9);
27     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
28 
29     pos = vec.replace(2, 100, [-1]);
30     assert(pos == 2);
31     assert(vec == [1, 2,  -1]);
32 }
33 
34 {
35     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
36 
37     size_t pos = vec.replace(2, 2, Vector!(int, 3).build(0, 0, 0, 0, 0));
38     assert(pos == 2);
39     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
40 
41     pos = vec.replace(100, 2, Vector!(int, 2).build(42, 42));
42     assert(pos == 9);
43     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
44 
45     pos = vec.replace(2, 100, Vector!(int, 2).build(-1));
46     assert(pos == 2);
47     assert(vec == [1, 2,  -1]);
48 }
49 
50 //ptr:
51 {
52     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
53 
54     size_t pos = vec.replace(vec[2 .. 4], 0, 5);
55     assert(pos == 2);
56     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
57 
58     pos = vec.replace(vec.ptr[100 .. 102], 42, 2);
59     assert(pos == 9);
60     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
61 
62     pos = vec.replace(vec.ptr[2 .. 100], -1);
63     assert(pos == 2);
64     assert(vec == [1, 2,  -1]);
65 }
66 
67 {
68     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
69 
70     size_t pos = vec.replace(vec[2 .. 4], [0, 0, 0, 0, 0]);
71     assert(pos == 2);
72     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
73 
74     pos = vec.replace(vec.ptr[100 .. 102], [42, 42]);
75     assert(pos == 9);
76     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
77 
78     pos = vec.replace(vec.ptr[2 .. 100], [-1]);
79     assert(pos == 2);
80     assert(vec == [1, 2,  -1]);
81 }
82 
83 {
84     auto vec = Vector!(int, 3).build(1, 2, 3, 4, 5, 6);
85 
86     size_t pos = vec.replace(vec[2 .. 4], Vector!(int, 3).build(0, 0, 0, 0, 0));
87     assert(pos == 2);
88     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6]);
89 
90     pos = vec.replace(vec.ptr[100 .. 102], Vector!(int, 2).build(42, 42));
91     assert(pos == 9);
92     assert(vec == [1, 2,  0, 0, 0, 0, 0,  5, 6,  42, 42]);
93 
94     pos = vec.replace(vec.ptr[2 .. 100], Vector!(int, 2).build(-1));
95     assert(pos == 2);
96     assert(vec == [1, 2,  -1]);
97 }

Meta