From 55c236be1905c3b237f49399c6fe39c7b108fa08 Mon Sep 17 00:00:00 2001 From: Muh Yusuf Date: Thu, 11 Sep 2025 08:08:40 +0700 Subject: [PATCH] feat: menambahkan variant iterator --- iterator/variant_iterator.cpp | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 iterator/variant_iterator.cpp diff --git a/iterator/variant_iterator.cpp b/iterator/variant_iterator.cpp new file mode 100644 index 0000000..5aab72f --- /dev/null +++ b/iterator/variant_iterator.cpp @@ -0,0 +1,53 @@ +#include +#include +#include +#include +#include +void _input_iterator(){ // dipakai untuk input + std::cout << "masukkan 3 angka: "; + std::istream_iterator input_it(std::cin); //baca dari cin + std::istream_iteratorend; //penanda akhir + + std::vectordata; + while(input_it != end && data.size() < 3){ + data.push_back(*input_it); //push back deferencing iterator + ++input_it; + } + std::cout << "data yang dibaca" << std::endl; + for(auto x: data){ + std::cout << x << " "; + } +} +void _output_iterator(){ //dipakai untuk menulis data + std::vectornumbers {1,2,3,4,5}; + std::ostream_iterator output_it(std::cout," "); + for(auto x: numbers){ + *output_it = x; + } +} +void _forward_iterator(){ //bisa maju berkali2 namun tidak bisa mundur + //singly linked list container + std::forward_list fl = {1,2,3,4,5}; + std::forward_list::iterator it = fl.begin(); + while(it != fl.end()){ + std::cout << *it << std::endl; + } + //output 1 2 3 4 5 +} +void _bidirectional_iterator(){ //bisa maju bisa mundur + std::listls = {1,2,3,4,5}; + std::list::iterator it = ls.begin(); + ++it; //it menunjuk alamat memory 20 skrg + std::cout << "ini it: " << *it << std::endl; + --it; //it menunjuk alamat memory 1 sekarang + std::cout << "ini it: " << *it << std::endl; +} +void _random_acces_iterator(){ //bisa maju mundur dan lompat + std::vectorv = {1,2,3,4,5}; + std::vector::iterator it = v.begin(); + std::cout << *(it + 3); //output adlah 4 +} +int main(){ + _bidirectional_iterator(); + return 0; +} \ No newline at end of file