From 4314f9126a9a4586201b5f9c7dbfb4d2a65eded6 Mon Sep 17 00:00:00 2001 From: studiosi Date: Sun, 16 Aug 2026 10:10:37 +0300 Subject: [PATCH] Fixed: 26 - Sequential Containers --- .../include/sequential_containers.hpp | 2 +- .../src/sequential_containers.cpp | 34 +++++++++++++++---- .../test/sequential_containers_test.cpp | 1 + 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/modules/07_stl_containers/include/sequential_containers.hpp b/modules/07_stl_containers/include/sequential_containers.hpp index 921abb8..f95ae23 100644 --- a/modules/07_stl_containers/include/sequential_containers.hpp +++ b/modules/07_stl_containers/include/sequential_containers.hpp @@ -9,6 +9,6 @@ namespace stl_containers { [[nodiscard]] auto merge_sorted_vectors(const std::vector& a, const std::vector& b) -> std::vector; [[nodiscard]] auto list_to_vector(const std::list& data) -> std::vector; -[[nodiscard]] auto rotate_deque(std::deque data, int steps) -> std::deque; +[[nodiscard]] auto rotate_deque(const std::deque &data, int steps) -> std::deque; } // namespace stl_containers diff --git a/modules/07_stl_containers/src/sequential_containers.cpp b/modules/07_stl_containers/src/sequential_containers.cpp index 6b69292..4ae4057 100644 --- a/modules/07_stl_containers/src/sequential_containers.cpp +++ b/modules/07_stl_containers/src/sequential_containers.cpp @@ -4,18 +4,38 @@ namespace stl_containers { auto merge_sorted_vectors(const std::vector& a, const std::vector& b) -> std::vector { - (void)a; (void)b; - return {}; + std::vector v; + auto aIt = a.begin(); + auto bIt = b.begin(); + while (aIt != a.end() && bIt != b.end()) { + if (*aIt >= *bIt) { + v.push_back(*bIt++); + } else { + v.push_back(*aIt++); + } + } + while (aIt != a.end()) { + v.push_back(*aIt++); + } + while (bIt != b.end()) { + v.push_back(*bIt++); + } + return v; } auto list_to_vector(const std::list& data) -> std::vector { - (void)data; - return {}; + return std::vector(data.begin(), data.end()); } -auto rotate_deque(std::deque data, int steps) -> std::deque { - (void)data; (void)steps; - return {}; +auto rotate_deque(const std::deque &data, const int steps) -> std::deque { + auto result = std::deque{data}; + for (auto i = 0; i < steps; ++i) { + // Take from the front, add to the end + auto aux = result.front(); + result.push_back(aux); + result.pop_front(); + } + return result; } } // namespace stl_containers diff --git a/modules/07_stl_containers/test/sequential_containers_test.cpp b/modules/07_stl_containers/test/sequential_containers_test.cpp index 6ea5942..77c7f1e 100644 --- a/modules/07_stl_containers/test/sequential_containers_test.cpp +++ b/modules/07_stl_containers/test/sequential_containers_test.cpp @@ -12,4 +12,5 @@ TEST(SequentialContainers, ListToVector) { TEST(SequentialContainers, RotateDeque) { EXPECT_EQ(stl_containers::rotate_deque({1, 2, 3, 4}, 1), (std::deque{2, 3, 4, 1})); + EXPECT_EQ(stl_containers::rotate_deque({1, 2, 3, 4}, 2), (std::deque{3, 4, 1, 2})); }