Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2-semestr / 5-ameliy_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
194 Кб
Скачать
☆
5-ámeliy jumıs. Konteynerler (Kollekciyalar). STL kitapxanaları.
Konteyner klaslar.
Jumıstıń maqseti: C++ STL (Standard Template Library) kitapxanasınıń
tiykarǵı bólekleri bolǵan Konteynerler (Containers), Algoritmler (Algorithms) hám Iteratorlardı (Iterators) birge qollanıwdı úyreniw. Konteynerlerdi sortlaw, izlew, filtrlew hám nusqalaw sıyaqlı ámeliy wazıypalardı `algorithm` kitapxanası járdeminde orınlaw. Sızıqlı (`vector`) hám associativ (`map`) konteynerler menen
islesiwdegi ayrıqshalıqlardı túsiniw.
1. STL quramı: Konteynerler (Maǵlıwmat), Algoritmler (Logika), Iteratorlar
(Baylanıs).
2. Algoritmler: `<algorithm>` kitapxanası (`sort`, `find`, `count`, `reverse`,
`max_element` hám t.b.).
3. Iterator túrleri: `begin()`, `end()`, `rbegin()`, `rend()`.
4. Funktorlar hám Lambda: Algoritmlerge beriletuǵın shártler (mısalı,
kemeyiw tártibinde sortlaw).
ÁMELIY BÓLIM:
Konteynerlerdi algoritmler menen birge qollanamız. 1-mısal: Sortlaw hám Izlew Kod:
#include <iostream>
#include <vector>
#include <algorithm> // Sort, Find
using namespace std;
int main() {
vector<int> v = {50, 10, 40, 20, 30};
// Sortlaw (Ósiw tártibinde)
sort(v.begin(), v.end());
cout << "Sortlanǵan: ";
for (int x : v) cout << x << " "; // 10 20 30 40 50
cout << endl;
// Izlew (Binar izlew - sortlanǵan massiv ushın tez)
if (binary_search(v.begin(), v.end(), 30)) {
cout << "30 tabıldı!" << endl;
}
return 0;
}
Túsindirme: Biz `vector` jarattıq. `sort` funkciyasına `begin()` hám `end()`
iteratorların berdik, ol massivti 10, 20... tártibinde retledi. Keyin `binary_search`
funkciyası arqalı 30 sanınıń bar ekenin tez (logarifmik waqıtta) tekserdik. Bul qol
menen jazılǵan cikllerden ádewir tez hám qısqa.
2-mısal: Maksimum hám Sanaw Kod:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 2, 4, 2, 5};
// Eń úlken elementti tabıw
auto it = max_element(v.begin(), v.end());
cout << "Max: " << *it << endl; // 5
// 2 sanı neshe ret ushırasqan?
int c = count(v.begin(), v.end(), 2);
cout << "2 sanı " << c << " ret bar." << endl; // 3
return 0;
}
Túsindirme: `max_element` funkciyası eń úlken elementke kórsetkish (iterator)
qaytaradı, sonıń ushın biz `*it` dep mánisti aldıq. `count` funkciyası bolsa dizimdegı `2` lerdi sanap berdi. Bul STL-diń qúdireti – bir qatar kod penen quramalı isti pitiriw.
3-mısal: Lambda menen shártli islew Kod:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {10, 15, 20, 25, 30};
// Shárt: 20 dan úlkenlerin sanaw
int n = count_if(v.begin(), v.end(), [](int x) {
return x > 20;
});
cout << "20 dan úlkenler: " << n << endl; // 2 (25, 30)
return 0;
}
Túsindirme: Bul jerde biz `count_if` (eger shárt orınlansa sana) funkciyasın qollandıq. Shárt retinde "Lambda funkciyasın" (`[](int x) { return x > 20; }`) berdik. Bul anonim funkciya hárbir element ushın shaqırıladı hám `true` qaytarsa,
sanawshı artadı.
ÁMELIY TAPSÍRMALAR
1. `vector<int>` jaratıp, onı `sort()` penen sortlań.
2. `vector` dı `reverse()` penen keri aylandırıń.
3. `vector` dan eń kishi elementti `min_element()` penen tabıń.
4. `count()` arqalı dizimde 0 sanı neshe ret bar ekenin tabıń.
5. `find()` arqalı 5 sanın izleń, tapsańız "Bar" dep shıǵarıń.
6. `vector` dıń barlıq elementlerine 1 qosıń (cikl menen).
7. `vector` dıń nusqasın (`copy`) basqa vektorǵa alıń.
8. `list<int>` jaratıp, onı da `sort()` penen sortlap kóriń (Dıqqat: `list` tiń óziniń
`sort` metodı bar).
9. `vector` dı kemeyiw tártibinde sortlań (`greater<int>()` qollanıp).
10. `count_if` arqalı massivtegi jup sanlardıń sanın tabıń.
11. `replace()` arqalı barlıq 0 lerdi 1 ge almastırıń.
12. `vector` dan dublikatlardı (qaytalanǵanlardı) óshiriń (`unique` hám `erase`
qollanıp).
13. `vector` dıń barlıq elementleriniń qosındısın `accumulate()` (numeric
kitapxanası) menen tabıń.
14. Eki vektordıń teńligin `equal()` menen tekseriń.
15. `vector<string>` jaratıp, sózlerdi uzınlıǵı boyınsha sortlań (Lambda
qollanıp).
Соседние файлы в папке 2-semestr