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 // KetidaksamaanMari 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
2Dalam 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 sebelumnyavector<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 3Dalam 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 1Dalam 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.
Tantangan
SedangDiberikan 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
50Output
10 20 30 40 50Coba 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