map, multimap, unordered-map lý thuyết cơ bản trong c++
Size: 872.92 KB
Language: none
Added: Sep 20, 2025
Slides: 21 pages
Slide Content
28TECH
Become A Better Developer
4
Leddy
WR
MAP, MULTIMAP,
UNORDERED_MAP
LU
4
4
1 28TECH.COM.VN Ein
28TECH
Become A Bete Developer 1. MAP:
Map là container giúp luu cdc phan ttr theo cap key, value (khóa - gia tri). MÓi
gia tri cúa key sé anh xa sang möt value tuong ting. So véi Set thi Map tham
chi con manh mé va giái quyét duoc nhiéu van dé hon.
Cac key trong map lá nhüng Các cap phan tütrongmap Môi phan tú trong map thuc
gia tri riéng biét, khöng có 2 duoc sáp xép theo thú ty Chât lá mot pair, vói first luu
key náo có giá tri gióng nhau, táng dán cúa key. key vá second luu value.
value thi có thé trüng nhau.
28TECH.COM.VN Ein
28TECH
Become A Better Developer
<key_data_type, value_data_type> map_name;
Cac bai toán lien quan tdi tan suát
cúa các phan tu.
Cac bai toán cán tim kiém, thém, xóa
mót cach nhanh chong.
Dung map thay cho các bai toän su dung
mang dánh dau khi di liêu khóng dep.
28TECH nas ar im
Become A Better Developer MOT SO HAM TRONG MAP
<bits/stdc++.h>
Them möt phan tú vao trong map: N
« Dung ham insert mp.insert({1,
2 2 2 mp.insert({2,
« Dung ct phäp mp.insert({1,
néu key chua tón tai trong map, me mee
hoác sé thay dôi value néu key ”
SERIE D O mp = {(1,2), (2,5), (3,10)}
28TECH.COM.UN 5
28TECH ua m re
Become A Better Developer MOT SO HAM TRONG MAP
int main(){
map<int, int> mp;
mp.insert({1, 2}); //Thém cap (1, 2)
> Pores ae A mp.insert({2, 4}); //Thém cap (2, 4)
Ham size: tra vé sö lugng phan mp.insert({1, 3}); //Thém cap (1, 3)
trong map. ee //nhung khóng thém dugc
mp[3] = 10; // thém cap (3, 10)
mp[2] = 5; //Thay dôi cap (2, 4)
//thanh (2, 5)
cout << mp.size() << endl;
OUTPUT: 3
y
28TECH.COMN Sc}
28TECH
Become A Better Developer
kiém tra map róng, néu
rong tra vé true, nguroc lai tra vé false.
//Thay bang auto cho tién
for(auto it = mp.begin(); it .end(); ++it){
(*it).first << ' ' << (*it).second << endl;
28TECH.COMN Sc}
28TECH nas ar im
Become A Better Developer MOT SO HAM TRONG MAP
Ham find: Tim kiém su xuát hién cúa möt key nao
dé trong map. Dó phúc tap là O(logN).
Ham nay tra vé iterator tói cap phan tú néu nó tim
thay, nguoc lai nó tra vé iterator end() cúa map khi
gia tri key tim kiém khóng tón tai trong map. eee
<bits/stdc++.h>
main(){
map mp;
mp.insert({1, 2}); //Thém cap (1,
mp.insert({2, 4}); //Thém cap (2,
mp.insert({3, 6}); //Thém cap (3,
auto it = mp.find(1);
if(it == mp.end()){
cout << "NOT FOUND KEY\n";
}
elsef
cout << (*it).first << ' "
(*it).second << endl;
}
y
OUTPUT: 12
28TECH.COM.UN 5
28TECH
Become A Better Developer
Ham nay dung dé dém só lán xuat
hién cúa 1 key nao dé trong map. Dôi vói map ham
count tra vé O hoác 1, có thé str dung ham nay dé
thay cho ham find. D6 phúc tap O(logN). ee
TA BE int {
Xóa mét phan tu khôi map voi dó map<int, int> mp;
phúc tap lá O(logN), truóc khi str dung ham erase mp.insert({1, 2});
hay dam bdo phan tú ban can xóa ton tai trong map me ere ae
neu khöng sé xay ra löi runtime error. ee a);
for(auto it : mp){
cout << it.first <<‘ '
it.second << endl;
}
}
28TECH nas ar im
Become A Better Developer MOT SO HAM TRONG MAP
Xóa thóng qua iterator
<bits/stdc++.h>
main(){
> = = y > ae en map- mp;
Ham erase: Xóa möt phan tú khöi map vói dé mp.insert({1, 2}); //T
phúc tap la O(logN), truóc khi str dung ham erase mp-insert({2) 4})3\//7
hay dam bao phan tú ban can xéa tón tai trong map ee a fn
néu khóng sé xay ra lói runtime error. e... if(it I= pena) ?
mp.erase(it);
for(auto it : mp){
cout << it. first. << "
it.second << endl;