diff --git a/case_study/advanced/m b/case_study/advanced/m deleted file mode 100755 index 4ff1311..0000000 Binary files a/case_study/advanced/m and /dev/null differ diff --git a/iterator/introduce_iterator.cpp b/iterator/introduce_iterator.cpp new file mode 100644 index 0000000..fb804dc --- /dev/null +++ b/iterator/introduce_iterator.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +/** + * @brief ITERATOR + * iterator adalah pointer pintar yang mununjuk element dalam suatu container + * iterator begin selalu mununjuk element pertama + * iterator end selalu mununjuk element terakhir + */ + +void _iterator(){ + /* + iterator vector di sebut bidirectional iterator karena dapat bergerak maju dan mundur + */ + std::vectorv = {1,2,3,4,5}; + std::vector::iterator it; //deklarasi iterator + //akan mencetak element pada array v + for(it = v.begin();it != v.end();++it){ + std::cout << *it << " "; + } + std::cout << std::endl; + //akan mencetak alamat memory + for(it = v.begin();it != v.end();it += 2){ + std::cout << &it << " "; + } + /* + it selalu menunjuk alamat memory dari vector v + *it arti nya melakukan deferencing terhadap alamat memory tersebut + */ + std::listl= {1,2,3,4,5,6,7}; + std::list::iterator lst; + std::cout << std::endl; + /** + * list hanya dapat bergerak satu arah karena memakai linked list + * linked list menyimpan data secara tidak beraturan,semua data tersebar di heap + * tp masing node punya alamat ke node berikut nya. + * berbeda dengan array yg berurutan di heap atau di stack + */ + for(lst = l.begin();lst != l.end();lst++){ + std::cout << *lst << " "; + } +} +int main(){ + _iterator(); + //std::cin.get(); + return 0; +} \ No newline at end of file diff --git a/src/m b/src/m deleted file mode 100755 index a155216..0000000 Binary files a/src/m and /dev/null differ diff --git a/src/stack_linked_list.cpp b/src/stack_linked_list.cpp index f0c5151..ca99012 100644 --- a/src/stack_linked_list.cpp +++ b/src/stack_linked_list.cpp @@ -10,6 +10,7 @@ * * @version 2.0 */ + #include #include template @@ -68,6 +69,15 @@ class Stack{ ~Stack()noexcept{ clear(); } + void swap(Stack& others){ + //swap head + Node* tempHead = head; + head = others.head; + //swap size + int tempSize = size; + size = others.size; + others.size = tempSize; + } public://abstraksi getter int is_size()const noexcept{ return this->size; @@ -162,6 +172,16 @@ int main(){ stack3 = stack1; std::cout << "copy assignment" << std::endl; stack3.print_detail(); + Stack stack4; + stack4.push(10); + stack4.push(20); + stack4.push(30); + stack4.push(40); + std::cout << "sebelum swap" << std::endl; + stack4.print_detail(); + stack4.swap(stack1); + std::cout << "sesudah swap" << std::endl; + stack4.print_detail(); std::cin.get(); return 0; } \ No newline at end of file