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)
|
||||
-> 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
|
||||
|
||||
@@ -4,18 +4,38 @@ namespace stl_containers {
|
||||
|
||||
auto merge_sorted_vectors(const std::vector<int>& a, const std::vector<int>& b)
|
||||
-> std::vector<int> {
|
||||
(void)a; (void)b;
|
||||
return {};
|
||||
std::vector<int> 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<int>& data) -> std::vector<int> {
|
||||
(void)data;
|
||||
return {};
|
||||
return std::vector(data.begin(), data.end());
|
||||
}
|
||||
|
||||
auto rotate_deque(std::deque<int> data, int steps) -> std::deque<int> {
|
||||
(void)data; (void)steps;
|
||||
return {};
|
||||
auto rotate_deque(const std::deque<int> &data, const int steps) -> std::deque<int> {
|
||||
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
|
||||
|
||||
@@ -12,4 +12,5 @@ TEST(SequentialContainers, ListToVector) {
|
||||
|
||||
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}, 2), (std::deque<int>{3, 4, 1, 2}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user