Tiplarni dinamik tarzda




Download 1,83 Mb.
bet20/131
Sana13.05.2024
Hajmi1,83 Mb.
#228405
1   ...   16   17   18   19   20   21   22   23   ...   131
Bog'liq
Tiplarni dinamik tarzda

Bir aloqali ro‘yxat . forward_list> bir tomonlama iterator orqali T tipdagi elementlarga kirishni taʻminlaydi. Ro‘yxatning tugunlarini yaratish uchun A::rebind orqali yaratilgan allokatorday foydalaniladi.
Bir aloqali ro‘yxatning o‘ziga xosligi shundaki, faqat belgilangan joriy tugundan keyin elementlarni qo‘shish va o‘chirish mumkin:
insert_after - element qo‘shish.
emplace_after – yangi element yaratish. Bunda belgilangan parametrlar uchun konstruktor chaqiriladi.
erase_after - element o‘chirish.
Birinchi elementdan oldin degan ko‘shimcha aniqlangan pozitsiya mavjud. Bu before_begin va cbefore_begin (const_iterator qaytaruvchilar uchun variant) funksiyalari yordamida bajariladi. Shuningdek, fl.push_front(item) funksiyasidan foydalanib, elementlarni oldindan joylashtirish mumkin (yuqoridagiga ekvivalent), masalan, quyidagicha dastur fragmenti:

fl.insert_after(fl.before_begin(), item)

Konstruktorga har qanday parametrlarni joylashtirish uchun fl.emplace_front(...) funksiyasi ishlatiladi. Bunga ekvivalent sifatida quyidagi dastur fragmentini yozish mumkin:

fl.emplace_after(fl.before_begin(), ...)

pop_front funksiyasi ro‘yxatdan birinchi elementni o‘chiradi.
C++ standart kutubxonasida ro‘yxat konteynerlar xususiyati uchun samarali bo‘lgan amallarni bajarishga faqat iteratorlarda foydalanishga ishonchsizligi yuqori darajali amallarni qo‘llab-quvvatlash hisoblanadi:
merge - ikkita tartiblangan ro‘yxatni bir-biriga birlashtiradi, elementlar ko‘chirilmaydi lekin o‘ngdan chap ro‘yxatga o‘tiladi
splice_after - berilgan ro‘yxatni ko‘rsatilgan elementdan keyin joylashtiradi.
remove – berilgan elementga teng bo‘lgan barcha elementlarni o‘chiradi. remove – berilgan pridikat asosida barcha elementlarni o‘chiradi. reverse – elementlarni tartibiga murojaat qiladi.
unique - barcha ketma-ket dublikatlarni o‘chiradi. sort - ro‘yxatni joyida tartiblaydi.
Umuman olganda, bu funksiyalar qandaydir standart algoritmlarga o‘xshaydi, lekin juda tez va qulay ishlaydi. Ularga murojaat qilish uchun umumiy ruxsat olish kerak, masalan, sort() funksiyasi uchun std::sort(from, to). Ammo, tasodifiy kirish iteratorlari kabi talab qilingan ro‘yxatlar uchun amal qilmaydi.

Download 1,83 Mb.
1   ...   16   17   18   19   20   21   22   23   ...   131




Download 1,83 Mb.