Junior
STL standart shablon kutubxonalarida iterator nima?
sobes.tech AI
AIdan javob
STL'dagi iterator - bu umumiy tushuncha bo'lib, konteyner elementlariga (masalan, vector, list, map) ketma-ket kirish imkonini beradi, konteynerning ichki tuzilmasini ochmasdan. Bu elementga ko'rsatkichga o'xshaydi, ammo iteratorning toifasiga qarab qo'shimcha imkoniyatlarga ega.
Iteratorning asosiy funksiyalari:
- Joriy elementga kirish (
*it). - Keyingi elementga o'tish (
++it). - Boshqa iterator bilan taqqoslash (masalan, ketma-ketlikning oxirini aniqlash uchun
it != end()).
Iterator toifalari (quyidagi tartibda imkoniyatlar kengaytiriladi):
- Input Iterator: Bir marta elementlarni o'qiy oladi (masalan, oqimdan kirish).
*it(o'qish uchun),++it,it == boshqani qo'llab-quvvatlaydi. - Output Iterator: Bir marta elementlarni yozish mumkin (masalan, oqimga chiqarish).
*it(yozish uchun),++itni qo'llab-quvvatlaydi. - Forward Iterator: Bir nechta marta elementlarni o'qish va yozish mumkin va faqat oldinga harakatlana oladi.
*it(o'qish/yozish),++it,it == boshqani qo'llab-quvvatlaydi. - Bidirectional Iterator: Oldinga va orqaga harakatlana oladi. Barcha Forward Iterator operatsiyalarini va
--itni qo'llab-quvvatlaydi. - Random Access Iterator: Bir qadamda istalgan elementlar soniga o'ta oladi (poytaxtlar kabi). Barcha Bidirectional Iterator operatsiyalarini va qo'shimcha:
it + n,it - n(n elementga o'tish)it += n,it -= nit[n](n ta elementdan iborat elementga kirish)it < boshqa,<=,>,>=(pozitsiyalarni taqqoslash)
Foydalanish misoli:
#include <vector>
#include <iostream>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// Kontainer boshlanishiga iterator olish
std::vector<int>::iterator it = v.begin();
// Iterator yordamida elementlarni aylanib chiqish
while (it != v.end()) {
std::cout << *it << " "; // Elementga kirish uchun iteratorni dereferensiya qilish
++it; // Keyingi elementga o'tish
}
std::cout << std::endl; // Chiqish: 1 2 3 4 5
return 0;
}
Iteratorlar konteynerning aniq turiga nisbatan abstraktsiya taqdim etadi, bu STL algoritmlarining turli ma'lumot turlari bilan bir xil ishlashini ta'minlaydi.