diff --git a/homework/transform-containers/CMakeLists.txt b/homework/transform-containers/CMakeLists.txt index 1c924a028..e11fd0f93 100644 --- a/homework/transform-containers/CMakeLists.txt +++ b/homework/transform-containers/CMakeLists.txt @@ -18,7 +18,7 @@ FetchContent_MakeAvailable(googletest) project(transformContainers) enable_testing() -add_executable(${PROJECT_NAME}-ut test.cpp) # add your cpp file here after test.cpp +add_executable(${PROJECT_NAME}-ut unique_map.cpp test.cpp) # add your cpp file here after test.cpp # if this is problematic take a look into CMakeLists.txt files in other exercises add_compile_options(${PROJECT_NAME}-ut -Wall -Wextra -Wconversion -pedantic -Werror) diff --git a/homework/transform-containers/build.bat b/homework/transform-containers/build.bat new file mode 100644 index 000000000..e7fb5f4bb --- /dev/null +++ b/homework/transform-containers/build.bat @@ -0,0 +1,9 @@ +RMDIR build /S /Q +mkdir build +cd build +cmake -G "MinGW Makefiles" .. +MinGW32-make + +transformContainers-ut.exe + +cd .. diff --git a/homework/transform-containers/test.cpp b/homework/transform-containers/test.cpp index 3f6e9c0c8..0c283b742 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -1,6 +1,5 @@ #include "gtest/gtest.h" - -// TODO: add proper includes +#include "unique_map.hpp" TEST(transformContainerTests, ShouldReturnUniqueMap) { std::map expected_result{ diff --git a/homework/transform-containers/unique_map.cpp b/homework/transform-containers/unique_map.cpp new file mode 100644 index 000000000..ed7c0f3b5 --- /dev/null +++ b/homework/transform-containers/unique_map.cpp @@ -0,0 +1,22 @@ +#include "unique_map.hpp" +#include +#include + +std::map removeDuplicateAndTranformToMap(std::list in_list, std::deque in_deque) { + std::map result; + + in_list.sort(); + std::sort(in_deque.begin(), in_deque.end()); + + in_list.erase(std::unique(in_list.begin(), in_list.end()), in_list.end()); + in_deque.erase(std::unique(in_deque.begin(), in_deque.end()), in_deque.end()); + + std::transform(in_list.begin(), in_list.end(), + in_deque.begin(), + std::inserter(result, result.end()), + [](auto& str, auto& num) { + return std::make_pair(num, str); + }); + + return result; +} \ No newline at end of file diff --git a/homework/transform-containers/unique_map.hpp b/homework/transform-containers/unique_map.hpp new file mode 100644 index 000000000..c2d389b8c --- /dev/null +++ b/homework/transform-containers/unique_map.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include +#include +#include +#include + +std::map removeDuplicateAndTranformToMap(std::list, std::deque); \ No newline at end of file