Element qo'shilgan/o'chirilganda avtomatik o'lchamli C-ga o'xshash dinamik tasodifiy kirish massivi. uchun indeks bo'yicha kirish. Vektor oxiriga element qo'shish/o'chirish amortizatsiya qilingan vaqtni oladi, vektorning boshida yoki o'rtasida xuddi shunday operatsiya . uchun standart tez saralash. Elementni iteratsiya bo'yicha qidirish . Bool turi uchun vektor shablonining ixtisoslashuvi mavjud bo'lib , u elementlarni bit sifatida saqlash orqali kamroq xotirani talab qiladi, lekin u iteratorlarning barcha xususiyatlarini qo'llab-quvvatlamaydi.
ro'yxati
vektor konteynerdan farqli o'laroq, xotiraning ixtiyoriy bo'laklarida saqlanadi , bu erda elementlar qo'shni xotira maydonida saqlanadi. Ro'yxat bo'yicha qidirish vektorga qaraganda sekinroq, chunki elementga kirish vaqti uzoqroq. uchun indeks bo'yicha kirish. Konteynerning istalgan joyida kiritish va o'chirish juda tez amalga oshiriladi.
pastki
Dek . Konteyner vektorga o'xshaydi , lekin ikkala uchida elementlarni tezda kiritish va olib tashlash qobiliyatiga ega . Chiziqli massivlarning ikki marta bog'langan ro'yxati sifatida amalga oshirildi. Boshqa tomondan, vektordan farqli o'laroq , deque uning barcha elementlari qo'shni xotirada joylashishini kafolatlamaydi, bu esa konteyner elementlariga kirish uchun ko'rsatgich arifmetikasidan xavfsiz foydalanishni imkonsiz qiladi.
Assotsiativ konteynerlar
o'rnatish
Noyob elementlarning tartiblangan to'plami. To‘plam elementlarini kiritish/o‘chirishda ushbu to‘plam elementlariga ishora qiluvchi iteratorlar bekor bo‘lmaydi. Birlashma, kesishish, ayirish kabi to'plamlarda standart amallarni ta'minlaydi. To'plamning element turi operatorni amalga oshirishi kerak < taqqoslash operatori , yoki siz taqqoslash funktsiyasini taqdim etishingiz kerak. O'z-o'zidan muvozanatlashuvchi ikkilik qidiruv daraxti asosida amalga oshiriladi .
multiset
set bilan bir xil , lekin takroriy elementlarni saqlashga imkon beradi.
Xarita
Kalitlardan va ularning mos qiymatlaridan tashkil topgan juft elementlarning tartiblangan assotsiativ massivi. Kalitlar noyob bo'lishi kerak. Elementlarning tartibi kalitlar bilan belgilanadi. Bunday holda, kalit turi operatorni amalga oshirishi kerak < solishtirish operatori , yoki taqqoslash funktsiyasi taqdim etilishi kerak.
multimap
Map bilan bir xil , lekin bir nechta bir xil kalitlarni saqlashga imkon beradi.
Adapter konteynerlari
stack
Stack - bu elementlar qo'shiladigan va bir uchidan olib tashlanadigan konteyner.
navbat
Navbat - bu konteyner bo'lib, uning bir uchidan elementlarni qo'shishingiz mumkin, ikkinchisidan esa ularni olib tashlashingiz mumkin.
ustuvorlik_navbat
Eng katta buyum har doim birinchi bo'lib turishi uchun ustuvor navbat tashkil etilgan.
Psevdo konteynerlar
bitset
Bit maskalarini saqlash uchun ishlatiladi. Ruxsat etilgan o'lchamli vektorga o'xshaydi . Bitset ob'ekti e'lon qilinganida o'lcham belgilanadi . Bitsetda iterator yo'q . Xotira hajmi uchun optimallashtirilgan.
basic_string
Satrlarni saqlash va qayta ishlash uchun konteyner. Ketma-ket elementlarni xotirada bitta blok sifatida saqlaydi, bu butun ketma-ketlikka tezkor kirishni tashkil qilish imkonini beradi. Elementlar oddiy (fundamental) ma'lumotlar turlari bo'lishi kerak. Birlashtirish + bilan belgilanadi.
valarray
Shablon raqamli massivlarni saqlash uchun ishlatiladi va hisoblash samaradorligini oshirish uchun optimallashtirilgan. Bir oz vektorga o'xshaydi , lekin u standart konteyner operatsiyalarining ko'pchiligiga ega emas. Amallar ikkita valarray va valarray va skalar (element bo'yicha) bo'yicha aniqlanadi. Ushbu operatsiyalar vektor protsessorlarida ham, SIMD bloklari bo'lgan skalyar protsessorlarda ham samarali amalga oshirilishi mumkin.
Konteynerlar elementlarni saqlash uchun ob'ekt-qiymat semantikasidan foydalanadi. Boshqacha qilib aytganda, qo'shilganda, konteyner elementning nusxasini oladi. Agar nusxa ko'chirish istalmagan bo'lsa, unda element ko'rsatgichlari konteyneri ishlatiladi. Elementlarni belgilash tayinlash operatori yordamida amalga oshiriladi va ularni yo'q qilish destruktor yordamida amalga oshiriladi. Jadvalda konteynerlardagi elementlarga qo'yiladigan asosiy talablar ko'rsatilgan:
Ikki konteynerda == operatorini bajarishda foydalaniladi
operator <
Bir element boshqasidan kichik yoki yo'qligini aniqlaydi
Ikki konteynerda < operatorini bajarishda foydalaniladi
Barcha "to'liq" standart konteynerlar ma'lum talablarni (yoki konventsiyalarni) qondiradi. Quyidagi jadval C ni T tipidagi ob'ektlarni o'z ichiga olgan konteyner klassi deb taxmin qiladi.
Idishning bo'shligini tekshirish tavsiya etilmaydi
obj.empty ()
Boolga qaytish mumkin
Doimiy
obj1
Boolga qaytish mumkin
Chiziqli
obj1 > obj2
Boolga qaytish mumkin
Chiziqli
obj1 <= obj2
Boolga qaytish mumkin
Chiziqli
obj1 >= obj2
Boolga qaytish mumkin
Chiziqli
obj.swap (obj2)
bekor
Doimiy
Iteratorlar STL kutubxonasi elementlarga kirish uchun vositachi sifatida iterator deb ataladigan umumlashtirilgan abstraksiyadan foydalanadi. Har bir konteynerda "o'ziga xos" turdagi iterator mavjud bo'lib, u "modernlashtirilgan" aqlli ko'rsatgich bo'lib, ma'lum bir konteynerning elementlariga qanday kirishni "biladi". C++ standarti quyidagi jadvalda tasvirlangan iteratorlarning beshta toifasini belgilaydi: