| 11 | #include <cassert> |
| 12 | |
| 13 | int main() |
| 14 | { |
| 15 | { |
| 16 | // include:push-back/start |
| 17 | auto v1 = immer::flex_vector<int>{1}; |
| 18 | auto v2 = v1.push_back(8); |
| 19 | |
| 20 | assert((v1 == immer::flex_vector<int>{1})); |
| 21 | assert((v2 == immer::flex_vector<int>{1, 8})); |
| 22 | // include:push-back/end |
| 23 | } |
| 24 | { |
| 25 | // include:push-front/start |
| 26 | auto v1 = immer::flex_vector<int>{1}; |
| 27 | auto v2 = v1.push_front(8); |
| 28 | |
| 29 | assert((v1 == immer::flex_vector<int>{1})); |
| 30 | assert((v2 == immer::flex_vector<int>{8, 1})); |
| 31 | // include:push-front/end |
| 32 | } |
| 33 | |
| 34 | { |
| 35 | // include:set/start |
| 36 | auto v1 = immer::flex_vector<int>{1, 2, 3}; |
| 37 | auto v2 = v1.set(0, 5); |
| 38 | |
| 39 | assert((v1 == immer::flex_vector<int>{1, 2, 3})); |
| 40 | assert((v2 == immer::flex_vector<int>{5, 2, 3})); |
| 41 | // include:set/end |
| 42 | } |
| 43 | |
| 44 | { |
| 45 | // include:update/start |
| 46 | auto v1 = immer::flex_vector<int>{1, 2, 3, 4}; |
| 47 | auto v2 = v1.update(2, [&](auto l) { return ++l; }); |
| 48 | |
| 49 | assert((v1 == immer::flex_vector<int>{1, 2, 3, 4})); |
| 50 | assert((v2 == immer::flex_vector<int>{1, 2, 4, 4})); |
| 51 | // include:update/end |
| 52 | } |
| 53 | |
| 54 | { |
| 55 | // include:take/start |
| 56 | auto v1 = immer::flex_vector<int>{1, 2, 3, 4, 5, 6}; |
| 57 | auto v2 = v1.take(3); |
| 58 | |
| 59 | assert((v1 == immer::flex_vector<int>{1, 2, 3, 4, 5, 6})); |
| 60 | assert((v2 == immer::flex_vector<int>{1, 2, 3})); |
| 61 | // include:take/end |
| 62 | } |
| 63 | |
| 64 | { |
| 65 | // include:drop/start |
| 66 | auto v1 = immer::flex_vector<int>{1, 2, 3, 4, 5, 6}; |
| 67 | auto v2 = v1.drop(3); |
| 68 | |
| 69 | assert((v1 == immer::flex_vector<int>{1, 2, 3, 4, 5, 6})); |
| 70 | assert((v2 == immer::flex_vector<int>{4, 5, 6})); |