Mavzu: Funktorlarning qoʼllanilishi
Download 217.56 Kb.
|
Funktorlarning qoʼllanilishi;
- Bu sahifa navigatsiya:
- Standart shablon sinflar bibliotekasi.
- Iteratorlardan foydalanib list konteyneri ustida amallar bajaring
Mavzu: Funktorlarning qoʼllanilishi Funktor - bu funktsiya kabi "chaqirilishi" mumkin bo'lgan sinf yoki tarkibiy ob'ekt. Bu yuklanish orqali amalga oshiriladi. () operator ko'plab qiymatlar olishi mumkin. Boshqa operatorlar faqat ikkitasini oladi, ya'ni + operator faqat ikkita qiymatni olishi mumkin (operatorning har ikki tomonida bittadan) va ortiqcha yuklagan qiymatni qaytaradi. () operatorning ichiga moslashuvchanlikni beradigan har qanday argumentlarni kiritish mumkin. Funktsiyani yaratish uchun avval sinf yaratiladi. Keyin tur va ism bo'yicha parametr bilan sinfga konstruktor yaratiladi. Buning ortidan sinf a'zosi ob'ektlarini konstruktorga oldindan e'lon qilingan parametr bilan quradigan initsializatorlar ro'yxati e’lon qilinadi. Keyin () operator yuklanadi. Nihoyat yaratilgan sinf yoki tuzilmaning xususiy ob'ektlari e'lon qilinadi: class myFunctor { public: /* myFunctor is the constructor. parameterVar is the parameter passed to the constructor. : is the initializer list operator. myObject is the private member object of the myFunctor class. parameterVar is passed to the () operator which takes it and adds it to myObject in the overloaded () operator function. */ myFunctor (int parameterVar) : myObject( parameterVar ) {} /* the "operator" word is a keyword which indicates this function is an overloaded operator function. The () following this just tells the compiler that () is the operator being overloaded. Following that is the parameter for the overloaded operator. This parameter is actually the argument "parameterVar" passed by the constructor we just wrote. The last part of this statement is the overloaded operators body which adds the parameter passed to the member object. */ int operator() (int myArgument) { return myObject + myArgument; } private: int myObject; //Our private member object. }; Standart shablon sinflar bibliotekasi. Biblioteka yadrosi uchta elementdan iborat: konteynerlar, algoritmlar va iteratorlar. Konteynerlar (containers) – bu boshqa elementlarni saqlovchi obyektlar. Masalan, vektor, chiziqli ro‘yxat, to‘plam. Assotsiativ konteynerlar (associative containers) kalitlar yordamida ularda saqlanadigan qiymatlarni tezkor olish imkonini yaratadi. Har bir sinf – konteynerida ular bilan ishlash uchun mo‘ljallangan funksiyalar to‘plami aniqlangan. Masalan, ruyxat elementlarni kiritish, chiqarish, va qo‘shish funksiyalarni o‘z ichiga oladi. Algoritmlar (algorithms) konteyner ichidagilar ustidan operatsiyalar bajaradi. Konteyner ichidagilarni initsializatsiyalash, qidirish, saralash va almashtirish uchun algoritmlar mavjud. Ko‘p algoritmlar konteyner ichidagi elementlarni chiziqi ro‘yxatini ifodalaydovchi ketma-ketlik (sequence) bilan ishlash uchun mo‘ljallangan. Iteratorlar (iterators) – bu konteynerga nisbatan ko‘rsatkich sifatida bo‘lgan obyektlar. Ular massiv elementlariga ruxsat oluvchi ko‘rsatkichlar kabi, konteyner ichidagiga ruxsat olish imkoni beradi. vector list deque set multiset map Bunda har bir kalit bitta qiymat bilan bog‘langan. Multimap bog‘langan stack queue priority_queue Ixtiyoriy sinf-konteyner ko‘rsatilmagan holda konstruktor va destruktorni nusxalovchi konstruktorga ega. Ixtiyoriy obyekt uchun ko‘rsatilmagan holda konteynerda saqlanuvchi konstruktor mavjud bo‘lishi shart. Undan tashqari, obyekt uchun < va == operatorlar aniqlanish lozim. Iteratorlar bilan ko‘rsatkichlar kabi ishlash mumkin. Ularga *, inkrement, dekrement operatorlarni qo‘llash mumkin. Iterator tipi sifatida har xil konteynerlarda aniqlangan iterator tip elon qilinadi. Iteratorlardan foydalanib list konteyneri ustida amallar bajaring #include #include #include #include #include using namespace std; int main() { int n,x; cout << "Listning o'lchamini kiriting: "; cin >> n; list for (int i = 0; i < n; i++){ x = rand() % 11 - 5; bol.push_back(x); cout << i + 1 << " - " << x< for (int y : bol){ cout << y << endl; } system("pause"); return 0; } Download 217.56 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling