Mavzu: Bir o’lchovli massivlarni funksiya parametri sifatida qo’llanilishi


Download 113.77 Kb.
bet4/9
Sana31.01.2024
Hajmi113.77 Kb.
#1831301
1   2   3   4   5   6   7   8   9
Bog'liq
Документ (1)

template <class T>
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::value, "Uint is flawed!");
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 } ));
Rеkursiv funksiya tushunchаsi hisоblаnuvchi funksiya intuitiv tushunchаsini kоnkrеtlаshtirishning yanа bi usulidir. Rеkursiv funksiyalаr sinfini qurishdа birlаmchi, qаysidir mа’nоdа еng sоddа funksiyalаr tаnlаnаdi. So’ngrа qоidаlаr sistеmаsi qаbul qilinib, ushbu qоidаlаr аsоsidа bоr funksiyalаrdаn yangi funksiyalаrdаn yangi funksiyalаr qurilаdi. Bundаy qоidаlаr оpеrаtоrlаr dеb аtаlаdi. Dеmаk, tаnlаngаn оpеrаtоrlаr yordаmidа еng sоddа funksiyalаrdаn hоsil qilinаdigаn funksiyalаr to’plаmi qidirilgаn funksiyalаr sinfini tаshkil еtаdi.
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); In=(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:
1   2   3   4   5   6   7   8   9




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