Algoritm kutubxonasi



Download 34,54 Kb.
Sana02.12.2022
Hajmi34,54 Kb.
#877259
Bog'liq
Algoritm kutubxonasi


Algoritm kutubxonasi
Odatda yangi boshlanuvchilar massiv elementlarini saralash, izlash yoki hisoblash kabi nisbatan sodda vazifalarni bajarish uchun odatiy ko’chadan yozishda ko’p vaqt sarflaydi. Ushbu ilmoqlar qanchalik osonlikcha xatoga yo’l qo’ishi mumkinligi nuqtai nazardan ham muammoli bo’lib qolishi mumkin. Bu ilmoqlarni tushinish qiyin bo’lib qolish mumkin.
Dasturlashda qidirish, hisoblash va saralash juda keng tarqalgan operatsiyalar bo'lgani uchun, C ++ standart kutubxonasi allaqachon bir nechta satr kodlarida ushbu vazifalarni bajaradigan katta funktsiyalar to'plamini o'z ichiga oladi. Bunga qo'shimcha ravishda, ushbu xususiyatlar allaqachon sinovdan o'tgan, samarali va har xil turdagi idishlarni qo'llab-quvvatlaydi. Va bu xususiyatlarning ba'zilari parallellashtirishni ham qo'llab-quvvatlaydi - uni tezroq bajarish uchun bir xil vazifa uchun bir nechta protsessor iplarini ajratish qobiliyati.
Algoritm kutubxonasi tomonidan taqdim etilgan funktsiyalar odatda uchta toifaga kiradi:


Tekshiruvchilar - konteynerdagi ma'lumotlarni (o'zgarishsiz) ko'rish uchun foydalaniladi (masalan, qidiruv operatsiyasi yoki hisoblash jarayoni).


Mutatorlar - konteynerdagi ma'lumotlarni o'zgartirish uchun ishlatiladi (masalan, elementlarni saralash yoki qayta tartiblash).


Fasilitatorlar - ma'lumotlar elementlari qiymatlari (masalan, qiymatlarni ko'paytiradigan ob'ektlar yoki elementlar juftligini qaysi tartibda saralash kerakligini aniqlaydigan ob'ektlar) asosida natija yaratish uchun foydalaniladi.

Ushbu algoritmlar algoritmlar kutubxonasida joylashgan (algoritm sarlavhali fayl). Ushbu qo'llanmada biz ba'zi keng tarqalgan algoritmlarni ko'rib chiqamiz.


Izoh: Ushbu algoritmlarning barchasi takrorlanuvchilardan foydalanadi.
Std :: find () algoritmi va qiymat bo'yicha elementni topish

Std :: find () funktsiyasi konteynerni berilgan qiymatning birinchi marta paydo bo'lishini qidiradi. Std :: find () argument sifatida 3 parametrni oladi:


ketma-ketlikdagi boshlang'ich element uchun iterator;


ketma-ketlikdagi so'nggi element uchun iterator;
qidirish uchun qiymat.
Natijada, iterator kerakli elementga (agar topilgan bo'lsa) yoki konteynerning oxiriga (agar bunday element c bo'lmasa) ishora qilgan holda qaytariladi, Izoh: Ushbu darsdagi barcha misollarning to'g'ri ishlashi uchun kompilyatoringiz sizning IDE-ning C ++ 17 funksiyalaridan foydalanish bo'yicha tafsilotlar, bu erda o'qing.
Element topilgan misol:

Qidirish va almashtirish uchun qiymatni kiriting:5 234


13 90 99 234 40 80

Element topilmaydigan misol:


Qidirish va almashtirish uchun qiymatni kiriting: 0 234
0 topilmadi
13 90 99 5 40 80
Std :: find_if () algoritmi va shartli elementlarni qidirish
Ba'zan biz konteynerda ba'zi bir shartlarga mos keladigan qiymatga ega ekanligini ko'rishni xohlaymiz (masalan, berilgan pastki qatorni o'z ichiga olgan qator).

Bunday holatlarda std :: find_if () funktsiyasi mukammal yordamchi bo'ladi. Bu std :: find () funktsiyasiga o'xshash ishlaydi, lekin qidirish uchun qiymatni berish o'rniga biz qo'ng'iroq qilinadigan ob'ektga o'tamiz, masalan funktsiya ko'rsatgichi (yoki lambda - bu haqda keyinroq), agar u tekshirilsa gugurt topildi. Std :: find_if () funktsiyasi har bir element uchun ushbu ob'ektni qidiradigan elementni topguncha chaqiradi (yoki idishda tekshirish uchun element qolmagan).


Std :: find_if () funktsiyasidan foydalanib, biron bir elementda "nut" substring mavjudligini tekshiramiz.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#include
#include
#include
#include

//Agar element topilsa, bizning funksiyamiz haqiqiy bo’ladi


boolcontainsNut(std::string_viewstr)
{
// std::string_view::find qaytadi std::string_view::npos, agar u substring topmasa.

// Aks holda, u substring sodir bo'lgan indeksni str-da qaytaradi.

return(str.find("nut")!=std::string_view::npos);
}

intmain()


{
std::arrayarr{"apple","banana","walnut","lemon"};

// Elementlardan birida substring mavjudligini ko'rish uchun biz massivimizni skanerlaymiz


autofound{std::find_if(arr.begin(),arr.end(),containsNut)};

if(found==arr.end())


{
std::cout<<"No nuts\n";
}
else
{
std::cout<<"Found "<<*found<<'\n';
}

return0;}



Dasturni bajarish natijasi: Found wal nut

Agar biz yuqoridagi muammoni odatdagi standart usulda hal qilsak, unda biz kamida ikkita siklga ehtiyoj sezamiz (bittasi massivni aylanib o'tish uchun, ikkinchisi pastki satrni taqqoslash uchun). C ++ standart kutubxonasining funktsiyalari sizga bir nechta satr kodlari bilan xuddi shunday qilishga imkon beradi!
Download 34,54 Kb.

Do'stlaringiz bilan baham:




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish