Mavzu: Bir o’lchovli massivlarni funksiya parametri sifatida qo’llanilishi
Download 113.77 Kb.
|
Документ (1)
using Id_block = Pair; // Теперь Id_block -- то же, что и Pair для любого T. Kompleks shablon tuzilmalari uchun qisqarishlar kiritish imkoniyatlaridan tashqari, turdagi sinonimlar shablonlari sizga ishlov berish funktsiyalarini, balki hisoblash turlarini belgilashga imkon beradi. Qattiq gapirish, bu boshqa shablonlardan foydalanishni talab qiladi, ammo sinonim shablon turi qulay interfeysni taqdim etadi, ammo agar siz C ++ 14 darajadagi standart kutubxonadan), keyin siz Biz biron bir narsa yozadigan taassurotga ega bo'ling - bu shablonning parametrlari bo'lgan parametrlar va qiymat o'ng tomonda turgan turdagi turdir. #include #include // C++14, conditional_t, is_same using namespace std; // Выбор встроенного целочисленного типа, имеющего ширину, // не менее Bits бит, или void, если подходящего типа нет. template using Uint = conditional_t<(Bits <= 8), uint8_t, conditional_t<(Bits <= 16), uint16_t, conditional_t<(Bits <= 32), uint32_t, conditional_t<(Bits <= 64), uint64_t, void>>>>; // Проверка условия, выполняемая во время компиляции. static_assert(is_same Vektorli operatsiyalar 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 } )); qаbul qilingаn prinsiplаr аsоsidа rеkursiv funksiyalаr sinfini qurishgа hаrаkаt qilаmiz. Еslаtib o’tishimiz kеrаkki, qurilаyotgаn funksiyalаrning bаrchаsi nаturаl sоnlаr to’plаmidа аniqlаngаn vа nаturаl qiymаtlаrni qаbul qilаdi. Еng sоddа funksiyalаr sifаtidа quyidаgilаrni tаnlаb оlаmiz: S(x)=x+1; Q(x)=0 ( nоlfunksiya); Inm =(xl,x2,...,xn)=xm 1<=m<=n (prоеktоr funksiyalаr); Yangi funksiyalаrni qurаdigаn оpеrаtоrlаr sifаtidа quyidаgi uchtаsini tаnlаb оlаmiz: supеrpоzisiya оpеrаtоri; primitiv rеkursiya оpеrаtоri; minimizаsiya оpеrаtоri; Download 113.77 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling