From 0ea2c43f45a19fb1151ac54bbdd6c46e19fa2448 Mon Sep 17 00:00:00 2001 From: Amar Mahmutbegovic Date: Thu, 8 May 2025 23:01:29 +0200 Subject: [PATCH] add Chapter06 --- Chapter06/copy_if.cpp | 27 ++++++++++ Chapter06/function_overloading.cpp | 17 +++++++ Chapter06/lvalue_refs.cpp | 26 ++++++++++ Chapter06/main | Bin 0 -> 48480 bytes Chapter06/priority_queue_adaptor.cpp | 72 +++++++++++++++++++++++++++ Chapter06/rvalue.cpp | 19 +++++++ Chapter06/rvalue_refs.cpp | 27 ++++++++++ Chapter06/sort.cpp | 34 +++++++++++++ 8 files changed, 222 insertions(+) create mode 100644 Chapter06/copy_if.cpp create mode 100644 Chapter06/function_overloading.cpp create mode 100644 Chapter06/lvalue_refs.cpp create mode 100755 Chapter06/main create mode 100644 Chapter06/priority_queue_adaptor.cpp create mode 100644 Chapter06/rvalue.cpp create mode 100644 Chapter06/rvalue_refs.cpp create mode 100644 Chapter06/sort.cpp diff --git a/Chapter06/copy_if.cpp b/Chapter06/copy_if.cpp new file mode 100644 index 0000000..f04406e --- /dev/null +++ b/Chapter06/copy_if.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +void print_container(const auto& container) { + + for(auto& elem: container) { + printf("%d ", elem); + } + printf("\r\n"); +} + +int main() { + + std::array src{0}; + std::array dst{0}; + + std::iota(src.begin(), src.end(), 0); + std::copy_if(src.begin(), src.end(), dst.begin(),[] (int x) {return x > 3;}); + + print_container(src); + print_container(dst); + + return 0; +} diff --git a/Chapter06/function_overloading.cpp b/Chapter06/function_overloading.cpp new file mode 100644 index 0000000..42cc8e6 --- /dev/null +++ b/Chapter06/function_overloading.cpp @@ -0,0 +1,17 @@ +#include + +void print(int a) { + printf("Int %d\r\n", a); +} + +void print(float a) { + printf("Float %2.f\r\n", a); +} + +int main() { + + print(2); + print(2.f); + + return 0; +} diff --git a/Chapter06/lvalue_refs.cpp b/Chapter06/lvalue_refs.cpp new file mode 100644 index 0000000..5389734 --- /dev/null +++ b/Chapter06/lvalue_refs.cpp @@ -0,0 +1,26 @@ +#include + + + +int main() { + + int a = 42; + + int& a_ref = a; + + const int& a_const_ref = a; + + + printf("a = %d\r\n", a); + + + a_ref = 16; + + printf("a = %d\r\n", a); + + + // a_const_ref = 16; compiler error + + return 0; + +} diff --git a/Chapter06/main b/Chapter06/main new file mode 100755 index 0000000000000000000000000000000000000000..e3401c7cbcf45dda69cc5c3dff0dde796bea93e4 GIT binary patch literal 48480 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 +#include +#include +#include + +template class fixed_vector : public std::array { + + public: + void push_back(const T &el) { + if(cnt_ < S) { + this->at(cnt_) = el; + ++cnt_; + } + } + + T &back() { + return this->at(cnt_-1); + } + + void pop_back() { + if(cnt_) { + --cnt_; + } + } + + auto end() { + return std::array::begin() + cnt_; + } + + bool empty() const { + return cnt_ == 0; + } + + private: + size_t cnt_ = 0; +}; + +int main() { + + std::priority_queue> pq; + + pq.push(10); + pq.push(4); + pq.push(8); + pq.push(1); + pq.push(2); + + printf("Popping elements from priority queue: "); + + while(!pq.empty()) { + printf("%d ", pq.top()); + pq.pop(); + } + + std::stack> st; + + st.push(10); + st.push(4); + st.push(8); + st.push(1); + st.push(2); + + printf("\r\nPopping elements from stack (LIFO): "); + + while(!st.empty()) { + printf("%d ", st.top()); + st.pop(); + } + printf("\r\n"); + + return 0; +} diff --git a/Chapter06/rvalue.cpp b/Chapter06/rvalue.cpp new file mode 100644 index 0000000..7c047a9 --- /dev/null +++ b/Chapter06/rvalue.cpp @@ -0,0 +1,19 @@ +#include + +struct my_struct { + + int a_; + + my_struct() : a_(0) {} + + my_struct(int a) : a_(a) {} + +}; + +int main() { + + printf("a_ = %d\r\n", my_struct().a_); + printf("a_ = %d\r\n", (my_struct()=my_struct(16)).a_); + + return 0; +} diff --git a/Chapter06/rvalue_refs.cpp b/Chapter06/rvalue_refs.cpp new file mode 100644 index 0000000..90f9fef --- /dev/null +++ b/Chapter06/rvalue_refs.cpp @@ -0,0 +1,27 @@ +#include +#include +#include + +int main() +{ + + std::string str = "Hello world, this is move semantics demo!!!"; + printf("str.data address is %p\r\n", (void*)str.data()); + + std::vector v; + + v.push_back(str); + printf("str after copy is <%s>\r\n", str.data()); + + v.push_back(std::move(str)); + //v.push_back(static_cast(str)); + + printf("str after move is <%s>\r\n", str.data()); + + for(const auto & s:v) { + printf("s is <%s>\r\n", s.data()); + printf("s.data address is %p\r\n", (void*)s.data()); + } + + return 0; +} diff --git a/Chapter06/sort.cpp b/Chapter06/sort.cpp new file mode 100644 index 0000000..da2b2f5 --- /dev/null +++ b/Chapter06/sort.cpp @@ -0,0 +1,34 @@ +#include +#include +#include +#include + +void print_container(const auto& container) { + + for(auto& elem: container) { + printf("%d ", elem); + } + printf("\r\n"); +} + +int main() { + + std::array src{0}; + + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution<> distrib(1, 6); + + auto rand = [&](int x) -> int { + return distrib(gen); + }; + + std::transform(src.begin(), src.end(), src.begin(), rand); + print_container(src); + + + std::sort(src.begin(), src.end()); + print_container(src); + + return 0; +}