Menu
CoddyTech

Iterator Input

Pelajaran 14 dari 23 dalam kursus C++ - Standard Template Library di Coddy.

Iterator Input adalah iterator yang digunakan untuk membaca nilai dari container. Iterator input adalah yang paling "lemah" di antara semua iterator karena fungsinya terbatas. Namun, hal ini membuat iterator input sederhana dan mudah dipahami.
Iterator ini paling sering digunakan dalam operasi input berurutan, ketika setiap nilai ditunjuk oleh iterator hanya sekali, lalu iterator dinaikkan, paling sering menggunakan operator ++ untuk menaikkan iterator satu posisi.

Seperti yang bisa kita lihat, forward iterator, bidirectional iterator , dan random access iterator semuanya merupakan iterator input yang valid.


Jadi, kita akan mempelajari fitur-fitur Input Iterator.


  • Operator kesamaan/ketidaksamaan
    Iterator input dapat dibandingkan menggunakan operator kesamaan atau ketidaksamaan. Kedua iterator sama hanya jika keduanya menunjuk ke lokasi yang sama. 
A == B // Kesamaan
A != B // Ketidaksamaan

Mari kita lihat contoh untuk memeriksa apakah dua iterator menunjuk ke lokasi yang sama.

vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it1, it2;

it1 = numbers.begin();
it2 = numbers.begin() + 1;

if(it1 == it2)
	cout << "Both iterators are equal.";
else
	cout << "Both iterators are not equal.";
Output:
Both iterators are not equal.

Dalam contoh di atas, kita mendeklarasikan iterator bernama it1 dan it2 menggunakan vector<int>::iterator. Setelah itu, kita menetapkan nilai untuk keduanya. Iterator it1 memiliki lokasi elemen pertama melalui method begin(). Iterator it2 memiliki lokasi elemen kedua karena kita menaikkan nilai dari method begin() satu posisi. Itulah sebabnya output program menyatakan bahwa kedua iterator tidak sama.


  • Dereferensi
    Iterator input dapat didereferensikan dengan operator *. Jika kita menampilkan nilai iterator yang telah didereferensikan, kita mendapatkan nilai sebenarnya dari elemen yang ditunjuk iterator.
*A // Dereferensikan dengan *
vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it1, it2;

it1 = numbers.begin();
it2 = numbers.begin() + 1;

cout << *it1 << endl;
cout << *it2;
Output:
1
2

Dalam contoh di atas, kasusnya sama persis dengan contoh pertama. Iterator it1 menunjuk ke elemen pertama vector dan iterator it2 menunjuk ke elemen kedua vector. Saat kita menampilkan nilai iterator yang telah didereferensikan, kita mendapatkan nilai sebenarnya dari elemen pertama dan kedua vector.
Jadi, jika kita ingin menampilkan nilai variabel atau elemen yang ditunjuk iterator, kita menggunakan operator *


  • Dapat dinaikkan
    Iterator input dapat dinaikkan sehingga merujuk ke elemen berikutnya dalam urutan setelah dinaikkan. Untuk itu, kita menggunakan operator ++
A++ // Operator inkremen setelahnya
++A // Operator inkremen sebelumnya
vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it1;

it = numbers.begin();
cout << "First value is: " << *it << " ";

it++;
cout << "Second value is: " << *it << " ";

++it;
cout << "Third value is: " << *it;
Output:
1 2 3

Dalam contoh di atas, kita mendeklarasikan iterator it agar menunjuk ke elemen pertama vector. Kita menampilkan elemen pertama vector, lalu menaikkan iterator satu posisi agar menunjuk ke elemen kedua, dan seterusnya.


  • Dapat dipertukarkan
    Dua iterator yang menunjuk ke lokasi berbeda dapat ditukar. Kita dapat melakukannya menggunakan variabel sementara seperti di bawah ini.
vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it1, it2, temp;

it1 = numbers.begin();
it2 = numbers.begin() + 1;

cout << *it1 << " " << *it2 << endl;

temp = it1;
it1 = it2;
it2 = temp;

cout << *it1 << " " << *it2 << endl;
Output:
1 2
2 1

Dalam contoh di atas, kita mendeklarasikan dua iterator dan menetapkan lokasi elemen pertama ke iterator pertama serta lokasi elemen kedua ke iterator kedua. Kita menampilkan kedua elemen, lalu menukar nilai iterator. Akibatnya, iterator pertama menunjuk ke elemen kedua dan iterator kedua menunjuk ke elemen pertama, seperti yang terlihat pada output.

challenge icon

Tantangan

Sedang

Diberikan 5 angka dari input, gunakan vector dan simpan nilainya. Setelah itu, gunakan iterator dengan method begin() dan lakukan iterasi melalui vector dengan menambah iterator pada setiap iterasi perulangan.

 

Input
10
20
30
40
50
Output
10 20 30 40 50

Coba sendiri

#include <vector>
#include <iostream>

using namespace std;

int main()
{
    vector<int> numbers;
    vector<int>::iterator it;

    // Enter your code here

    for(it = ; it != numbers.end(); )
    {
        
    }

    return 0;
}

Semua pelajaran di C++ - Standard Template Library

Latihan sendiri: Compiler C++ online