Fixed: 26 - Sequential Containers
This commit is contained in:
@@ -9,6 +9,6 @@ namespace stl_containers {
|
|||||||
[[nodiscard]] auto merge_sorted_vectors(const std::vector<int>& a, const std::vector<int>& b)
|
[[nodiscard]] auto merge_sorted_vectors(const std::vector<int>& a, const std::vector<int>& b)
|
||||||
-> std::vector<int>;
|
-> std::vector<int>;
|
||||||
[[nodiscard]] auto list_to_vector(const std::list<int>& data) -> std::vector<int>;
|
[[nodiscard]] auto list_to_vector(const std::list<int>& data) -> std::vector<int>;
|
||||||
[[nodiscard]] auto rotate_deque(std::deque<int> data, int steps) -> std::deque<int>;
|
[[nodiscard]] auto rotate_deque(const std::deque<int> &data, int steps) -> std::deque<int>;
|
||||||
|
|
||||||
} // namespace stl_containers
|
} // namespace stl_containers
|
||||||
|
|||||||
@@ -4,18 +4,38 @@ namespace stl_containers {
|
|||||||
|
|
||||||
auto merge_sorted_vectors(const std::vector<int>& a, const std::vector<int>& b)
|
auto merge_sorted_vectors(const std::vector<int>& a, const std::vector<int>& b)
|
||||||
-> std::vector<int> {
|
-> std::vector<int> {
|
||||||
(void)a; (void)b;
|
std::vector<int> v;
|
||||||
return {};
|
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<int>& data) -> std::vector<int> {
|
auto list_to_vector(const std::list<int>& data) -> std::vector<int> {
|
||||||
(void)data;
|
return std::vector(data.begin(), data.end());
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
auto rotate_deque(std::deque<int> data, int steps) -> std::deque<int> {
|
auto rotate_deque(const std::deque<int> &data, const int steps) -> std::deque<int> {
|
||||||
(void)data; (void)steps;
|
auto result = std::deque{data};
|
||||||
return {};
|
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
|
} // namespace stl_containers
|
||||||
|
|||||||
@@ -12,4 +12,5 @@ TEST(SequentialContainers, ListToVector) {
|
|||||||
|
|
||||||
TEST(SequentialContainers, RotateDeque) {
|
TEST(SequentialContainers, RotateDeque) {
|
||||||
EXPECT_EQ(stl_containers::rotate_deque({1, 2, 3, 4}, 1), (std::deque<int>{2, 3, 4, 1}));
|
EXPECT_EQ(stl_containers::rotate_deque({1, 2, 3, 4}, 1), (std::deque<int>{2, 3, 4, 1}));
|
||||||
|
EXPECT_EQ(stl_containers::rotate_deque({1, 2, 3, 4}, 2), (std::deque<int>{3, 4, 1, 2}));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user