|
Chiqish iteratori uchun ishlatiladigan operatorlar quyidagilar
|
bet | 3/7 | Sana | 07.12.2023 | Hajmi | 183,4 Kb. | | #112976 |
Bog'liq Ma\'lumotlarMustaqilIshElmurodovSardorbek Chiqish iteratori uchun ishlatiladigan operatorlar quyidagilar:
Inkrement operatori (++)
Tayinlash yoki o’zlashtirish operatori (=)
Chiqish İteratorining ikkita asosiy kichik klassi mavjud:
insert iterator
ostream iterator
3 . Iteratorlar asosiy xususiyatla
STL iteratorlari ketma-ketlikning joriy elementini qaytaruvchi operatorga* ega bo'lgan ob'ektlardir, bu element ma'lum bir sinf yoki o'rnatilgan T tipidagi ob'ekt bo'lib , iteratorning qiymat turi deb ataladi. Tenglik aniqlangan har bir iterator X turi uchun iteratorning masofa turi deb ataladigan tegishli imzolangan butun son turi mavjud.
Operator ++() iteratorni keyingi elementga o'tkazish uchun ishlatiladi . Boshqa iterator turlari boshqa amallarni belgilashi mumkin: operator --() (ikki tomonlama iterator uchun), ixtiyoriy songa oshirish (tasodifiy kirish iteratori) va hokazo. – "Iteratorlarning tasnifi" va "Turli turdagi iteratorlarning xususiyatlari" bo'limlariga qarang.
operator *() va operator ++() barcha STL iterator turlari uchun asosiy operatsiyalardir.
Operator* belgilangan iterator qiymatlari dereferenceable deb ataladi .
To'plamning oxirgi elementi - yakuniy ( o'tgan - oxiri ) deb ataladigan qiymatlardan tashqariga ishora qiluvchi iterator qiymatlari mavjud . Keyingi qiymatlar bekor qilinmaydi va ketma-ketlikning oxirini belgilash uchun ishlatiladi.
Berilgan turdagi iteratorlar uchun tenglik amali aniqlangan va j ++ amallarning chekli (ehtimol null) ketma-ketligi mavjud bo'lsa, j iteratoriga i iteratoridan erishish mumkin deyiladi; j ++; …. , undan keyin j == i . Agar i va j iteratorlari turli to'plamlarga tegishli bo'lsa 1 , u holda hech biriga boshqasidan kirish mumkin emas. Aks holda, agar iteratorlar to'plamning barcha elementlarini (yoki ularning bir xil kichik to'plamini) takrorlashi kerak bo'lsa, u holda i ga j dan kirish mumkin yoki j ga i orqali kirish mumkinligi aniq.
Elementlar ketma-ketligi bosh va oxiriga ishora qiluvchi bir juft iterator [ i , j ) tomonidan beriladi. Bunday holda, i bilan ko'rsatilgan element kiritilgan, j esa yo'q, ya'ni. ko'rib chiqilgan oxirgi element oldingi j hisoblanadi. Aksariyat STL algoritmlari hamda sinf usullari shu turdagi ketma-ketliklar ustida ishlaydi.Masalan, vektor klassi vektorni bir juft iterator tomonidan berilgan elementlar ketma-ketligidan olingan tarkib bilan to'ldiradigan usulni o'z ichiga oladi [birinchi; oxirgi). Birinchi tomonidan ko'rsatilgan element kiritilgan, lekin oxirgi tomonidan ko'rsatilgan element kiritilmagan.
shablon >
sinf vektori
{
ommaviy:
// vektorni belgilangan ketma-ketlik elementlari bilan to'ldirish
// iteratorlar [birinchi: oxirgi)
shablon
void assign(Avvalida, oxirgisida);
};
[ i , i ) ketma-ketligi bo'sh. [i,j) ketma-ketligi j ga i dan kirish mumkin bo'lgan taqdirdagina amal qiladi. Kutubxona algoritmlarini noto'g'ri ketma-ketliklarga qo'llash natijasi aniqlanmagan.
Iteratordan foydalanish g'oyasini quyidagi misolda tasvirlash mumkin (quyidagi misol STL ishlatadigan kod emas, bu iteratorlar kontseptsiyasini ko'rsatishga qaratilgan mavhum koddir)
// Misol ko'rsatadiki, print_sequence hech qanday ma'lumotga ega emas
// imkon beradigan ishlov beradigan ketma-ketlik haqida
// uning yordami bilan ifodalanadigan har qanday ketma-ketlikni qayta ishlash
// ba'zan iteratorlar
typedef int *iterator;
voidprint_sequence(iterator birinchi, iterator oxirgi)
{
while( birinchi != oxirgi )
{
cout << *birinchi << endl;
|
| |