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

2-semestr / 6-ameliy_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
198 Кб
Скачать
☆
6-ámeliy jumıs. Associativ konteynerler (set, map, multiset, multimap).
Jumıstıń maqseti: C++ STL-degi "Associativ konteynerler" (`set`, `map`)
menen islewdi úyreniw. Maǵlıwmatlardı unikal giltler boyınsha saqlaw, avtomat
túrde sortlaw hám tez izlew (O(log N)) imkaniyatlarınan paydalanıw. "Gilt-Mánis" (Key-Value) strukturaların (`map`) qollanıp, sózlikler hám jiyilik kestelerin
jaratıw. Dublikatlarǵa ruqsat beriwshi `multiset` hám `multimap` konteynerleriniń
ózgesheliklerin túsiniw.
Teoriyalıq bólim:
2. `map`: Gilt (Key) hám Mánis (Value) jubı. Gilt boyınsha sortlanadı.
`Key` unikal bolıwı shárt.
3. `multiset` / `multimap`: Dublikatlarǵa (qaytalanıwǵa) ruqsat beredi.
4. Binar Terek: Bul konteynerler terek strukturasında saqlanadı, sonıń
ushın izlew júdá tez.
ÁMELIY BÓLIM:
Unikal sanlar hám sózlikler menen islesemiz. 1-mısal: Set (Unikal sanlar) Kod:
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s;
// Qosıw
s.insert(10);
s.insert(5);
s.insert(10); // Qosılmaydı (dublikat)
s.insert(20);
// Kóriw (Sortlanǵan: 5, 10, 20)
for (int x : s) cout << x << " ";
cout << endl;
// Izlew
if (s.find(5) != s.end()) {
cout << "5 bar." << endl;
}
// Óshiriw
s.erase(5);
return 0;
}
Túsindirme: `set` – bul matematikalıq jıynaq. Biz oǵan 10, 5, 10, 20 sanların
berdik. Ol 5, 10, 20 dep sortlap saqladı hám ekinshi 10 dı alıp tasladı. `find` metodı
elementti tez tabadı. `erase` elementti óshiredi.
2-mısal: Map (Telefon kitabi) Kod:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
map<string, int> phonebook;
// Qosıw (Gilt = Atı, Mánis = Nomer)
phonebook["Azamat"] = 12345;
phonebook["Guli"] = 67890;
phonebook["Azamat"] = 11111; // Jańalanadı
// Kóriw
cout << "Azamat: " << phonebook["Azamat"] << endl;
// Barlıǵın shıǵarıw
for (auto pair : phonebook) {
cout << pair.first << ": " << pair.second << endl;
}
return 0;
}
Túsindirme: `map` – bul sózlik. Biz "Azamat" giltine 12345 nomerin
baylanıstırdıq. Keyin "Azamat"qa 11111 jazǵanımızda, eski nomer óshirildi
(sebebi gilt unikal). Cikl arqalı aylanǵanda, `pair.first` gilt (atı), `pair.second` mánis (nomer) boladı.
3-mısal: Multiset (Sanaw) Kod:
#include <iostream>
#include <set>
using namespace std;
int main() {
multiset<int> ms = {1, 2, 1, 3, 1};
cout << "1 sanı " << ms.count(1) << " ret bar." << endl; // 3
// Birewin óshiriw
auto it = ms.find(1);
if (it != ms.end()) ms.erase(it); // Tek bir 1 óshiriledi
for (int x : ms) cout << x << " "; // 1 1 2 3
return 0;
}
Túsindirme: `multiset` dublikatlarǵa ruqsat beredi. Bizde úsh dana 1 bar.
`count(1)` funkciyası 3 ti qaytardı. `erase` metodına `iterator` bersek, ol tek sol nusqanı óshiredi. Eger `ms.erase(1)` desek, barlıq 1 ler óshirilgen bolatuǵın edi.
ÁMELIY TAPSÍRMALAR
1. `set<string>` jaratıń, 3 adamnıń atın qosıń hám shıǵarıń (alfavit boyınsha
shıǵadı).
2. `set` ten bir ataması bar elementti óshiriń.
3. `set` te "Azamat" atı bar ekenin `count()` menen tekseriń.
4. `map<string, string>` (Sózlik: Inglis-Qaraqalpaq) jaratıń. "Apple" -> "Alma"
qosıń.
5. `map` tan gilt boyınsha mánisti ekranda kórsetiń.
6. `multiset<int>` jaratıń hám birdey sanlardı qosıń.
7. `map` tıń kólemin (`size`) hám bos ekenin (`empty`) tekseriń.
8. `set` ti keri tártipte shıǵarıń (`rbegin`, `rend`).
9. `map` qollanıp, teksttegi hárbir sózdiń neshe ret ushırasqanın sanaytuǵın
programma jazıń ("Alma al" -> Alma:1, al:1).
10. `vector` daǵı dublikatlardı `set` ke kóshiriw arqalı joq etiń.
11. `multimap` qollanıp, bir studentke bir neshe baha qoyıń ("Azamat": 5,
"Azamat": 4). Barlıq bahaların shıǵarıń.
12. `map` ta bar giltke jańa mánis jazıń, joq bolsa qosıń (Bul `[]` operatorı
menen avtomat boladı, tekserip kóriń).
13. Eki `set` tiń birikpesin (Union) tabıń (eki setti bir jańa setke qosıń).
14. Eki `set` tiń kesilispesin (Intersection) tabıń (eki sette de bar elementler).
15. `map` tı mánisi (Value) boyınsha sortlań (Bunıń ushın map elementlerin
`vector<pair>` ǵa kóshirip, `sort` qollanıw kerek).
Соседние файлы в папке 2-semestr