420 likes | 656 Views
MAP SINIFI. MAP. C + + da Haritalar değer çiftlerini benzersiz anahtar içeren birleşmeli konteyner olarak sırala r . Haritalar onların anahtarları na göre sıralanır. Map Constructors & Destructors. Haritalar; varsayılan yöntemleri, kopyalar ve tahsis eder. Map operators.
E N D
MAP C + + da Haritalar değer çiftlerini benzersiz anahtar içeren birleşmeli konteyner olarak sıralar. Haritalar onların anahtarlarına göre sıralanır.
Map Constructors & Destructors Haritalar; varsayılan yöntemleri, kopyalar ve tahsis eder.
Map operators Karşılaştırma = harita elemanlarını atamak
int main () { map<char,int> birinci; map<char,int> ikinci; birinci['x']=8; birinci['y']=16; birinci['z']=32; birinci['k']=64; ikinci=birinci; // ikinci 4 oldu birinci=map<char,int>(); // ilk anda bostur cout << "Birincinin uzunlugu: " << int (birinci.size()) << endl; cout << "ikincinin uzunlugu : " << int (ikinci.size()) << endl; return 0; }
Map typedefs Bir harita typedefs
begin • Haritanın başlangıç elemanına dönen bir fonksiyondur.
end • Bir haritanın sadece son elemanını döndüren fonksiyondur.
int main () { map<char,int> mb; map<char,int>::iterator bu; mb['b'] = 100; mb['a'] = 200; mb['c'] = 300; // show content: for ( bu=mb.begin() ; bu != mb.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0; }
clear • Haritadaki tüm unsurlarını kaldırır
int main () { map<char,int> haritam; map<char,int>::iterator it; haritam['x']=100; haritam['y']=200; haritam['z']=300; cout << "haritamin elemanlari:\n"; for ( it=haritam.begin() ; it != haritam.end(); it++ ) cout << (*it).first << " => " << (*it).second << endl; haritam.clear(); cout << "haritamin elemanlari:\n"; for ( it=haritam.begin() ; it != haritam.end(); it++ ) cout << (*it).first << " => " << (*it).second << endl; return 0; }
count • Belirli bir anahtarla eşleşen elemanların sayısını verir
int main () { map<char,int> haritam; char c; haritam ['a']=101; haritam ['c']=202; haritam ['f']=303; for (c='a'; c<'h'; c++) { cout << c; if (haritam.count(c)>0) cout << " haritamin elemanidir.\n"; else cout << " haritamin elemani degildir.\n"; } return 0; }
empty • Harita içeriğinin boş ya da dolu olma durumunu kontrol eden fonksiyondur.
int main () { map<char,int> haritam; haritam['a']=10; haritam['b']=20; haritam['c']=50; while (!haritam.empty()) { cout << haritam.begin()->first << " => "; cout << haritam.begin()->second << endl; haritam.erase(haritam.begin()); } return 0; }
equal_range • Sadece geçmiş son öğeleri ve belirli bir anahtarla eşleşen ilk tekrarlayıcılaradöner
int main () { map<char,int> haritam; pair<map<char,int>::iterator,map<char,int>::iterator> ret; haritam['a']=10; haritam['b']=5; haritam['c']=50; ret = haritam.equal_range('b'); cout << "en alt nokta "; cout << ret.first->first << " => " << ret.first->second << endl; cout << "en ust nokta "; cout << ret.second->first << " => " << ret.second->second << endl; return 0; }
erase • Map sınıfında silme yapmak için erase() fonksiyonu kullanılır.
int main () { map<char,int> haritam; map<char,int>::iterator bu; haritam['a']=10; haritam['b']=20; haritam['c']=30; haritam['d']=40; haritam['e']=50; haritam['f']=60; bu=haritam.find('b'); haritam.erase (bu); // b yi siler haritam.erase ('c'); // c yi siler bu=haritam.find ('e'); haritam.erase ( bu, haritam.end() ); // e yi siler for ( bu=haritam.begin() ; bu != haritam.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0;}
find • İstenilen elemanı bulmak için kullanılan fonksiyondur.
int main () { map<char,int> haritam; map<char,int>::iterator it; haritam['a']=50; haritam['b']=100; haritam['c']=150; haritam['d']=200; it=haritam.find('b'); //bul ve sil satırları haritam.erase (it); haritam.erase (haritam.find('d')); cout << "haritam da kalan elemanlar:" << endl; cout << "a => " << haritam.find('a')->second << endl; cout << "c => " << haritam.find('c')->second << endl; return 0; }
insert • Bir haritaya öğeler eklemek için kullanılır
int main () { map<char,int> haritam; map<char,int>::iterator bu; pair<map<char,int>::iterator,bool> ret; // insert fonksiyonu sürümü (tek parametre) : haritam.insert ( pair<char,int>('a',100) ); haritam.insert ( pair<char,int>('z',200) ); ret=haritam.insert (pair<char,int>('z',500) ); if (ret.second==false) { cout << "eleman z zaten "; cout << " su deger ile var " << ret.first->second <<"\n"<< endl; }
//ikinci insert fonksiyonu sürümü (ipucu konumu ile): bu=haritam.begin(); haritam.insert (bu, pair<char,int>('b',300)); // max etkinlik ekleme haritam.insert (bu, pair<char,int>('c',400)); //max etkinlik yok // Üçüncü insert fonksiyonu sürümü (aralık ekleme): map<char,int> anothermap; anothermap.insert(haritam.begin(),haritam.find('c')); cout << "haritamin icerigi:\n"; for ( bu=haritam.begin() ; bu != haritam.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; cout << "baska bir harita icerigi:\n"; for ( bu=anothermap.begin() ; bu != anothermap.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0; }
key_comp • Tuşları karşılaştırıp döndüren fonksiyondur
int main () { map<char,int> haritam; map<char,int>::key_compare mycomp; map<char,int>::iterator bu; char ust; mycomp = haritam.key_comp(); haritam['a']=100; haritam['b']=200; haritam['c']=300; cout << "haritamin icerigi:\n"; ust=haritam.rbegin()->first; // son elemaın anahtar degeri bu=haritam.begin(); do { cout << (*bu).first << " => " << (*bu).second << endl; } while ( mycomp((*bu++).first, ust) ); cout << endl; return 0;}
lower_bound • find() fonksiyonuna benzer, ancak lower_bound() aranılan elemandan bir önceki değeri verir.
int main () { map<char,int> haritam; map<char,int>::iterator bu,alt,ust; haritam['a']=20; haritam['b']=40; haritam['c']=60; haritam['d']=80; haritam['e']=100; alt=haritam.lower_bound ('b'); // alt nokta b ust=haritam.upper_bound ('d'); // ust nokta d değil haritam.erase(alt,ust); // alt ust silindi for ( bu=haritam.begin() ; bu != haritam.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0; }
max_size • Elemanların azami dönme sayısını tutar
int main () { int i; map<int,int> benim; if (benim.max_size()>1000) { for (i=0; i<1000; i++) benim[i]=0; cout << "ogem 1000 den buyuktur.\n"; } else cout << "ogem 1000den kucuktur.\n"; return 0; }
rbegin • Harita sonuna döndüren bir reverse_iterator
int main () { map<char,int> haritam; map<char,int>::reverse_iterator o; haritam['x'] = 100; haritam['y'] = 200; haritam['z'] = 300; for ( o=haritam.rbegin() ; o != haritam.rend(); o++ ) cout << o->first << " => " << o->second << endl; return 0; }
rend • Harita başına dönen bir reverse_iterator
int main () { map<char,int> haritam; map<char,int>::reverse_iterator rit; haritam['x'] = 100; haritam['y'] = 200; haritam['z'] = 300; for ( rit=haritam.rbegin() ; rit != haritam.rend(); rit++ ) cout << rit->first << " => " << rit->second << endl; return 0; }
size • Harita öğelerinin sayısını verir
int main () { map<char,int> haritam; haritam['a']=101; haritam['b']=202; haritam['c']=30; haritam['d']=101; haritam['e']=232; haritam['f']=345; cout << "haritam.size() : " << (int) haritam.size() << endl; return 0; }
swap • Başka bir harita içeriğini takas eder
int main () { map<char,int> senin; map<char,int> benim; map<char,int>::iterator bu; senin['x']=100; senin['y']=200; benim['a']=11; benim['b']=22; benim['c']=33; senin.swap(benim); cout << "senin elemanlarin:\n"; for ( bu=senin.begin() ; bu != senin.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; cout << "benim elemanlarim:\n"; for ( bu=benim.begin() ; bu != benim.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0;}
upper_bound • find() fonksiyonuna benzer, ancak upper_bound() aranılan elemandan bir sonraki değeri verir.
int main () { map<char,int> haritam; map<char,int>::iterator bu,alt,ust; haritam['a']=20; haritam['b']=40; haritam['c']=60; haritam['d']=80; haritam['e']=100; alt=haritam.lower_bound ('b'); // alt nokta b ust=haritam.upper_bound ('d'); // ust nokta d haritam.erase(alt,ust); // alt ve ust noktaları siler for ( bu=haritam.begin() ; bu != haritam.end(); bu++ ) cout << (*bu).first << " => " << (*bu).second << endl; return 0; }
value_comp • Değerleri karşılaştırır ve döndürür fonksiyonu
int main () { map<char,int> haritam; map<char,int>::iterator bu; pair<char,int> buyuk; haritam['x']=1001; haritam['y']=2002; haritam['z']=3003; cout << "haritamin icerigi:\n"; buyuk=*haritam.rbegin(); bu=haritam.begin(); do { cout << (*bu).first << " => " << (*bu).second << endl; } while ( haritam.value_comp()(*bu++, buyuk) ); return 0; }