Junior
STL standart şablon kitabxanasında iterator nədir?
sobes.tech Süni İntellekt
AI-dan cavab
STL-də iterator ümumi anlayışdır və konteynerin (məsələn, vector, list, map) elementlərinə ardıcıl şəkildə daxil olmağı təmin edir, konteynerin daxili strukturunu açmadan. Bu, elementə işarə edən göstəriciyə bənzəyir, lakin iteratorin kateqoriyasına görə əlavə imkanlara malikdir.
Iteratorin əsas funksiyaları:
- Mövcud elementə daxil olmaq (
*it). - Növbəti elementə keçmək (
++it). - Digər iterator ilə müqayisə etmək (məsələn, ardıcıllığın sonunu müəyyən etmək üçün
it != end()).
Iterator kateqoriyaları (imkanların genişlənmə sırasına görə):
- Input Iterator: Yalnız bir dəfə elementləri oxuya bilər (məsələn, axından giriş).
*it(oxuma üçün),++it,it == başqadəstəkləyir. - Output Iterator: Yalnız bir dəfə elementləri yaza bilər (məsələn, axına çıxış).
*it(yazmaq üçün),++itdəstəkləyir. - Forward Iterator: Bir neçə dəfə elementləri oxuyub yaza bilər və yalnız irəliyə hərəkət edə bilər.
*it(oxuma/yazma),++it,it == başqadəstəkləyir. - Bidirectional Iterator: İrəli və geri hərəkət edə bilər. Bütün Forward Iterator əməliyyatlarını və
--itdəstəkləyir. - Random Access Iterator: Bir addımda istənilən sayda elementə hərəkət edə bilər (işarəçilər kimi). Bütün Bidirectional Iterator əməliyyatlarını və əlavə:
it + n,it - n(n elementə hərəkət)it += n,it -= nit[n](n ötürmə ilə elementə daxil olmaq)it < başqa,<=,>,>=(mövqeləri müqayisə etmək)
İstifadə nümunəsi:
#include <vector>
#include <iostream>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
// Kontainerin başlanğıcına iterator əldə et
std::vector<int>::iterator it = v.begin();
// Iterator ilə elementləri keçmək
while (it != v.end()) {
std::cout << *it << " "; // Elementə daxil olmaq üçün iteratoru dereferensiya et
++it; // Növbəti elementə keç
}
std::cout << std::endl; // Çıxış: 1 2 3 4 5
return 0;
}
Iteratorlər konteynerin konkret növü üzərində abstraksiya təmin edir və STL alqoritmlərinin müxtəlif məlumat tipləri ilə eynidirsə işləməsinə imkan verir.