Guruh: tt 11-23 Fan nomi: Dasturlash 1


Mavzu-5: Vektorlarni funksiya parametrlari sifatida qo’llanilishi


Download 185.21 Kb.
bet11/11
Sana22.11.2023
Hajmi185.21 Kb.
#1794290
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
dasturlash 2 jasur mus

Mavzu-5: Vektorlarni funksiya parametrlari sifatida qo’llanilishi.

Ob'ekt ob'ektlarini saqlashni tashkil etish uchun C ++ Standart kutubxonada konteynerlar idishlari deb nomlangan bir qator sinf shablonlarini taqdim etadi. Standart idishlar ma'lum birlashmalarga ega, ularda ba'zi hollarda ular bilan ishlaydigan kodni o'zgartirmasdan boshqasi bilan bitta idishni almashtirishi mumkin. Standard bilan mos keladigan konturlarni ta'minlaydigan uchinchi uchinchigartli kutubxonalar mavjud (masalan, kutubxonalar to'plamidan).
Konteyner unga joylashtirilgan ob'ektlarni saqlash usulini (konteyner elementlari) va ularning mavjudligini tekshiradi. Idish yo'q qilinganida, u tomonidan saqlanadigan barcha elementlar ham vayron qilingan (konteynerni buzuvchi).
Eng mashhur konteyner std :: Vektor - bu ish bilan bag'ishlangan "vektor". "Vektor" nomi tarixiy ravishda rivojlanib, "Dinamik qator" degan ma'noni anglatadi "Dinamik qator" degan ma'noni anglatadi, shuningdek, matematik ma'noda vektor emas.
Vektor - bu sinf shabloni va birinchi (va yagona majburiy) parametr saqlangan ob'ektlarning turini qabul qiladi: Std :: Std :: Strel - chiziqlar vektori , va boshqalar.
Vektorga kirish uchun standart vektorli sarlavha faylini ulang:
#include

Shablonlar
Tempet Temapet C ++ dasturlash tilining dizayni bo'lib, bu sizning funktsiyalarni (funktsiyalar shablonlari funktsiyalari) va turlarini (funktsiyalar shablonlari funktsiyalari) parametrlari yoki turlari bilan parametrlar (soniyalar, belgilar yoki havolalar) bilan belgilash imkonini beradi. Shablon parametrlarini almashtirish kompilyatsiya paytida amalga oshiriladi. Zaktaning natijasi aniq funktsiyalar (funktsiyalar shablonlari) yoki turlardan (sinf shablonlaridan).
Ushbu ta'rif, misollar bilan tushuntirish osonroq.
Tasavvur qiling, biz kvadratni qurish funktsiyasini (soddalik uchun) yozamiz.
Ikkita SQR (ikki x)
{
X * x ni qaytaring;
}
Tarkibni tanlash parametr sifatida va funktsiya natijasi juda o'zboshimchalik bilan. Agar biz turdagi va ishlamayotgan nuqta bilan biron bir turdagi va keraksiz o'zgarishlarni o'rnatsak-chi?
IR SQR (int x)
{
X * x ni qaytaring;
}
Xuddi shu funktsiya har qanday raqamli raqam uchun yozilishi mumkin.
Wec_t SQR (E'lon_t x)
{
X * x ni qaytaring;
}
Vektor ob'ektini yaratish
Quyida ba'zi STD dizaynerlaridan foydalanishning misollari: Vektor butun sonlar vektorining misolidan foydalangan holda.
vector ve; // пустой вектор
assert(ve.empty());

vector vn(10); // вектор размера 10


// vn создаёт объекты со значением, возвращаемым конструктором без параметров,
// для встроенных типов чисел это 0
assert(!vn.empty());
assert(vn.size() == 10);
assert(vn[0] == 0);

vector vi(10, 42); // вектор из 10 значений, равных 42


// в качестве второго параметра можно указать конкретное значение
// создаваемых объектов
assert(vi.size() == 10);
assert(vi[0] == 42);

int arr[] { 1, 2, 3, 4, 5 };


vector va(arr + 1, arr + 4); // копия диапазона массива
// va содержит 3 элемента: 2, 3, 4
assert(va.size() == 3);
assert(va[0] == arr[1] && va[1] == arr[2] && va[2] == arr[3]);


// Наконец, вектор можно создать из конкретного набора значений,
// используя фигурные скобки вместо круглых (C++11).
vector vl { 1, 2, 3, 4 }; // можно также ставить "=": vl = { ...
assert(vl.size() == 4);
assert(vl.front() == 1 && vl.back() == 4);
C ++ ning boshqa turlari singari, vektorlar vaqtincha qiymatlar sifatida yaratilishi mumkin, bu dizaynerni aniq keltirib chiqaradi. Masalan, ma'lum bir vektor tarkibining ushbu qiymatlar to'plamiga teng bo'lgan qiymatga teng bo'lishi mumkin:
// Используем последний конструктор из примера выше.
vector vl { 1, 2, 3, 4 };
// Повторно используем тот же конструктор
// для создания временного объекта с заданным содержимым.
// Обратите внимание -- необходимо указывать тип элемента вектора (здесь int).
assert(( vl == vector { 1, 2, 3, 4 } ));
assert(( vl != vector { 2, 3, 4 } ));
Download 185.21 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling