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

2-semestr / 4-ameliy_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
195 Кб
Скачать
☆
4-ámeliy jumıs. Konteynerler (Kollekciyalar). Konteyner klaslar,
sızıqlı konteynerler.
Jumıstıń maqseti: C++ STL (Standard Template Library)
kitapxanasındaǵı "Sızıqlı konteynerler" (`vector`, `list`, `deque`) menen
islesiwdi úyreniw. Dinamikalıq massivler hám baylanısqan dizimlerdi jaratıw,
olarǵa element qosıw, óshiriw hám iteratorlar arqalı aylanıp shıǵıw kónlikpelerin qáliplestiriw. Konteynerlerdiń hár qıylı túrleriniń artıqmashılıqları
hám kemshiliklerin (tezlik, yad) ámeliyatta analizlew.
1. `vector`: Dinamikalıq massiv. Aqırına qosıw tez, ortasına qosıw áste.
Indeks penen kiriw (`v[i]`) múmkin.
2. `list`: Eki tárepleme baylanısqan dizim. Ortasına qosıw tez, biraq
indeks penen kiriw múmkin emes (tek iterator).
3. `deque`: Eki tárepleme gezek. Basına hám aqırına qosıw tez.
4. Iterator: Konteyner elementlerine kórsetkish (`*it` - mánisti alıw, `++it`
- keyingisine ótiw).
ÁMELIY BÓLIM:
`vector` hám `list` tiń imkaniyatların salıstıramız. 1-mısal: Vector (Dinamikalıq massiv) Kod:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
// Element qosıw (Aqırına)
v.push_back(10);
v.push_back(20);
v.push_back(30);
// Óshiriw (Aqırınan)
v.pop_back(); // 30 ketedi
// Indeks penen oqıw
cout << "1-element: " << v[0] << endl; // 10
// Iterator menen aylanıp shıǵıw
cout << "Massiv: ";
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << " ";
}
return 0;
}
Túsindirme: `vector` – bul "rezina" massiv. Biz `push_back` etken sayın
ol keńeyedi. `v[0]` dep birinshi elementti oqıdıq. `pop_back()` aqırǵı elementti
(30) óshirdi. `for` cikli iterator (`it`) arqalı bastan-ayaq júrip shıqtı hám `*it` arqalı mánislerin (10, 20) kórsetti.
2-mısal: List (Baylanısqan dizim) Kod:
#include <iostream>
#include <list>
#include <algorithm> // find
using namespace std;
int main() {
list<int> myList = {1, 2, 3};
// Basına hám aqırına qosıw
myList.push_front(0); // {0, 1, 2, 3}
myList.push_back(4); // {0, 1, 2, 3, 4}
// 2 ni tabıw hám onıń aldına 100 qosıw (Insert)
auto it = find(myList.begin(), myList.end(), 2);
if (it != myList.end()) {
myList.insert(it, 100); // {0, 1, 100, 2, 3, 4}
}
// Shıǵarıw (Range-based for)
for (int x : myList) {
cout << x << " ";
}
return 0;
}
Túsindirme: `list` te `push_front` (basına qosıw) júdá tez. Biz `find` arqalı
`2` sanınıń ornın taptıq hám `insert` arqalı onıń aldına `100` qostıq. `vector` da bul jumıs (ortasına qosıw) barlıq elementlerdi jılıstırıwdı talap etetuǵın edi, al `list` te tek siltemeler ózgeredi (tez). Biraq `myList[2]` dep jazıwǵa bolmaydı.
3-mısal: Deque (Eki tárepleme gezek) Kod:
#include <iostream>
#include <deque>
using namespace std;
int main() {
deque<string> d;
d.push_back("A");
d.push_front("B"); // Basına qosıw tez
d.push_back("C"); // {B, A, C}
cout << d[1] << endl; // A (Indeks bar!)
d.pop_front(); // B ketedi
return 0;
}
Túsindirme: `deque` (dek) – bul `vector` hám `list` tiń gibridi. Ol `vector`
sıyaqlı indeks penen (`d[1]`) islese de aladı, hám `list` sıyaqlı basına
(`push_front`) tez qosa aladı.
ÁMELIY TAPSÍRMALAR
1. `vector<int>` jaratıń, 1 den 5 ke shekem sanlardı qosıń hám shıǵarıń.
2. `vector` dan `pop_back()` arqalı aqırǵı 2 elementti óshiriń.
3. `list<string>` jaratıń, 3 adamnıń atın qosıń.
4. `list` tiń basına (`push_front`) "Mugallim" sózin qosıń.
5. `vector` dıń kólemin (`size()`) hám bos ekenin (`empty()`) tekseriń.
6. `vector` dıń `at(index)` metodın qollanıp kóriń (shegaradan shıǵıp ketiw
qátesin tekseriw ushın).
7. `deque` jaratıń hám onıń basına, aqırına element qosıń.
8. `list` ti cikl (iterator) menen aylanıp shıǵıń.
9. `vector<int>` tegi barlıq elementlerdiń qosındısın esaplań.
10. `list<int>` ten 10 sanın izlep (`find`), onı óshiriń (`erase`).
11. `vector` dıń ortasına (`begin() + 2`) element qosıń (`insert`).
12. Eki `vector` dı biriktiriń (birinshisiniń aqırına ekinshisin qosıń).
13. `vector` dı keri tártipte shıǵarıń (`rbegin()` hám `rend()`).
14. `list` ti sortlań (`myList.sort()`).
15. `vector` dan barlıq jup sanlardı óshiriń (iterator qollanıp).
Соседние файлы в папке 2-semestr