From f376c4d8871b5352bede8bb828d1ef29fb507cbe Mon Sep 17 00:00:00 2001 From: ctrl-daan Date: Fri, 25 Apr 2025 14:42:08 +0200 Subject: [PATCH] fuctions implemented --- homework/transform-containers/CMakeLists.txt | 2 +- homework/transform-containers/test.cpp | 2 +- homework/transform-containers/transform.cpp | 21 ++++++++++++++++++++ homework/transform-containers/transform.hpp | 9 +++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 homework/transform-containers/transform.cpp create mode 100644 homework/transform-containers/transform.hpp diff --git a/homework/transform-containers/CMakeLists.txt b/homework/transform-containers/CMakeLists.txt index 1c924a028..70898b2a3 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 test.cpp transform.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/test.cpp b/homework/transform-containers/test.cpp index 3f6e9c0c8..6351e030f 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -// TODO: add proper includes +#include "transform.hpp" TEST(transformContainerTests, ShouldReturnUniqueMap) { std::map expected_result{ diff --git a/homework/transform-containers/transform.cpp b/homework/transform-containers/transform.cpp new file mode 100644 index 000000000..14d466298 --- /dev/null +++ b/homework/transform-containers/transform.cpp @@ -0,0 +1,21 @@ +#include "transform.hpp" + +std::map removeDuplicateAndTranformToMap(std::list& slist, std::deque& ideq) { + slist.sort(); + slist.unique(); + std::sort(ideq.begin(), ideq.end()); + ideq.erase(std::unique(ideq.begin(), ideq.end()), ideq.end()); + + std::vector> tempPair; + + std::transform(slist.begin(), slist.end(), ideq.begin(), std::back_inserter(tempPair), [](const std::string& str, int num) { + return std::make_pair(num, str); + }); + + std::map resultMap; + for (const auto& [key, val] : tempPair) { + resultMap.emplace(key, val); + } + + return resultMap; +} \ No newline at end of file diff --git a/homework/transform-containers/transform.hpp b/homework/transform-containers/transform.hpp new file mode 100644 index 000000000..2dab13076 --- /dev/null +++ b/homework/transform-containers/transform.hpp @@ -0,0 +1,9 @@ +#pragma once +#include +#include +#include +#include +#include +#include + +std::map removeDuplicateAndTranformToMap(std::list& slist, std::deque& ideq); \ No newline at end of file