911-20 guruh talabasi Bazarbayev
Jamshidning 4- labaratoriya ishi
4-LABARATORIYA ISHI.
MAVZU: STANDART SHABLON KUTUBXONASI STL C++.
STL teskari iteratorlarni ham qo'llab-quvvatlaydi. Teskari iteratorlar ikki yo'nalishli iteratorlar yoki tasodifiy kirish iteratorlari bo'lishi mumkin, ammo ketma-ketlikni teskari yo'nalishda bosib o'tishadi.Konteynerlar, algoritmlar va iteratorlardan tashqari, STL yana bir nechta standart komponentlarni qo'llab-quvvatlaydi. Bulardan asosiysi - xotira ajratgichlari, predikatlar va taqqoslash funktsiyalari.Har bir konteynerda konteyner uchun ajratish jarayonini boshqaradigan maxsus ajratuvchi mavjud.Odatiy bo'lib, ajratuvchi sinf taqsimlovchisining ob'ekti hisoblanadi. Siz o'zingizning distribyutoringizni belgilashingiz mumkin.Ba'zi algoritmlar va konteynerlarda predikat deb nomlangan maxsus funktsiya turi qo'llaniladi. Predikat bir yoki ikkilik bo'lishi mumkin. Qaytgan qiymat: true yoki false. Muayyan qiymatni olishning aniq shartlari dasturchi tomonidan belgilanadi. Unar turiUnPred predicates, ikkilik - BinPred. Argumentlar turi idishda saqlanadigan ob'ektlar turiga mos keladi.Ikki elementni taqqoslash uchun ikkilik predikatning maxsus turi aniqlanadi. Bunga taqqoslash funktsiyasi deyiladi. Agar birinchi element ikkinchisidan kichik bo'lsa, funktsiya haqiqiy bo'ladi. Funktsiya turi Comp.STL-da funktsiya ob'ektlari alohida rol o'ynaydi.Funktsiya ob'ektlari - bu qavslar () amallari aniqlangan sinfning misollari. Ba'zi hollarda funktsiyani funktsiya ob'ekti bilan almashtirish qulay. Funksiya ob'ekti funktsiya sifatida ishlatilganda () operator uni chaqirish uchun ishlatiladi.
1-misol.
sinf kamroq {
jamoat:
bool operatori () (int x, int y)
{return x };
3. Sinf-konteynerlar.
STL konteynerlarning ikki turini belgilaydi: ketma-ketlik va assotsiativ.Standart konteynerlarning asosiy g'oyasi shundaki, ular mantiqan bir-birining o'rnini bosishi kerak. Foydalanuvchi samaradorlikni hisobga olgan holda va ixtisoslashtirilgan operatsiyalarga bo'lgan ehtiyoj asosida ularning orasidan birini tanlashi mumkin. Masalan, agar siz tez-tez kalit bilan qidirishingiz kerak bo'lsa, siz xaritadan (assotsiativ qator) foydalanishingiz mumkin. Boshqa tomondan, agar ro'yxatga xos operatsiyalar ustunlik qilsa, siz ro'yxat konteyneridan foydalanishingiz mumkin. Agar narsalarni qo'shish va olib tashlash ko'pincha idishning uchida amalga oshirilsa, siz navbat, ikki tomonlama deque, stack stack-dan foydalanishni o'ylab ko'rishingiz kerak. Odatiy bo'lib, foydalanuvchi vektordan foydalanishi kerak; eng keng ko'lamli vazifalar uchun yaxshi ishlash uchun amalga oshiriladi.
Har xil turdagi konteynerlar va umuman, barcha turdagi axborot manbalari bilan ishlash g'oyasi - yagona usulda umumiy dasturlash tushunchasiga olib keladi. STL ushbu g'oyani qo'llab-quvvatlash uchun ko'plab umumiy algoritmlarni o'z ichiga oladi. Bunday algoritmlar dasturchini alohida idishlarning tafsilotlarini bilishdan xalos qiladi.
STL quyidagi konteyner sinflarini belgilaydi (burchakli qavsda ushbu sinflar aniqlangan sarlavha fayllari mavjud):
bitset ko'plab bitlar
vektorli dinamik qator
ro'yxat ro'yxati
deque deque
stack stack
navbat navbati
ustuvorlik_quue ustuvor navbat
map - har bir tugma bilan bog'langan bitta qiymatga ega bo'lgan kalit / qiymat juftlarini saqlash uchun assotsiativ ro'yxat da.
Misol:Kesik piramida hajmini topish.
1.#include
#include
using namespace std;
namespace mathematics {
double hajm (double h,double a,double b);
}
using namespace mathematics;
int main ()
{
double h,a,b;
cin>>h>>a>>b;
cout<< "kesik piramida hajmi:"<return (0);
}double mathematics::hajm(double h,double a, double b){
return (h*(pow(a,2)+sqrt(a*b)+pow(b,2))/.3);
}
Do'stlaringiz bilan baham: |