Mavzu: Assotsiativ konteynerlar Hisoblashda assotsiativ konteynerlar C++ dasturlash tilining standart kutubxonasidagi tartiblangan assotsiativ massivlarni amalga oshiradigan sinf shablonlari guruhiga ishora qiladi . [1] Shablonlar boʻlgani uchun ular butun sonlar yoki maxsus sinflar kabi ixtiyoriy elementlarni saqlash uchun ishlatilishi mumkin . C++ standartining joriy tahririda quyidagi konteynerlar aniqlangan: set, map, multiset, multimap . Ushbu konteynerlarning har biri faqat o'z elementlariga qo'yilgan cheklovlar bilan farqlanadi.
C++ standart kutubxonasidagi tartibsiz assotsiativ konteynerlarga o'xshaydi , yagona farq shundaki, tartibsiz assotsiativ konteynerlar, ularning nomidan ko'rinib turibdiki, ularning elementlarini tartibga solmaydi.
Tarkibi
1 Dizayn
1.1 Xususiyatlari
1.2 Ishlash
2 Funksiyalar haqida umumiy ma'lumot
3 Foydalanish
3.1 Iteratorlar
4 Shuningdek qarang
5 Adabiyotlar
Dizayn [ tahrirlash ]
Xususiyatlari [ tahrirlash ]
Kalitning o'ziga xosligi : xaritada va o'rnatishda har bir tugma noyob bo'lishi kerak. multimap va multiset bu cheklovga ega emas.
Element tarkibi : xarita va multimapda har bir element kalit va xaritalangan qiymatdan tuzilgan. To'plam va multisetda har bir element asosiy hisoblanadi ; xaritalangan qiymatlar mavjud emas.
Elementlarni tartibga solish: elementlar qat'iy zaif tartibga rioya qiladi [1]
Assotsiativ konteynerlar, elementlarga joylashuvi bo'yicha kirishda samaraliroq bo'lgan ketma-ket konteynerlardan farqli o'laroq, uning elementlariga kalitlari orqali kirishda ayniqsa samarali bo'lishi uchun mo'ljallangan. [1] Assotsiativ konteynerlar kiritish, oʻchirish va unda element bor-yoʻqligini tekshirish operatsiyalarini logarifmik vaqtda – O(log n )da bajarishi kafolatlangan. Shunday qilib, ular odatda o'z-o'zini muvozanatlashtiruvchi ikkilik qidiruv daraxtlari yordamida amalga oshiriladi va ikki tomonlama iteratsiyani qo'llab-quvvatlaydi. Iteratorlar va havolalar kiritish va oʻchirish operatsiyalari bilan bekor qilinmaydi, iteratorlar va oʻchirilgan elementlarga havolalar bundan mustasno. Assotsiativ konteynerlarning belgilovchi xususiyati elementlarning oldindan belgilangan tartibda kiritilishi, masalan, oʻsish boʻyicha tartiblanganligidir.
Assotsiativ konteynerlarni ikkita kichik to'plamga guruhlash mumkin: xaritalar va to'plamlar. Ba'zan lug'at deb ataladigan xarita kalit/qiymat juftligidan iborat. Kalit ketma-ketlikni tartibga solish uchun ishlatiladi va qiymat qandaydir tarzda shu kalit bilan bog'lanadi. Misol uchun, xarita matndagi har bir noyob so'zni ifodalovchi kalitlarni va ushbu so'z matnda necha marta paydo bo'lishini ko'rsatadigan qiymatlarni o'z ichiga olishi mumkin. To'plam shunchaki noyob elementlarning ko'tariladigan konteyneridir.
Har ikkala xarita ham, to'plam ham kalit yoki elementning faqat bitta nusxasini konteynerga kiritish imkonini beradi. Agar elementlarning bir nechta nusxasi kerak bo'lsa, multimap yoki multisetdan foydalaning.
Ikkala xarita va to'plamlar ikki tomonlama iteratorlarni qo'llab-quvvatlaydi. Iteratorlar haqida ko'proq ma'lumot olish uchun iteratorlarga qarang.
Rasmiy ravishda STL standartining bir qismi bo'lmasa-da, hash_map va hash_set odatda qidirish vaqtini yaxshilash uchun ishlatiladi. Ushbu konteynerlar o'z elementlarini xesh-jadval sifatida saqlaydi, har bir jadval yozuvi elementlarning ikki tomonlama bog'langan ro'yxatini o'z ichiga oladi. Eng tez qidirish vaqtlarini ta'minlash uchun elementlaringiz uchun xesh algoritmi teng taqsimlangan xesh qiymatlarini qaytarishiga ishonch hosil qiling.
Ushbu bo'lim kengaytirilishi kerak . Unga qo'shish orqali yordam berishingiz mumkin . (2011 yil dekabr)