diff --git a/homework/transform-containers/CMakeLists.txt b/homework/transform-containers/CMakeLists.txt index 1c924a028..d04a46e1f 100644 --- a/homework/transform-containers/CMakeLists.txt +++ b/homework/transform-containers/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.11.0) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) include(FetchContent) @@ -18,7 +18,8 @@ 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} main.cpp) +add_executable(${PROJECT_NAME}-ut test.cpp transform_containers.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/main.cpp b/homework/transform-containers/main.cpp new file mode 100644 index 000000000..7c7ec34fb --- /dev/null +++ b/homework/transform-containers/main.cpp @@ -0,0 +1,5 @@ +#include "transform_containers.hpp" + +int main() { + return 0; +} \ No newline at end of file diff --git a/homework/transform-containers/test.cpp b/homework/transform-containers/test.cpp index 3f6e9c0c8..70cc3ee20 100644 --- a/homework/transform-containers/test.cpp +++ b/homework/transform-containers/test.cpp @@ -1,6 +1,7 @@ #include "gtest/gtest.h" // TODO: add proper includes +#include "transform_containers.hpp" TEST(transformContainerTests, ShouldReturnUniqueMap) { std::map expected_result{ diff --git a/homework/transform-containers/transform_containers.cpp b/homework/transform-containers/transform_containers.cpp new file mode 100644 index 000000000..bf2bf59e0 --- /dev/null +++ b/homework/transform-containers/transform_containers.cpp @@ -0,0 +1,19 @@ +#include "transform_containers.hpp" + +std::map removeDuplicateAndTranformToMap(std::list words, std::deque nums) { + std::map transformed{}; + + std::ranges::sort(nums); + auto new_end = std::unique(nums.begin(), nums.end()); + nums.erase(new_end, nums.end()); + + words.sort(); + words.unique(); + + std::vector> temp; + temp.reserve(std::min(nums.size(), words.size())); + auto f = [](int num, std::string& word) { return std::make_pair(num, word); }; + std::transform(nums.begin(), nums.end(), words.begin(), std::back_inserter(temp), f); + transformed.insert(temp.begin(), temp.end()); + return transformed; +} \ No newline at end of file diff --git a/homework/transform-containers/transform_containers.hpp b/homework/transform-containers/transform_containers.hpp new file mode 100644 index 000000000..3931862bc --- /dev/null +++ b/homework/transform-containers/transform_containers.hpp @@ -0,0 +1,10 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include + +std::map removeDuplicateAndTranformToMap(std::list list, std::deque deque); \ No newline at end of file