From 83cbdd80dcf9ed35c5b3086b1087a64daf9ac68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:27:30 +0300 Subject: [PATCH 01/15] Plain lambda --- cpp2.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 cpp2.cpp diff --git a/cpp2.cpp b/cpp2.cpp new file mode 100644 index 0000000..f464b41 --- /dev/null +++ b/cpp2.cpp @@ -0,0 +1,31 @@ +#include +#include + +constexpr size_t ARRSIZ = 5; + +int increment(int n) { + return n + 1; +} + +void print(const std::vector& arr){ + for(const int n : arr) + std::cout << n << "\n"; + std::cout << std::endl; +} + + +void my_objective(std::vector& arr, int (*f)(int)) { + for (int i = 0; i < arr.size(); ++i) + arr[i] = f(arr[i]); +} + +int main() { + std::vector arr = {0, 1, 2, 3, 4}; + + my_objective(arr, [](int n){ return n + 1;}); + + print(arr); + + std::cin.get(); + +} From b87119c62449840c4ffab05e26faf3a6773df526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:34:40 +0300 Subject: [PATCH 02/15] C style function pointer --- cpp1.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 cpp1.cpp diff --git a/cpp1.cpp b/cpp1.cpp new file mode 100644 index 0000000..00ea49d --- /dev/null +++ b/cpp1.cpp @@ -0,0 +1,31 @@ +#include + +constexpr size_t ARRSIZ = 5; + +int increment(int n) { + return n + 1; +} + +template +void print(const int (&arr)[N]){ + + for (int i = 0; i < N; ++i) + std::cout << arr[i] << "\n"; + std::cout << std::endl; +} + +void my_objective(int* arr, const size_t N, int (*f)(int)) { + for (int i = 0; i < N; ++i) + arr[i] = f(arr[i]); +} + +int main() { + + int arr[ARRSIZ] = {0, 1, 2, 3, 4}; + my_objective(arr, ARRSIZ, increment); + + print(arr); + + std::cin.get(); + +} From af8fd94788737c2c12e7a6ad02be1b769a659e31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:35:22 +0300 Subject: [PATCH 03/15] Update cpp2.cpp --- cpp2.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp2.cpp b/cpp2.cpp index f464b41..9e5ea9e 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -1,8 +1,6 @@ #include #include -constexpr size_t ARRSIZ = 5; - int increment(int n) { return n + 1; } From 4dc20533e811c2ce4412ab35c49dd4499c4ebd20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:35:42 +0300 Subject: [PATCH 04/15] Plain lambda --- cpp2.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/cpp2.cpp b/cpp2.cpp index 9e5ea9e..2d45f83 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -11,7 +11,6 @@ void print(const std::vector& arr){ std::cout << std::endl; } - void my_objective(std::vector& arr, int (*f)(int)) { for (int i = 0; i < arr.size(); ++i) arr[i] = f(arr[i]); From a30a76cf9c73d57088d19b0bdcd3a2901e3d0f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:42:44 +0300 Subject: [PATCH 05/15] Functional wrapper --- cpp3.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 cpp3.cpp diff --git a/cpp3.cpp b/cpp3.cpp new file mode 100644 index 0000000..577b35e --- /dev/null +++ b/cpp3.cpp @@ -0,0 +1,29 @@ +#include +#include +#include + +int increment(int n) { + return n + 1; +} + +void print(const std::vector& arr){ + for(const int n : arr) + std::cout << n << "\n"; + std::cout << std::endl; +} + +void my_objective(std::vector& arr, const std::function& f) { + for (int i = 0; i < arr.size(); ++i) + arr[i] = f(arr[i]); +} + +int main() { + std::vector arr = {0, 1, 2, 3, 4}; + + my_objective(arr, [](int n){ return n + 1;}); + + print(arr); + + std::cin.get(); + +} From 37591f68f448a83872cfce8f70583a3e854194a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:43:39 +0300 Subject: [PATCH 06/15] Function wrapper --- cpp3.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cpp3.cpp b/cpp3.cpp index 577b35e..afcb293 100644 --- a/cpp3.cpp +++ b/cpp3.cpp @@ -2,10 +2,6 @@ #include #include -int increment(int n) { - return n + 1; -} - void print(const std::vector& arr){ for(const int n : arr) std::cout << n << "\n"; From 8d07e763b8a776d3836ffff66a678e4ba396a4d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:44:05 +0300 Subject: [PATCH 07/15] Plain lambda --- cpp2.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/cpp2.cpp b/cpp2.cpp index 2d45f83..ef52404 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -1,9 +1,6 @@ #include #include -int increment(int n) { - return n + 1; -} void print(const std::vector& arr){ for(const int n : arr) From bcb9b2667b95f94c07da9b360150cafeedbae14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:51:12 +0300 Subject: [PATCH 08/15] Functor method --- cpp4.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 cpp4.cpp diff --git a/cpp4.cpp b/cpp4.cpp new file mode 100644 index 0000000..8a97323 --- /dev/null +++ b/cpp4.cpp @@ -0,0 +1,34 @@ +#include +#include + +struct increment{ + + int operator()(int n) const{ + return n + 1; + } +}; + + +void my_objective(std::vector& vec, const increment& f) { + for (int i = 0; i < arr.size(); ++i) + arr[i] = f(arr[i]); +} + +void print(const std::vector& vec){ + for(const int n : vec) + std::cout << n << "\n"; + std::cout << std::endl; +} + + +int main() { + std::vector vec = {0, 1, 2, 3, 4}; + const increment functor; + + my_objective(vec, functor); + + print(vec); + + std::cin.get(); + +} From 701f9f624bdd25ad22312d7564d2ad3effff200b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:52:16 +0300 Subject: [PATCH 09/15] Plain lambda --- cpp2.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp2.cpp b/cpp2.cpp index ef52404..245b21c 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -2,23 +2,23 @@ #include -void print(const std::vector& arr){ +void print(const std::vector& vec){ for(const int n : arr) std::cout << n << "\n"; std::cout << std::endl; } -void my_objective(std::vector& arr, int (*f)(int)) { +void my_objective(std::vector& vec, int (*f)(int)) { for (int i = 0; i < arr.size(); ++i) arr[i] = f(arr[i]); } int main() { - std::vector arr = {0, 1, 2, 3, 4}; + std::vector vec = {0, 1, 2, 3, 4}; - my_objective(arr, [](int n){ return n + 1;}); + my_objective(vec, [](int n){ return n + 1;}); - print(arr); + print(vec); std::cin.get(); From 7915955def1ca28c39208adabe9838646283ae50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 00:52:58 +0300 Subject: [PATCH 10/15] Function wrapper --- cpp3.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp3.cpp b/cpp3.cpp index afcb293..7091804 100644 --- a/cpp3.cpp +++ b/cpp3.cpp @@ -2,23 +2,23 @@ #include #include -void print(const std::vector& arr){ +void print(const std::vector& vec){ for(const int n : arr) std::cout << n << "\n"; std::cout << std::endl; } -void my_objective(std::vector& arr, const std::function& f) { +void my_objective(std::vector& vec, const std::function& f) { for (int i = 0; i < arr.size(); ++i) arr[i] = f(arr[i]); } int main() { - std::vector arr = {0, 1, 2, 3, 4}; + std::vector vec = {0, 1, 2, 3, 4}; - my_objective(arr, [](int n){ return n + 1;}); + my_objective(vec, [](int n){ return n + 1;}); - print(arr); + print(vec); std::cin.get(); From dbaa021f1fec46beeac4d777f4baceac204e255b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:25:24 +0300 Subject: [PATCH 11/15] Plain lambda --- cpp2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp2.cpp b/cpp2.cpp index 245b21c..d493c31 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -9,7 +9,7 @@ void print(const std::vector& vec){ } void my_objective(std::vector& vec, int (*f)(int)) { - for (int i = 0; i < arr.size(); ++i) + for (int i = 0; i < vec.size(); ++i) arr[i] = f(arr[i]); } From 48beea0a24393641856fdfb3cb3d1c3aa0de3d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:26:14 +0300 Subject: [PATCH 12/15] Plain lambda --- cpp2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp2.cpp b/cpp2.cpp index d493c31..03cad54 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -10,7 +10,7 @@ void print(const std::vector& vec){ void my_objective(std::vector& vec, int (*f)(int)) { for (int i = 0; i < vec.size(); ++i) - arr[i] = f(arr[i]); + vec[i] = f(vec[i]); } int main() { From 00bb450604cf46f58f797ca78e0e57a48bbe01cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:27:32 +0300 Subject: [PATCH 13/15] Function wrapper --- cpp3.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp3.cpp b/cpp3.cpp index 7091804..6698b3b 100644 --- a/cpp3.cpp +++ b/cpp3.cpp @@ -9,14 +9,14 @@ void print(const std::vector& vec){ } void my_objective(std::vector& vec, const std::function& f) { - for (int i = 0; i < arr.size(); ++i) - arr[i] = f(arr[i]); + for (int i = 0; i < vec.size(); ++i) + vec[i] = f(vec[i]); } int main() { std::vector vec = {0, 1, 2, 3, 4}; - my_objective(vec, [](int n){ return n + 1;}); + my_objective(vec, [&](int n){ return n + 1;}); print(vec); From 0b9e9ae4bf9636e0bd05b0ccd04d21e771ac4b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:28:18 +0300 Subject: [PATCH 14/15] Plain lambda --- cpp2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp2.cpp b/cpp2.cpp index 245b21c..03cad54 100644 --- a/cpp2.cpp +++ b/cpp2.cpp @@ -9,8 +9,8 @@ void print(const std::vector& vec){ } void my_objective(std::vector& vec, int (*f)(int)) { - for (int i = 0; i < arr.size(); ++i) - arr[i] = f(arr[i]); + for (int i = 0; i < vec.size(); ++i) + vec[i] = f(vec[i]); } int main() { From ec926acb2ed1da31a7e4e01982fb835095e1fc79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fevzi=20Y=C3=BCksel?= <93267352+FevziYuksel@users.noreply.github.com> Date: Thu, 16 Mar 2023 18:29:57 +0300 Subject: [PATCH 15/15] Functor object operator () --- cpp4.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp4.cpp b/cpp4.cpp index 8a97323..8137375 100644 --- a/cpp4.cpp +++ b/cpp4.cpp @@ -10,8 +10,8 @@ struct increment{ void my_objective(std::vector& vec, const increment& f) { - for (int i = 0; i < arr.size(); ++i) - arr[i] = f(arr[i]); + for (int i = 0; i < vec.size(); ++i) + vec[i] = f(vec[i]); } void print(const std::vector& vec){