Haritalar C++ STL'nin (Standart Şablon Kitaplığı) bir parçasıdır. Haritalar, her anahtarın benzersiz olduğu ve eklenebildiği veya silinebildiği ancak değiştirilemediği, sıralanmış anahtar/değer çiftini saklayan ilişkisel kaplardır. Tuşlarla ilişkili değerler değiştirilebilir.
Örneğin: Çalışan kimliğinin anahtar ve adın değer olduğu bir Çalışan haritası şu şekilde temsil edilebilir:
Anahtarlar | Değerler |
---|---|
101 | Nikita |
102 | Robin |
103 | Derin |
104 | John |
Sözdizimi
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Parametre
anahtar: Haritada depolanacak anahtar veri türü.
tip: Haritada depolanacak değerin veri türü.
karşılaştırmak: Aynı bool türünden iki bağımsız değişkeni alan ve bir değer döndüren bir karşılaştırma sınıfı. Bu bağımsız değişken isteğe bağlıdır ve ikili yüklem less varsayılan değerdir.
tahsis: Ayırıcı nesnenin türü. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değer ayırıcıdır.
fabrika tasarım deseni
Harita oluşturma
Haritalar aşağıdaki ifade kullanılarak kolaylıkla oluşturulabilir:
typedef pair value_type;
Yukarıdaki form, anahtar tipine sahip bir harita oluşturmak için kullanılacaktır Anahtar türü ve türün değeri değer türü. Önemli bir nokta, bir haritanın anahtarının ve karşılık gelen değerlerin her zaman bir çift olarak eklenmesidir; bir haritaya yalnızca anahtarı veya yalnızca bir değeri ekleyemezsiniz.
örnek 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
Çıktı:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Üye İşlevleri
Haritanın tüm üye işlevlerinin listesi aşağıdadır:
İnşaatçı/Yok Edici
Fonksiyonlar | Tanım |
---|---|
inşaatçılar | Harita oluştur |
muhripler | Harita yıkıcı |
operatör= | Haritanın öğelerini başka bir haritaya kopyalayın. |
Yineleyiciler
Fonksiyonlar | Tanım |
---|---|
başlamak | Haritadaki ilk öğeye işaret eden bir yineleyici döndürür. |
cbaşla | Haritadaki ilk öğeye işaret eden bir const yineleyici döndürür. |
son | Geçmiş sonu işaret eden bir yineleyici döndürür. |
bir kaç | Geçmiş sonu işaret eden sabit bir yineleyici döndürür. |
yeniden başla | Sona işaret eden bir ters yineleyici döndürür. |
yapar | Başlangıca işaret eden bir ters yineleyici döndürür. |
başlangıç | Sona işaret eden sabit bir ters yineleyici döndürür. |
inanmak | Başlangıca işaret eden sabit bir ters yineleyici döndürür. |
Kapasite
Fonksiyonlar | Tanım |
---|---|
boş | Harita boşsa true değerini döndürür. |
boyut | Haritadaki öğelerin sayısını döndürür. |
maksimum_boyut | Haritanın maksimum boyutunu döndürür. |
Öğe Erişimi
Fonksiyonlar | Tanım |
---|---|
Şebeke[] | Verilen anahtarla öğeyi alın. |
en | Verilen anahtarla öğeyi alın. |
Değiştiriciler
Fonksiyonlar | Tanım |
---|---|
sokmak | Öğeyi haritaya ekleyin. |
silmek | Haritadaki öğeleri silin. |
takas | Haritanın içeriğini değiştirin. |
temizlemek | Haritanın tüm öğelerini silin. |
konum | Yeni öğeleri oluşturun ve haritaya ekleyin. |
emplace_hint | İpucuyla haritaya yeni öğeler oluşturun ve ekleyin. |
Gözlemciler
Fonksiyonlar | Tanım |
---|---|
anahtar_comp | Anahtar karşılaştırma nesnesinin bir kopyasını döndürün. |
değer_bileşimi | Değer karşılaştırma nesnesinin bir kopyasını döndürün. |
Operasyonlar
Fonksiyonlar | Tanım |
---|---|
bulmak | Verilen anahtara sahip bir öğeyi arayın. |
saymak | Verilen anahtarla eşleşen öğe sayısını alır. |
alt sınır | Bir yineleyiciyi alt sınıra döndürür. |
üst sınır | Bir yineleyiciyi üst sınıra döndürür. |
eşit_aralık | Verilen anahtarla eşleşen öğelerin aralığını döndürür. |
Ayırıcı
Fonksiyonlar | Tanım |
---|---|
get_allocator | Haritayı oluşturmak için kullanılan bir ayırıcı nesnesini döndürür. |
Üye Olmayan Aşırı Yüklenen İşlevler
Fonksiyonlar | Tanım |
---|---|
operatör== | İki haritanın eşit olup olmadığını kontrol eder. |
operatör!= | İki haritanın eşit olup olmadığını kontrol eder. |
operatör< | İlk haritanın diğerlerinden küçük olup olmadığını kontrol eder. |
Şebeke<=< td> | İlk haritanın diğerine eşit veya küçük olup olmadığını kontrol eder. | =<>
operatör> | İlk haritanın diğerinden büyük olup olmadığını kontrol eder. |
operatör>= | İlk haritanın diğerine eşit olup olmadığını kontrol eder. |
takas() | İki haritanın öğesini değiştirir. |